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

时间:2018-03-08 14:02:58

标签: sql-server geometry spatial-query

我是空间数据处理的小伙子,我有两个问题。

我通过SHP2SQL可执行文件将一个Shapefile上传到SQL Server中的表,并通过ogr2ogr.exe CLI将其上传到另一个表中。即使数据来自相同的shapefile,2个不同的表中的几何数据也有差异,如下所示。 ' ogr_geometry'已通过ogr2ogr CLI上传。并且' 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 个答案:

答案 0 :(得分:0)

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

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

然后,使用ogr2​​ogr.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

希望这有助于其他人。