【问题标题】:Converting Geometry to Longitude/Latitude in SQL Server在 SQL Server 中将几何图形转换为经度/纬度
【发布时间】: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


【解决方案1】:

我解决它的方法是使用 QGIS 将 EPSG 3347 转换为 EPSG 4326。您可以点击下面提到的链接了解如何操作。

之后,我确保安装 QGIS 2.10 版本和更高版本一样,ogr2ogr.exe 中存在一个不允许转换的错误。

然后,使用 ogr2ogr.exe 的命令行界面,我将 shapefile 数据转换为 Long/Lat 并加载到 Local SQL DB 表中。

然后,我在本地数据库中创建了一个空白表“Spatial_Data”。

C:\Program Files\QGIS Pisa\bin>ogr2ogr -f MSSQLSpatial "MSSQL:server=RBANSAL\SQL EXPRESS;database=MyDB;trusted_connection=yes" C:\Users\rbansal\Desktop\ShapeFile\MyShpfile.shp -nln "Spatial_Data" -progress

希望这对其他人有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-03
    • 1970-01-01
    • 2014-05-01
    • 2014-08-11
    • 1970-01-01
    • 1970-01-01
    • 2021-10-19
    • 1970-01-01
    相关资源
    最近更新 更多