代码之家  ›  专栏  ›  技术社区  ›  ravsun

在SQL Server中将几何图形转换为经度/纬度

  •  0
  • ravsun  · 技术社区  · 7 年前

    我对空间数据处理很在行,我有两个问题。

    我通过SHP2SQL可执行文件将一个Shapefile上传到SQL Server中的一个表中,并通过ogr2ogr将其上传到另一个表中。exe CLI。尽管数据来自同一个shapefile,但如下所示,两个不同表中的几何图形数据存在差异。已通过ogr2ogr CLI上载“ogr\U几何体”。“geom”已通过shp2sql应用程序上传。

    Uploaded through ogr2ogr CLI

    Uploaded through Shp2sql application

    如果您注意到开始处的数据不同,以及“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
    

    请告知。

    1 回复  |  直到 7 年前
        1
  •  0
  •   ravsun    7 年前

    我解决这个问题的方法是使用QGIS将EPSG 3347转换为EPSG 4326。您可以按照下面提到的链接查看如何做到这一点。

    之后,我确保安装QGIS 2.10版本,因为在更高版本中,ogr2ogr中有一个bug。不允许转换的exe。

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

    然后,我在本地DB中创建了一个空白表“Spatial\u 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
    

    希望这对其他人有帮助。