public static dynamic GetGeometries(string GeometryString) { JObject o = JObject.Parse(GeometryString); dynamic inputgeometrylist; string geometrytype = (string)o["geometryType"]; JArray geometries = (JArray)o["geometries"]; switch (geometrytype) { case "GeometryPoint": case "esriGeometryPoint": inputgeometrylist = new List<DotSpatial.Topology.Point>(); for (int i = 0; i < geometries.Count; i++) { var p = geometries[i].ToObject<GISServer.Core.Geometry.Point>(); inputgeometrylist.Add(new DotSpatial.Topology.Point(p.X, p.Y)); } return inputgeometrylist; case "GeometryMultipoint": case "esriGeometryMultipoint": inputgeometrylist = new List<DotSpatial.Topology.MultiPoint>(); for (int i = 0; i < geometries.Count; i++) { var coorlist = new DotSpatial.Topology.CoordinateList(); var mp = geometries[i].ToObject<GISServer.Core.Geometry.MultiPoint>(); for (int j = 0; j < mp.Points.Count; j++) { coorlist.Add(new DotSpatial.Topology.Coordinate(mp.Points[j].X, mp.Points[j].Y)); } inputgeometrylist.Add(new DotSpatial.Topology.MultiPoint(coorlist)); } return inputgeometrylist; case "GeometryPolyline": case "esriGeometryPolyline": inputgeometrylist = new List<DotSpatial.Topology.MultiLineString>(); for (int i = 0; i < geometries.Count; i++) { var ml = new DotSpatial.Topology.MultiLineString(); var lineStrings = new List<DotSpatial.Topology.LineString>(); var mp = geometries[i].ToObject<GISServer.Core.Geometry.Polyline>(); for (int j = 0; j < mp.Paths.Count; j++) { var coorlist = new DotSpatial.Topology.CoordinateList(); for (int k = 0; k < mp.Paths[j].Count; k++) { coorlist.Add(new DotSpatial.Topology.Coordinate(mp.Paths[j][k].X, mp.Paths[j][k].Y)); } lineStrings.Add(new DotSpatial.Topology.LineString(coorlist)); } inputgeometrylist.Add(new DotSpatial.Topology.MultiLineString(lineStrings)); } return inputgeometrylist; case "GeometryPolygon": case "esriGeometryPolygon": inputgeometrylist = new List<DotSpatial.Topology.MultiPolygon>(); for (int i = 0; i < geometries.Count; i++) { var ml = new DotSpatial.Topology.MultiLineString(); var shellstring = new List<DotSpatial.Topology.Polygon>(); var mp = geometries[i].ToObject<GISServer.Core.Geometry.Polygon>(); for (int j = 0; j < mp.Rings.Count; j++) { var coorlist = new DotSpatial.Topology.CoordinateList(); for (int k = 0; k < mp.Rings[j].Count; k++) { coorlist.Add(new DotSpatial.Topology.Coordinate(mp.Rings[j][k].X, mp.Rings[j][k].Y)); } shellstring.Add(new DotSpatial.Topology.Polygon(new DotSpatial.Topology.LinearRing(coorlist))); } inputgeometrylist.Add(new DotSpatial.Topology.MultiPolygon(shellstring.ToArray())); } return inputgeometrylist; case "GeometryEnvelope": case "esriGeometryEnvelope": inputgeometrylist = new List<DotSpatial.Topology.Envelope>(); for (int i = 0; i < geometries.Count; i++) { var p = geometries[i].ToObject<GISServer.Core.Geometry.Envelope>(); inputgeometrylist.Add(new DotSpatial.Topology.Envelope(p.XMin, p.XMax, p.YMin, p.YMax)); } return inputgeometrylist; default: break; } return null; }
public static dynamic GetGeometries(string GeometryString) { JObject o = JObject.Parse(GeometryString); dynamic inputgeometrylist; string geometrytype = (string)o["geometryType"]; JArray geometries = (JArray)o["geometries"]; switch (geometrytype) { case "GeometryPoint": case "esriGeometryPoint": inputgeometrylist = new List <DotSpatial.Topology.Point>(); for (int i = 0; i < geometries.Count; i++) { var p = geometries[i].ToObject <GISServer.Core.Geometry.Point>(); inputgeometrylist.Add(new DotSpatial.Topology.Point(p.X, p.Y)); } return(inputgeometrylist); case "GeometryMultipoint": case "esriGeometryMultipoint": inputgeometrylist = new List <DotSpatial.Topology.MultiPoint>(); for (int i = 0; i < geometries.Count; i++) { var coorlist = new DotSpatial.Topology.CoordinateList(); var mp = geometries[i].ToObject <GISServer.Core.Geometry.MultiPoint>(); for (int j = 0; j < mp.Points.Count; j++) { coorlist.Add(new DotSpatial.Topology.Coordinate(mp.Points[j].X, mp.Points[j].Y)); } inputgeometrylist.Add(new DotSpatial.Topology.MultiPoint(coorlist)); } return(inputgeometrylist); case "GeometryPolyline": case "esriGeometryPolyline": inputgeometrylist = new List <DotSpatial.Topology.MultiLineString>(); for (int i = 0; i < geometries.Count; i++) { var ml = new DotSpatial.Topology.MultiLineString(); var lineStrings = new List <DotSpatial.Topology.LineString>(); var mp = geometries[i].ToObject <GISServer.Core.Geometry.Polyline>(); for (int j = 0; j < mp.Paths.Count; j++) { var coorlist = new DotSpatial.Topology.CoordinateList(); for (int k = 0; k < mp.Paths[j].Count; k++) { coorlist.Add(new DotSpatial.Topology.Coordinate(mp.Paths[j][k].X, mp.Paths[j][k].Y)); } lineStrings.Add(new DotSpatial.Topology.LineString(coorlist)); } inputgeometrylist.Add(new DotSpatial.Topology.MultiLineString(lineStrings)); } return(inputgeometrylist); case "GeometryPolygon": case "esriGeometryPolygon": inputgeometrylist = new List <DotSpatial.Topology.MultiPolygon>(); for (int i = 0; i < geometries.Count; i++) { var ml = new DotSpatial.Topology.MultiLineString(); var shellstring = new List <DotSpatial.Topology.Polygon>(); var mp = geometries[i].ToObject <GISServer.Core.Geometry.Polygon>(); for (int j = 0; j < mp.Rings.Count; j++) { var coorlist = new DotSpatial.Topology.CoordinateList(); for (int k = 0; k < mp.Rings[j].Count; k++) { coorlist.Add(new DotSpatial.Topology.Coordinate(mp.Rings[j][k].X, mp.Rings[j][k].Y)); } shellstring.Add(new DotSpatial.Topology.Polygon(new DotSpatial.Topology.LinearRing(coorlist))); } inputgeometrylist.Add(new DotSpatial.Topology.MultiPolygon(shellstring.ToArray())); } return(inputgeometrylist); case "GeometryEnvelope": case "esriGeometryEnvelope": inputgeometrylist = new List <DotSpatial.Topology.Envelope>(); for (int i = 0; i < geometries.Count; i++) { var p = geometries[i].ToObject <GISServer.Core.Geometry.Envelope>(); inputgeometrylist.Add(new DotSpatial.Topology.Envelope(p.XMin, p.XMax, p.YMin, p.YMax)); } return(inputgeometrylist); default: break; } return(null); }