【发布时间】:2018-03-15 22:25:30
【问题描述】:
我是空间数据处理的菜鸟,我有 2 个问题。
我通过 SHP2SQL 可执行文件将 Shapefile 上传到 SQL Server 中的表,并通过 ogr2ogr.exe CLI 将 Shapefile 上传到不同的表中。即使数据来自同一个 shapefile,2 个不同表中的几何数据也存在差异,如下所示。 'ogr_geometry' 已通过 ogr2ogr CLI 上传。并且 'geom' 已经通过 shp2sql 应用程序上传。
如果您可能注意到开头的数据和“41”之后的数据不同,则字符串开始不同。哪一个是正确的?我从链接“prj2epsg.org/search”检查了prj文件并得到了这个结果
3347 - NAD83_Statistics_Canada_Lambert
我的第二个问题是如何根据单独表格中的一组纬度和经度检查几何数据?我正在使用下面提到的查询,但它没有返回任何内容。
ogr_geometry.STContains(geometry::Parse('POINT(' + CAST(g.geocode_longitude AS VARCHAR(20)) + ' ' + CAST(g.geocode_latitude AS VARCHAR(20)) + ')'))=1
请指教。
【问题讨论】:
-
几何表示平面上的抽象二维几何,以任意单位表示。系统没有记录这些单位是毫米、米还是英里。也不是您可能认为原点所在的位置。如果您想谈论经纬度,您应该使用代表地球上位置的
geography数据类型。 -
@Damien_The_Unbeliever,我已按照您的建议进行了尝试,但失败了。我已经相应地更新了问题。请看一下并提出建议。
-
如果我尝试通过 Shape2sql 应用程序上传它,我会收到警告消息。 “数据似乎超出了地理类型支持的有效范围。继续吗?”单击是后,我收到另一个警告:“形状投影数据声称它包含投影数据,地理类型不支持。继续?”我认为我处理的数据不适合转换为地理类型。
-
EPSG 3347 是投影坐标系。如果你加载它但告诉数据库它是 long/lat,你会得到错误(比如越界错误)。如果您真的想要它在 long/lat 中,那么只需在加载时对其进行转换:
ogr2ogr -f ... xxx.shp .... -s_srs EPSG:3347 -t_srs EPSG:4326 -
顺便说一句,我删除了
oracle-spatial标签,因为这与 Oracle 无关。
标签: sql-server geometry spatial-query