Suite

Relation de frontière OpenStreetMap perdue lors de l'exportation vers spatialite avec ogr2ogr?

Relation de frontière OpenStreetMap perdue lors de l'exportation vers spatialite avec ogr2ogr?


Je travaille actuellement en cartographie pour une province de Papouasie-Nouvelle-Guinée. Dans OpenStreetMap (OSM), j'ai récemment mis à jour et ajouté de nouvelles relations pour les limites de admin_level=5 et admin_level=6, qui n'étaient pas présentes auparavant.

Les relations que j'analyse sont les suivantes :5,259,918et5,259,919. Vous pouvez les consulter ici :

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

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

J'extrait les données OSM avechttp://extrait.bbbike.orgau format PBF, puis je l'exporte avec ogr2ogr en utilisant une commande similaire à la suivante

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

Le .db résultant est ensuite utilisé dans QGIS pour créer la carte. j'utilise une coutume osmconf.ini pour extraire les balises dont j'ai besoin pour ma carte.

Les relations ont été créées en utilisant à la fois des lignes inexistantes (bordures où il n'y a pas d'autre entité, créées uniquement à cette fin) et des lignes existantes (telles que des rivières, qui font partie de la relation). Ces derniers n'ont pas de balises spécifiques pour limite=administratif ou alors admin_level=6 car ceux-ci sont inclus dans la relation (et selon ma meilleure compréhension, il n'est pas nécessaire de les mettre deux fois).

Cependant, lorsque j'ouvre le fichier résultant, seules les lignes auxquelles les balises sont explicitement ajoutées seront affichées. Celles comme les rivières ou les routes, qui font partie des relations mais qu'elles n'ont ni frontière ou alors admin_level tag, ne sera répertorié dans aucune des tables résultantes (other_relations, lignes, points, multilinestrings ou multipolygons). Ils sont perdus dans le processus. Une solution rapide et sale serait d'ajouter les balises manquantes aux rivières / routes, mais je me demande s'il existe un autre moyen plus propre de résoudre le problème.


Êtes-vous sûr que les nouvelles données sont déjà dans vos fichiers source ? Peut-être que vous pourriez télécharger avec overpass api, qui est toujours à jour.

Les lignes existantes n'obtiendront aucune étiquette de limite de la relation dont elles sont membres, mais l'ensemble de la relation est créé en tant que polygone distinct avec un ID de relation négatif.


Cela ne répondrait probablement pas vraiment à votre réponse mais (et si votre fichier source contient déjà vos modifications, comme suggéré par une réponse précédente), je suppose que ogr2ogr peut parfois avoir des résultats mitigés lorsqu'il s'agit de polygones ou de relations si les données OSM ne ne respecte pas strictement le schéma requis par ogr2ogr. Vous avez probablement déjà jeté un oeil sur cette question et sur le plongeur OGR pour OSM ? De plus, ce contributeur OSM fait référence à certaines difficultés avec l'extraction des limites.

Mais peut-être pouvez-vous être plus précis quand vous dites que certaines de ces voies se perdent dans le processus, que voulez-vous dire exactement ? Utilisez-vous une requête SQL dans la ligne de commande ogr2ogr ? Ou voulez-vous dire que la façon dont vous parlez (par exemple une rivière qui fait partie d'une relation décrivant une frontière administrative) est effectivement présente mais sans aucune référence à son rôle dans la relation ? Ou qu'il n'y a pas de polygone créé alors qu'il aurait dû l'être de cette manière ?