public static SMGeometry ToSharpMapGeometry(SqlGeometry geometry, Factory factory) { if (geometry == null) { return(null); } if (geometry.IsNull) { return(null); } var fact = factory ?? Services.CreateGeometryFactory((int)geometry.STSrid); if (geometry.STIsEmpty()) { return(fact.CreateGeometryCollection(null)); } if (!geometry.STIsValid()) { geometry = geometry.MakeValid(); } OpenGisGeometryType geometryType = (OpenGisGeometryType)Enum.Parse(typeof(OpenGisGeometryType), (string)geometry.STGeometryType()); switch (geometryType) { case OpenGisGeometryType.Point: return(SqlGeometryToSharpMapPoint(geometry, fact)); case OpenGisGeometryType.LineString: return(SqlGeometryToSharpMapLineString(geometry, fact)); case OpenGisGeometryType.Polygon: return(SqlGeometryToSharpMapPolygon(geometry, fact)); case OpenGisGeometryType.MultiPoint: return(SqlGeometryToSharpMapMultiPoint(geometry, fact)); case OpenGisGeometryType.MultiLineString: return(SqlGeometryToSharpMapMultiLineString(geometry, fact)); case OpenGisGeometryType.MultiPolygon: return(SqlGeometryToSharpMapMultiPolygon(geometry, fact)); case OpenGisGeometryType.GeometryCollection: return(SqlGeometryToSharpMapGeometryCollection(geometry, fact)); } throw new ArgumentException(string.Format("Cannot convert SqlServer '{0}' to Sharpmap.Geometry", geometry.STGeometryType()), "geometry"); }
public void SetSrid(int srid) { _srid = srid; _factory = _geometryServices.CreateGeometryFactory(_srid); }