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