public void GetElements() { Console.Write("Begin Get Elemtents Test..."); DbReader his = new DbReader(); IArgument[] arguments = new IArgument[1]; arguments[0] = new Argument("DbPath", @"..\data\cuahsi-his\demo.db", true, "Database"); his.Initialize(arguments); for (int i = 0; i < his.OutputExchangeItemCount; ++i) { IElementSet es = his.GetOutputExchangeItem(i).ElementSet; for (int j = 0; j < es.ElementCount; ++j) { Console.WriteLine(es.GetXCoordinate(j, 0).ToString() + ", " + es.GetYCoordinate(j, 0).ToString()); } } Console.WriteLine("model description: " + his.ModelDescription); }
public void GetElements() { Console.Write("Begin Get Elemtents Test..."); HydroLink his = new HydroLink(); IArgument[] arguments = new IArgument[1]; arguments[0] = new Argument("WaterMLdb", @"..\..\..\Data\db", true, "WaterML Database"); his.Initialize(arguments); for (int i = 0; i < his.OutputExchangeItemCount; ++i) { IElementSet es = his.GetOutputExchangeItem(i).ElementSet; for (int j = 0; j < es.ElementCount; ++j) { Console.WriteLine(es.GetXCoordinate(j, 0).ToString() + ", " + es.GetYCoordinate(j, 0).ToString()); } } Console.WriteLine("model description: " + his.ModelDescription); }
/// <summary> /// Copy constructor /// </summary> /// <param name="source">The element set to copy</param> public ElementSet(IElementSet source) { _description = source.Description; _id = source.ID; _elementType = source.ElementType; _spatialReference = source.SpatialReference; for (int i = 0; i < source.ElementCount; i++) { Element element = new Element(source.GetElementID(i)); for (int j = 0; j < source.GetVertexCount(i); j++) { double x = source.GetXCoordinate(i, j); double y = source.GetYCoordinate(i, j); double z = source.GetZCoordinate(i, j); element.AddVertex(new Vertex(x, y, z)); } _elements.Add(element); } }
/// <summary> /// Copy constructor /// </summary> /// <param name="source">The element set to copy</param> public ElementSet(IElementSet source) { _description = source.Description; _id = source.ID; _elementType = source.ElementType; _spatialReference = source.SpatialReference; for (int i=0;i<source.ElementCount;i++) { Element element = new Element(source.GetElementID(i)); for (int j=0;j<source.GetVertexCount(i);j++) { double x = source.GetXCoordinate(i,j); double y = source.GetYCoordinate(i,j); double z = source.GetZCoordinate(i,j); element.AddVertex(new Vertex(x,y,z)); } _elements.Add(element); } }
/// <summary> /// Static method that validates an object with an IElementSet interface. The method /// raises an Exception in case IElementSet does not describe a valid ElementSet. /// The checks made are: /// <p>ElementType: Check</p> /// <p>XYPoint: Only one vertex in each element.</p> /// <p>XYPolyline: At least two vertices in each element.</p> /// <p> All line segments in each element has length > 0</p> /// <p>XYPolygon: At least three vertices in each element.</p> /// <p> Area of each element is larger than 0</p> /// <p> All line segments in each element has length > 0</p> /// <p> No line segments within an element crosses.</p> /// </summary> /// /// <param name="elementSet">Object that implement the IElementSet interface</param> /// /// <returns> /// The method has no return value. /// </returns> public static void CheckElementSet(IElementSet elementSet) { try { if (elementSet.ElementType == ElementType.XYPoint) { for (int i = 0; i < elementSet.ElementCount; i++) { try { if (elementSet.GetVertexCount(i) != 1) { throw new System.Exception("Number of vertices in point element is different from 1."); } } catch (System.Exception e) { throw new System.Exception("ElementID = " + elementSet.GetElementID(i), e); } } } else if (elementSet.ElementType == ElementType.XYPolyLine) { for (int i = 0; i < elementSet.ElementCount; i++) { try { XYPolyline xypolyline = new XYPolyline(); for (int j = 0; j < elementSet.GetVertexCount(i); j++) { XYPoint xypoint = new XYPoint(elementSet.GetXCoordinate(i, j), elementSet.GetYCoordinate(i, j)); xypolyline.Points.Add(xypoint); } xypolyline.Validate(); } catch (System.Exception e) { throw new System.Exception("ElementID = " + elementSet.GetElementID(i), e); } } } else if (elementSet.ElementType == ElementType.XYPolygon) { for (int i = 0; i < elementSet.ElementCount; i++) { try { XYPolygon xypolygon = new XYPolygon(); for (int j = 0; j < elementSet.GetVertexCount(i); j++) { XYPoint xypoint = new XYPoint(elementSet.GetXCoordinate(i, j), elementSet.GetYCoordinate(i, j)); xypolygon.Points.Add(xypoint); } xypolygon.Validate(); } catch (System.Exception e) { throw new System.Exception("ElementID = " + elementSet.GetElementID(i), e); } } } } catch (System.Exception e) { throw new System.Exception("ElementSet with ID = " + elementSet.ID + " is invalid", e); } }
private XYPolygon CreateXYPolygon(IElementSet elementSet, int index) { if (elementSet.ElementType != ElementType.XYPolygon) { throw new System.Exception("Cannot create XYPolyline"); } XYPolygon xyPolygon = new XYPolygon(); for (int i = 0; i < elementSet.GetVertexCount(index); i++) { xyPolygon.Points.Add(new XYPoint(elementSet.GetXCoordinate(index,i), elementSet.GetYCoordinate(index,i))); } return xyPolygon; }
private XYPolyline CreateXYPolyline(IElementSet elementSet, int index) { if (!(elementSet.ElementType == ElementType.XYPolyLine || elementSet.ElementType == ElementType.XYLine)) { throw new System.Exception("Cannot create XYPolyline"); } XYPolyline xyPolyline = new XYPolyline(); for (int i = 0; i < elementSet.GetVertexCount(index); i++) { xyPolyline.Points.Add(new XYPoint(elementSet.GetXCoordinate(index,i), elementSet.GetYCoordinate(index,i))); } return xyPolyline; }
private XYPoint CreateXYPoint(IElementSet elementSet, int index) { if (elementSet.ElementType != ElementType.XYPoint) { throw new System.Exception("Cannot create XYPoint"); } XYPoint xyPoint = new XYPoint(); xyPoint.X = elementSet.GetXCoordinate(index,0); xyPoint.Y = elementSet.GetYCoordinate(index,0); return xyPoint; }
/// <summary> /// Static method that validates an object with an IElementSet interface. The method /// raises an Exception in case IElementSet does not describe a valid ElementSet. /// The checks made are: /// <p>ElementType: Check</p> /// <p>XYPoint: Only one vertex in each element.</p> /// <p>XYPolyline: At least two vertices in each element.</p> /// <p> All line segments in each element has length > 0</p> /// <p>XYPolygon: At least three vertices in each element.</p> /// <p> Area of each element is larger than 0</p> /// <p> All line segments in each element has length > 0</p> /// <p> No line segments within an element crosses.</p> /// </summary> /// /// <param name="elementSet">Object that implement the IElementSet interface</param> /// /// <returns> /// The method has no return value. /// </returns> public static void CheckElementSet(IElementSet elementSet) { try { if(elementSet.ElementType == ElementType.XYPoint) { for (int i = 0; i < elementSet.ElementCount; i++) { try { if(elementSet.GetVertexCount(i) != 1) { throw new System.Exception("Number of vertices in point element is different from 1."); } } catch (System.Exception e) { throw new System.Exception("ElementID = "+elementSet.GetElementID(i),e); } } } else if(elementSet.ElementType == ElementType.XYPolyLine) { for (int i = 0; i < elementSet.ElementCount; i++) { try { XYPolyline xypolyline = new XYPolyline(); for (int j = 0; j < elementSet.GetVertexCount(i); j++) { XYPoint xypoint = new XYPoint(elementSet.GetXCoordinate(i,j),elementSet.GetYCoordinate(i,j)); xypolyline.Points.Add(xypoint); } xypolyline.Validate(); } catch (System.Exception e) { throw new System.Exception("ElementID = "+elementSet.GetElementID(i),e); } } } else if(elementSet.ElementType == ElementType.XYPolygon) { for (int i = 0; i < elementSet.ElementCount; i++) { try { XYPolygon xypolygon = new XYPolygon(); for (int j = 0; j < elementSet.GetVertexCount(i); j++) { XYPoint xypoint = new XYPoint(elementSet.GetXCoordinate(i,j),elementSet.GetYCoordinate(i,j)); xypolygon.Points.Add(xypoint); } xypolygon.Validate(); } catch (System.Exception e) { throw new System.Exception("ElementID = "+elementSet.GetElementID(i),e); } } } } catch (System.Exception e) { throw new System.Exception("ElementSet with ID = "+elementSet.ID+" is invalid",e); } }
private void panelViewer_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e) { // write x and y coordinates double x = ((e.X - _margin) / _scale) + _minX; double y = _minY - (e.Y + _margin - panelViewer.ClientSize.Height) / _scale; if (_scale != double.MaxValue) { this.label3.Text = "(" + x.ToString("F3") + ", " + y.ToString("F3") + ")"; } else { this.label3.Text = ""; } // write elementSet ID and element index this.label4.Text = " "; this.label7.Text = " "; this.label8.Text = " "; this.label9.Text = " "; this.label10.Text = " "; this.label11.Text = " "; for (int elementSetNumber = 0; elementSetNumber < this._elementSets.Count; elementSetNumber++) { string elementID = " "; int elementIndex = -9; double distance = 10e30; IElementSet elementSet = (IElementSet)_elementSets[elementSetNumber]; if (elementSetNumber == 0) { this.label7.Text = elementSet.ID.Substring(0, Math.Min(20, elementSet.ID.Length)); } if (elementSetNumber == 1) { this.label9.Text = elementSet.ID.Substring(0, Math.Min(20, elementSet.ID.Length)); } for (int index = 0; index < elementSet.ElementCount; index++) { if (((IElementSet)_elementSets[elementSetNumber]).ElementType == ElementType.XYPolygon) { XYPolygon xyPolygon = new XYPolygon(); for (int i = 0; i < elementSet.GetVertexCount(index); i++) { xyPolygon.Points.Add(new XYPoint(elementSet.GetXCoordinate(index, i), elementSet.GetYCoordinate(index, i))); } if (XYGeometryTools.IsPointInPolygon(x, y, xyPolygon)) { elementID = elementSet.GetElementID(index); elementIndex = index; } } if (((IElementSet)_elementSets[elementSetNumber]).ElementType == ElementType.XYPolyLine) { XYPolyline xyPolyline = new XYPolyline(); for (int i = 0; i < elementSet.GetVertexCount(index); i++) { xyPolyline.Points.Add(new XYPoint(elementSet.GetXCoordinate(index, i), elementSet.GetYCoordinate(index, i))); } double xx = XYGeometryTools.CalculatePolylineToPointDistance(xyPolyline, new XYPoint(x, y)); if (xx < distance) { distance = xx; if (xx < 0.3 * xyPolyline.GetLength()) { elementIndex = index; elementID = elementSet.GetElementID(index); } } } if (elementSetNumber == 0 && elementIndex >= 0) { this.label4.Text = "Index: " + elementIndex.ToString(); this.label8.Text = "ID: " + elementID.Substring(0, Math.Min(17, elementID.Length)); } if (elementSetNumber == 1 && elementIndex >= 0) { this.label10.Text = "Index: " + elementIndex.ToString(); this.label11.Text = "ID: " + elementID.Substring(0, Math.Min(17, elementID.Length)); } } } }