1

我在将 SQL 表转换为 GeoJSON 时遇到了一些问题。

这是我的连接字符串:

ogr2ogr -f "GeoJSON" "test.geojson" "MSSQL:server=(LocalDb)\v11.0;database=SpatialDataExamples;tables=test;trusted_connection=yes;Integrated Security=true;DRIVER=SQL Server Native Client 11.0;GeometryType=wkb;" -sql "SELECT  * FROM test WHERE ID=1"

如果我使用表参数,并且没有 SQL,geojson 会正确导出。如果我指定一些 sql 来过滤结果,几何图形会在导出的文件中以二进制形式返回。

我正在尝试将 SQL 多边形表导出到可以在 DocumentDB 中使用的单个文档。

直接导出 shapefile 会生成 geojson,其坐标位于右手方向,而不是 DocumentDB 要求的左手方向

有什么建议么?

4

1 回答 1

1

所以,这就是我所做的,并且奏效了。

  1. 使用 Shape2SQL 将 shapefile 上传到 SQL Server
  2. 使用以下方法校正(以逆时针方式定位外环)几何:

    UPDATE tablename SET geom = geom.MakeValid()
    UPDATE tablename SET geom = geom.STUnion(geom.STStartPoint());
    
  3. 使用 ogr2ogr 将整个图层输出到 GeoJSON

  4. 在 QGIS 中添加为图层
  5. 使用以下 python 脚本循环遍历每个功能,选择并导出到 geojson 文件

    import qgis.core 
    import qgis.utils
    i = qgis.utils.iface
    l = i.activeLayer()
    j=0 
    for feat in l.getFeatures():  
    l.setSelectedFeatures([feat.id()]) 
    qgis.core.QgsVectorFileWriter.writeAsVectorFormat(l,'c:/ConvertedShapefiles/shape'+str(j)+'.json', 'utf-8', l.crs(), 'GeoJson', True)
    l.removeSelection()
    j += 1 
    
于 2016-05-17T16:39:41.137 回答