예제 #1
0
        //public static ShapefileFormat.EsriType.IShape ParseToSqlGeometry(this IGeoJsonGeometry geometry, bool isLongitudeFirst = true, int srid = 0)
        //{

        //}

        #region SqlGeometry

        public static SqlGeometry AsSqlGeometry(this IGeoJsonGeometry geometry, bool isLongitudeFirst = true, int srid = 0)
        {
            var type = geometry.GeometryType;

            if (geometry.IsNullOrEmpty())
            {
                return(SqlSpatialHelper.CreateEmptySqlGeometry(type, srid));
            }

            SqlGeometryBuilder builder = new SqlGeometryBuilder();

            builder.SetSrid(srid);

            switch (type)
            {
            case GeometryType.Point:
                AddPoint(builder, (GeoJsonPoint)geometry, isLongitudeFirst);
                break;

            case GeometryType.MultiPoint:
                AddMultiPoint(builder, (GeoJsonMultiPoint)geometry, isLongitudeFirst);
                break;

            case GeometryType.LineString:
                AddLineString(builder, (GeoJsonLineString)geometry, isLongitudeFirst);
                break;

            case GeometryType.MultiLineString:
                AddMultiLineString(builder, (GeoJsonMultiLineString)geometry, isLongitudeFirst);
                break;

            case GeometryType.MultiPolygon:
                AddMultiPolygon(builder, (GeoJsonMultiPolygon)geometry, isLongitudeFirst);
                break;

            case GeometryType.Polygon:
                AddPolygon(builder, (GeoJsonPolygon)geometry, isLongitudeFirst);
                break;


            case GeometryType.GeometryCollection:
            case GeometryType.CircularString:
            case GeometryType.CompoundCurve:
            case GeometryType.CurvePolygon:
            default:
                throw new NotImplementedException();
            }

            return(builder.ConstructedGeometry.MakeValid());
        }
        public static IEsriShape AsEsriShape(this IGeoJsonGeometry geometry, bool isLongitudeFirst = true, int srid = 0, Func <IPoint, IPoint> mapFunction = null)
        {
            //var type = geometry.GeometryType;
            //if (geometry.IsNullOrEmpty())
            //{
            //    return SqlSpatialHelper.CreateEmptySqlGeometry(type, srid);
            //}

            if (geometry.IsNullOrEmpty())
            {
                return(null);
            }

            var type = geometry.GeometryType;

            switch (type)
            {
            case GeometryType.GeometryCollection:
            case GeometryType.CircularString:
            case GeometryType.CompoundCurve:
            case GeometryType.CurvePolygon:
            default:
                throw new NotImplementedException();

            case GeometryType.Point:
                return(ToEsriPoint((GeoJsonPoint)geometry, isLongitudeFirst, srid, mapFunction));

            case GeometryType.MultiPoint:
                return(ToEsriMultiPoint((GeoJsonMultiPoint)geometry, isLongitudeFirst, srid, mapFunction));

            case GeometryType.LineString:
                return(ToEsriPolyline((GeoJsonLineString)geometry, isLongitudeFirst, srid, mapFunction));

            case GeometryType.MultiLineString:
                return(ToEsriPolyline((GeoJsonMultiLineString)geometry, isLongitudeFirst, srid, mapFunction));

            case GeometryType.Polygon:
                return(ToEsriPolygon((GeoJsonPolygon)geometry, isLongitudeFirst, srid, mapFunction));

            case GeometryType.MultiPolygon:
                return(ToEsriPolygon((GeoJsonMultiPolygon)geometry, isLongitudeFirst, srid, mapFunction));
            }
        }