2016-05-17 4 views
1

У меня возникли проблемы с преобразованием таблицы SQL в GeoJSON.OGR SQL Server для 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.

Экспорт шейп непосредственно производит в формате GeoJSON с координатами в правой ориентации стороны, в отличие от левой стороны в соответствии с требованиями 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