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 ответ
Итак, это то, что я сделал, и это сработало.
- Загрузить шейп-файл на SQL Server, используя Shape2SQL
Исправьте (сориентируйте внешнее кольцо против часовой стрелки) геометрию, используя:
UPDATE tablename SET geom = geom.MakeValid() UPDATE tablename SET geom = geom.STUnion(geom.STStartPoint());
Используйте ogr2ogr для вывода всего слоя в GeoJSON
- Добавить как слой в QGIS
Используйте следующий скрипт 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