Преобразование GeoJSON в Shapefile с использованием ogr2ogr?

24

У меня есть файл GeoJson, который я хочу преобразовать в ESRI Shapefile, используя ogr2ogr в FWTools.

Я пытался с помощью

ogr2ogr -F "ESRI Shapefile" filename.shp geojsonfile.json OGRGeoJSON

Я получил вывод

ОШИБКА 6: Невозможно создать поля типа StringList в слоях шейп-файлов. ОШИБКА 1: Попытка записать геометрию не полигона (POINT) для ввода шейп-файла. ОШИБКА 1: Прекращение перевода преждевременно после неудачного перевода слоя OGRGeoJSON

Входные данные GeoJSON представлены в стандартном формате geojson.

содержимое geojson как {поделиться я взял только часть из массива функций}

{"id":1223,
"properties":{"name":"3","level":2},
"map_version":11,"type":"FeatureCollection","x_id":1234,"obj_type":"LevelGeometry",
"features":[

{
"my_area":[131.40093253528894,33.58879853190332,6.515867411008615,3.490549810987222,-0.6237271428108215],
"id":1984791,
"location":{"type":"Point","coordinates":[131.4009325,33.5887985]},
"properties":{"display_name":"xyz"},
"type":"Feature",
"geometry":{"type":"Polygon","coordinates":[[[131.4009508,33.5888314],[131.4008895,33.5887946],[131.4009148,33.5887653],[131.4009761,33.5888020],[131.4009508,33.5888314]]]},
"obj_type":"Geometry"
}

]
}
sidd.k
источник
2
Добро пожаловать на форум SE.GIS. Посмотрите похожий вопрос gis.stackexchange.com/questions/13762/…
Sunil
Спасибо за приветствие :) Я прошел эту ссылку перед публикацией. Я не хочу использовать FME, хочу сделать это с помощью FWTools для Linux. Ранее я преобразовал wkt в shapefile, что было вполне удовлетворительным, но теперь у меня есть те же данные в формате geoJSON вместо wkt. и мне нужно иметь файл shp, пока я пытаюсь это сделать, я получаю ошибки;
sidd.k
Я голосую, чтобы сохранить его открытым, так как связанный вопрос не отвечает на этот вопрос.
Девдатта Тенгше
Преобразование ваших тестовых данных отлично работает для меня с версиями 1.9.2 и 1.10 ogr2ogr. Шейп-файл с 1 полигоном создается без ошибок. Возможно, ваш «FWTools for linux» слишком старый. Что ogr2ogr --versionговорит?
Герман
1
Ключ --version еще не существовал в версии ogr2ogr, которая распространялась вместе с FWTools 2.0.6. Я также предполагаю, что он еще не поддерживал GeoJSON. 2.0.6 действительно старая (~ 2006 г.), есть ли причина, по которой вы не можете использовать современную версию GDAL?
DavidF

Ответы:

28

Вы должны принудительно настроить тип геометрии SHP (поскольку тип геометрии GeoJSON Geometry Collection не поддерживается в SHP) и использовать -skipfailuresпараметр:

ogr2ogr -nlt POINT -skipfailures points.shp geojsonfile.json OGRGeoJSON    
ogr2ogr -nlt LINESTRING -skipfailures linestrings.shp geojsonfile.json OGRGeoJSON
ogr2ogr -nlt POLYGON -skipfailures polygons.shp geojsonfile.json OGRGeoJSON

(Протестировано с GDAL 1.10.0, выпущено 2013/04/24)

Антонио Фальчано
источник
2
Чтобы получить максимальную отдачу от Geojson, я бы посоветовал запустить то же самое для точек (и линий, если они есть в Geojson). Таким образом, вы получаете два или три шейп-файла из одного Geojson.
AndreJ
@ AndreJoost Я согласен с вами, это был только пример. Я обновляю ответ, учитывая ваше предложение. Спасибо.
Антонио Фальчано,
2
не решение, но мне повезло, используя онлайн-инструмент, созданный с помощью ogr2ogr: ogre.adc4gis.com
JasonBK