Пример #1
0
        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;
        }
Пример #2
0
        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);
        }