Более

Граничное отношение OpenStreetMap потеряно при экспорте в Spaceite с помощью ogr2ogr?


В настоящее время я работаю над картой провинции Папуа-Новая Гвинея. В OpenStreetMap (OSM) я недавно обновил и добавил новые отношения для границ admin_level = 5 и admin_level = 6, которых раньше не было.

Я анализирую следующие отношения:5,259,918и5,259,919. Вы можете проверить их здесь:

http://ra.osmsurround.org/analyzeRelation?relationId=5259918

http://ra.osmsurround.org/analyzeRelation?relationId=5259919

Я извлекаю данные OSM с помощьюhttp://extract.bbbike.orgв формате PBF, а затем я экспортирую его с помощью ogr2ogr, используя команду, подобную следующей

ogr2ogr -f "SQLite" -dsco SPATIALITE = ДА png-full-test.db planet_xxx.osm.pbf

Полученный .db позже используется в QGIS для создания карты. Я использую обычай osmconf.ini чтобы извлечь теги, которые мне нужны для моей карты.

Отношения были созданы с использованием как несуществующих линий (границ, где нет другого объекта, созданных только для этой цели), так и существующих линий (например, рек, которые являются частью отношения). У последних нет специальных тегов для граница = административная или admin_level = 6 поскольку они включены в отношение (и, насколько я понимаю, нет необходимости ставить их дважды).

Однако, когда я открываю получившийся файл, будут показаны только строки с явно добавленными тегами. Такие, как реки или дороги, которые являются частью отношений, но у них нет ни того, ни другого. граница или admin_level тег, не будет указан ни в одной из результирующих таблиц (другие_отношения, линии, точки, мультистроки или мультиполигоны). Они теряются в процессе. Быстрое и грязное решение - добавить недостающие теги к рекам / дорогам, но мне интересно, есть ли другой более чистый способ решить эту проблему.


Вы уверены, что новые данные уже есть в ваших исходных файлах? Возможно, вы могли бы загрузить с помощью overpass api, который всегда актуален.

Существующие линии не получат никаких граничных тегов из отношения, в которое они входят, но все отношение создается как отдельный многоугольник с отрицательным идентификатором отношения.


Вероятно, он не отреагирует на ваш ответ, но (и если ваш исходный файл уже содержит ваши изменения, как было предложено в предыдущем ответе), я предполагаю, что ogr2ogr иногда может давать смешанные результаты при работе с многоугольниками или отношениями, если данные OSM не Не строго соблюдаю схему, требуемую ogr2ogr. Вы, наверное, уже знакомы с этим вопросом и с дайвером OGR для OSM? Также этот участник OSM ссылается на некоторые трудности с извлечением границ.

Но, может быть, вы сможете быть более точными, когда скажете, что некоторые из этих способов теряются в процессе, что вы именно имеете в виду? Вы используете какой-то SQL-запрос в командной строке ogr2ogr? Или вы имеете в виду, что то, о чем вы говорите (например, река, которая является частью отношения, описывающего административную границу), на самом деле присутствует, но без какой-либо ссылки на его роль в отношениях? Или что не существует многоугольника, который должен был быть создан таким образом?


Смотреть видео: Extracting Data from OpenStreetMap using QGIS u0026 QuickOSM (October 2021).