コード例 #1
0
        private static SqlGeometry CreateDefault(EsriShapeType esriType, int srid)
        {
            switch (esriType)
            {
            case EsriShapeType.EsriPoint:
            case EsriShapeType.EsriPointM:
            case EsriShapeType.EsriPointZ:
                return(SqlSpatialHelper.CreateEmptyPoint(srid));

            case EsriShapeType.EsriMultiPoint:
            case EsriShapeType.EsriMultiPointM:
            case EsriShapeType.EsriMultiPointZ:
                return(SqlSpatialHelper.CreateEmptyMultipoint(srid));

            case EsriShapeType.EsriPolyLine:
            case EsriShapeType.EsriPolyLineM:
            case EsriShapeType.EsriPolyLineZ:
                return(SqlSpatialHelper.CreateEmptyLineString(srid));

            case EsriShapeType.EsriPolygon:
            case EsriShapeType.EsriPolygonM:
            case EsriShapeType.EsriPolygonZ:
                return(SqlSpatialHelper.CreateEmptyPolygon(srid));

            case EsriShapeType.NullShape:
            case EsriShapeType.EsriMultiPatch:
            default:
                return(SqlGeometry.Null);
            }
        }
コード例 #2
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());
        }