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); } }
//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()); }