public static XYExtent GetExtent(XYLine line) { XYExtent res = new XYExtent(); if (line.P1.X < line.P2.X) { res.XMin = line.P1.X; res.XMax = line.P2.X; } else { res.XMin = line.P2.X; res.XMax = line.P1.X; } if (line.P1.Y < line.P2.Y) { res.YMin = line.P1.Y; res.YMax = line.P2.Y; } else { res.YMin = line.P2.Y; res.YMax = line.P1.Y; } return(res); }
public void Equals() { XYPoint p1 = new XYPoint(2,3); XYPoint p2 = new XYPoint(2,3); XYPoint p3 = new XYPoint(2,-3); XYLine l1 = new XYLine(2,3,3,4); Assert.AreEqual(true, p1.Equals(p1),"Test1"); Assert.AreEqual(true, p1.Equals(p2),"Test2"); Assert.AreEqual(false, p1.Equals(p3),"Test3"); Assert.AreEqual(false, p1.Equals(l1),"Test4"); }
public void Equals() { XYLine l1 = new XYLine(0, 3, 3, 0); XYLine l2 = new XYLine(0, 3, 3, 0); XYLine l3 = new XYLine(3, 3, 3, 0); XYPolyline pl1 = new XYPolyline(); pl1.Points.Add(new XYPoint(0, 3)); pl1.Points.Add(new XYPoint(3, 0)); Assert.AreEqual(true, l1.Equals(l1), "Test1"); Assert.AreEqual(true, l1.Equals(l2), "Test2"); Assert.AreEqual(false, l1.Equals(l3), "Test3"); Assert.AreEqual(false, l1.Equals(pl1), "Test4"); }
public void ConstructionTest() { XYLine xyLine1 = new XYLine(1, 2, 3, 4); Assert.AreEqual((double)1, xyLine1.P1.X); Assert.AreEqual((double)2, xyLine1.P1.Y); Assert.AreEqual((double)3, xyLine1.P2.X); Assert.AreEqual((double)4, xyLine1.P2.Y); XYLine xyLine2 = new XYLine(xyLine1); Assert.AreEqual(xyLine1.P1.X, xyLine2.P1.X); Assert.AreEqual(xyLine1.P1.Y, xyLine2.P1.Y); Assert.AreEqual(xyLine1.P2.X, xyLine2.P2.X); Assert.AreEqual(xyLine1.P2.Y, xyLine2.P2.Y); XYLine xyLine3 = new XYLine(new XYPoint(1, 2), new XYPoint(3, 4)); Assert.AreEqual((double)1, xyLine3.P1.X); Assert.AreEqual((double)2, xyLine3.P1.Y); Assert.AreEqual((double)3, xyLine3.P2.X); Assert.AreEqual((double)4, xyLine3.P2.Y); }
public void Write(GeoRefData geodata) { double[] Xs = null; double[] Ys = null; ShapeLib.ShapeType type = ShapeLib.ShapeType.NullShape; if (geodata.Geometry is IXYPoint) { IXYPoint p = (IXYPoint)geodata.Geometry; type = ShapeLib.ShapeType.Point; Xs = new double[] { p.X }; Ys = new double[] { p.Y }; } else if (geodata.Geometry.GetType().Equals(typeof(XYPolyline))) { XYPolyline p = (XYPolyline)geodata.Geometry; type = ShapeLib.ShapeType.PolyLine; int npoints = p.Points.Count; Xs = new double[npoints]; Ys = new double[npoints]; for (int i = 0; i < npoints; i++) { Xs[i] = p.Points[i].X; Ys[i] = p.Points[i].Y; } } else if (geodata.Geometry.GetType().Equals(typeof(XYLine))) { XYLine p = (XYLine)geodata.Geometry; type = ShapeLib.ShapeType.PolyLine; int npoints = 2; Xs = new double[] { p.P1.X, p.P2.X }; Ys = new double[] { p.P1.Y, p.P2.Y };; } else if (geodata.Geometry.GetType().Equals(typeof(XYPolygon))) { XYPolygon p = (XYPolygon)geodata.Geometry; type = ShapeLib.ShapeType.Polygon; int npoints = p.Points.Count; Xs = new double[npoints]; Ys = new double[npoints]; p.Points.Reverse(); for (int i = 0; i < npoints; i++) { Xs[i] = p.Points[i].X; Ys[i] = p.Points[i].Y; } p.Points.Reverse(); } else if (geodata.Geometry.GetType().Equals(typeof(MultiPartPolygon))) { MultiPartPolygon p = (MultiPartPolygon)geodata.Geometry; type = ShapeLib.ShapeType.Polygon; int npoints = p.Polygons.Sum(pol => pol.Points.Count); foreach (var poly in p.Polygons) { poly.Points.Reverse(); } Xs = new double[npoints]; Ys = new double[npoints]; int i = 0; foreach (var point in p.Polygons.SelectMany(pol => pol.Points)) { Xs[i] = point.X; Ys[i] = point.Y; i++; } foreach (var poly in p.Polygons) { poly.Points.Reverse(); } } if (_shapePointer == IntPtr.Zero) { _shapePointer = ShapeLib.SHPCreate(_fileName, type); } if (_shapePointer == IntPtr.Zero) { throw new Exception("Could not create: " + Path.GetFullPath(_fileName) + "\nMake sure directory exists."); } IntPtr obj; if (geodata.Geometry.GetType().Equals(typeof(MultiPartPolygon))) { MultiPartPolygon p = (MultiPartPolygon)geodata.Geometry; int[] partstarts = new int[p.Polygons.Count]; partstarts[0] = 0; ShapeLib.PartType[] partype = new ShapeLib.PartType[p.Polygons.Count]; for (int i = 0; i < partype.Count(); i++) { partype[i] = ShapeLib.PartType.Ring; } for (int i = 1; i < partstarts.Count(); i++) { partstarts[i] = partstarts[i - 1] + p.Polygons[i - 1].Points.Count; } obj = ShapeLib.SHPCreateObject(type, -1, partstarts.Count(), partstarts, partype, Xs.Count(), Xs, Ys, null, null); } else { obj = ShapeLib.SHPCreateSimpleObject(type, Xs.Count(), Xs, Ys, null); } ShapeLib.SHPWriteObject(_shapePointer, -1, obj); ShapeLib.SHPDestroyObject(obj); _dbf.WriteData(geodata.Data); NoOfEntries++; }
public static bool AIsPointInLineInterior(XYPoint point, XYLine line) { return(IsPointInLineInterior(point, line)); }
public static bool AIntersectionPoint(XYLine lineA, XYLine lineB, ref XYPoint intersectionPoint) { return(IntersectionPoint(lineA, lineB, ref intersectionPoint)); }
public static double ACalculateSharedLength(XYLine lineA, XYLine lineB) { return(CalculateSharedLength(lineA, lineB)); }
public static double ACalculateLineToPointDistance(XYLine line, XYPoint point) { return(CalculateLineToPointDistance(line, point)); }
public static double ACalculateLengthOfLineInsidePolygon(XYLine line, XYPolygon polygon) { return(CalculateLengthOfLineInsidePolygon(line, polygon)); }