我在将多边形从Geometry
转换为Geography
时遇到了一些问题。
我找到了以下文章并采取了建议的步骤,但我仍然无法将所有实例转换为有效的geography
个对象。
联盟起点以确保正确的方向
blogs.msdn.com/b/edkatibah/archive/2008/08/19/working-with-invalid-data-and-the-sql-server-2008-geography-data-type-part-1b.aspx
减少多边形
blogs.msdn.com/b/edkatibah/archive/2009/06/05/working-with-invalid-data-and-the-sql-server-2008-geography-data-type-part-2.aspx
缓冲液和负缓冲液
http://www.beginningspatial.com/fixing_invalid_geography_data
减少后删除集合中的点数 http://alastaira.wordpress.com/2012/03/02/cleaning-up-artefacts-created-by-reduce/
到目前为止,我的流程如下。
使用来自www.sharpgis.net/page/SQL-Server-2008-Spatial-Tools.aspx
的Morten Nielsen优秀的Shape2Sql工具将形状文件导入SQL Server Developer Edition(64位)
我必须将形状文件导入为geometry
,因为我收到有关无效geography
值的错误。
然后我尝试按照下面的SQL脚本创建geography
。
drop table [MapData].[dbo].[World_SeasSplitGeog]
SELECT
[IDX]
,[OBJECTID]
,[NAME]
,[ID]
,[Gazetteer_]
,[Shape_Leng]
,[Shape_Le_1]
,[Shape_Area]
,[ORIG_FID]
,dbo.RemoveArtefacts(GEOGRAPHY::STGeomFromWKB(shape.STUnion(shape.STStartPoint()).STBuffer(0.00001).STBuffer(-0.00001).Reduce(0.000001).STAsBinary(),4326).MakeValid()).MakeValid() as [Shape]
INTO
[MapData].[dbo].[World_SeasSplitGeog]
FROM
[MapData].[dbo].[World_SeasSplit]
但问题是并非所有几何都转换为有效的地理位置