OGR SQL Server для GeoJSON

У меня возникли проблемы с преобразованием таблицы 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, геойсон будет экспортирован правильно. Если я указываю некоторые sql для фильтрации результатов, геометрия возвращается в двоичном виде в экспортированном файле.

Я пытаюсь экспортировать таблицу многоугольника SQL в отдельные документы, которые я могу использовать в DocumentDB.

Экспорт шейп-файлов напрямую создает геойсон с координатами в правой ориентации, а не в левой, как того требует DocumentDB

Какие-либо предложения?

1 ответ

Итак, это то, что я сделал, и это сработало.

  1. Загрузить шейп-файл на SQL Server, используя Shape2SQL
  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 
    
Другие вопросы по тегам