[TestCategoryAttribute("Geometry"), TestMethod] //TestCategoryAttribute("RuleManager"), public void TestMTPolygonToShortWKT2D() { TLineString ls1 = new TLineString(new List <MyPoint>() { new MyPoint(0, 0), new MyPoint(1, 0), new MyPoint(1, 1), new MyPoint(0, 1) }); TLineString ls2 = new TLineString(new List <MyPoint>() { new MyPoint(0.25, 0.25), new MyPoint(0.75, 0.25), new MyPoint(0.75, 0.75), new MyPoint(0.25, 0.75) }); TPolygon poly = new TPolygon(new List <TLineString>() { ls1, ls2 }); string test1 = poly.ToShortWKT2D(); string test2 = poly.ToWKT2D(); string tp = poly.GetType().ToString(); Assert.IsTrue(true, "good"); }
[TestMethod] public void CreateTLineString() { List <MyPoint> nCoords = new List <MyPoint>(); nCoords.Add(new MyPoint(1, 1, 1)); nCoords.Add(new MyPoint(2, 2, 2)); nCoords.Add(new MyPoint(3, 3, 3)); nCoords.Add(new MyPoint(4, 4, 4)); TLineString nLS = new TLineString(nCoords); Assert.IsTrue(true, "good"); }
private LineString GetKml(TLineString line) { var(xys, _) = ReprojectGeometry(line); var kml = new LineString(); var cc = new CoordinateCollection(); for (var i = 0; i < line.Coords.Count; i++) { cc.Add(new Vector(xys[i * 2 + 1], xys[i * 2])); } kml.Coordinates = cc; return(kml); }
[TestCategoryAttribute("Geometry"), TestMethod] //TestCategoryAttribute("RuleManager"), public void TestTLineStringToShortWKT2D() { TLineString ls = new TLineString(new List <MyPoint>() { new MyPoint(11.111, 22.222), new MyPoint(33.333, 44.444), new MyPoint(55.555, 66.666) }); string test1 = ls.ToShortWKT2D(); string test2 = ls.ToWKT2D(); string test3 = ls.RingToShortWKT2D(); string test4 = ls.RingToWKT2D(); Assert.IsTrue(true, "good"); }
[TestCategoryAttribute("Geometry"), TestMethod] //TestCategoryAttribute("RuleManager"), public void TestGeometryType() { var np = new TPoint(0, 0); string tp = np.GetType().ToString(); var nl = new TLineString(new List <MyPoint>() { new MyPoint(11.111, 22.222), new MyPoint(33.333, 44.444), new MyPoint(55.555, 66.666) }); string tl = nl.GetType().ToString(); Assert.IsTrue(true, "good"); }
/// <summary>Получить кольцо</summary> /// <param name="ring"></param> /// <param name="projection"></param> /// <returns></returns> public static LinearRing GetRingKml(this TLineString ring, ProjectionInfo projection) { if (projection == null) { return(null); } var xys = ring.GetXYArray(); var zs = ring.GetZArray(); Reproject.ReprojectPoints(xys, zs, projection, Wgs1984, 0, ring.Coords.Count); var kml = new LinearRing(); var cc = new CoordinateCollection(); for (var i = 0; i < ring.Coords.Count; i++) { cc.Add(new Vector(xys[i * 2 + 1], xys[i * 2])); } kml.Coordinates = cc; return(kml); }
/// <summary>Получить линию (не реализовано)</summary> /// <param name="line"></param> /// <param name="projection"></param> /// <returns></returns> public static LineString GetKml(this TLineString line, ProjectionInfo projection) { return(null); }
private List <List <Vertex> > GetParts(TGeometry geom) { List <List <Vertex> > res = new List <List <Vertex> >(); List <Vertex> plist; switch (geom.GetGeometryType()) { case GeometryType.Point: TPoint p = geom as TPoint; res.Add(new List <Vertex>() { new Vertex(p.Coord.X, p.Coord.Y) }); break; case GeometryType.LineString: TLineString ls = geom as TLineString; plist = new List <Vertex>(); foreach (MyPoint np in ls.Coords) { plist.Add(new Vertex(np.X, np.Y)); } res.Add(plist); break; case GeometryType.Polygon: TPolygon poly = geom as TPolygon; foreach (TLineString ring in poly.Rings) { plist = new List <Vertex>(); foreach (MyPoint np in ring.Coords) { plist.Add(new Vertex(np.X, np.Y)); } res.Add(plist); } break; case GeometryType.MultiPolygon: TMultiPolygon mpoly = geom as TMultiPolygon; TPolygon spoly; foreach (TGeometry sg in mpoly.Geometries) { spoly = sg as TPolygon; foreach (TLineString ring in spoly.Rings) { plist = new List <Vertex>(); foreach (MyPoint np in ring.Coords) { plist.Add(new Vertex(np.X, np.Y)); } res.Add(plist); } } break; case GeometryType.No: break; case GeometryType.GeometryCollection: break; default: throw new ArgumentOutOfRangeException(); } return(res); }