Conflit (fusion) de données de fichiers de formes privées avec des données OSM

11

Contexte

Téléchargez les données OSM de l'Alberta depuis Geofabrik et exécutez-les sur un serveur Linux privé à l'aide de PostgreSQL 9.1, PostGIS 2.0, Mapnik 2.1.0, osm2pgsql, Apache 2, mod_tile, renderd et OpenLayers:

Les données ont été importées osm2pgsqlcomme suit:

osm2pgsql -W -K -S /usr/local/share/osm2pgsql/default.style -d osm alberta.osm.bz2

Problème

Les données OSM pour l'Alberta sont incomplètes. On m'a donné un ensemble de fichiers de formes qui améliorent les données OSM:

City.dbf, City.prj, City.sbn, City.sbx, City.shp, City.shp.xml, City.shx

Plus des fichiers de formes supplémentaires pour les villages, les zones urbaines, les limites des districts municipaux, etc. J'ai réussi à importer les fichiers de formes dans PostgreSQL en utilisant un plugin pgAdmin . Le City.prjfichier décrit sa projection comme suit:

GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]]

Les données du fichier de formes et les données d'OpenStreetMap (OSM) ont chacune leur propre base de données, mais je crois que je veux importer les données du fichier de formes dans la base de données OSM. (Il s'agit d'un serveur privé et d'une copie locale des données OSM; les données du fichier de formes ne peuvent pas être légalement partagées.)

Mise à jour # 1

Pour être clair, les fichiers de formes ne contiennent pas de routes: uniquement les limites des municipalités (qui ne font certainement pas partie des données OSM), les villes (dont certaines font partie des données OSM) et les limites des villes pour les grandes villes (dont certaines pourraient conflit avec les données OSM).

Question

Comment fusionner les données du fichier de formes avec les données OSM afin que les nouvelles villes apparaissent sur la carte?

Remarque: Ma principale préoccupation est de résoudre les données en double (par exemple, Edmonton est répertorié dans OSM et dans les fichiers de formes fournis).

Liens connexes

Je vous remercie!

Dave Jarvis
la source
Chargez vos fichiers de formes dans des postgis à l'aide des balises osm - wiki.openstreetmap.org/wiki/Canadian_tagging_guidelines#Naming puis actualisez votre serveur de tuiles devrait charger toutes les nouvelles fonctionnalités dans des données de style osm.
Mapperz

Réponses:

5

introduction

Cela nécessitera probablement une quantité importante de travail manuel pour détecter et supprimer les données dupliquées. Lorsque vous détectez et résolvez les données en double; vous souhaiterez que les deux sources soient au même format géographique: fichier de formes, bases de données PostGIS ou données OSM.

Workflow

Le flux de travail suivant est basé sur le fait d'avoir les deux sources de données en tant qu'OSM avant de fusionner et de résoudre les données en double.

Il existe quelques options pour convertir les données en OSM:

UNE]

  1. Convertissez les données du fichier de formes en OSM comme vous le souhaitez. Les versions d'ogr2ogr publiées en 2013 ou version ultérieure (version 1.10 ou ultérieure, IIRC) peuvent également convertir SHP en OSM. Il y a aussi, ogr2osmcomme vous l'aviez noté: il existe quelques versions différentes d'ogr2osm, peu importe celle que vous utilisez - je préfère celle de pnorman , c'est la plus à jour. Quoi qu'il en soit, assurez-vous que les fichiers de traduction sont compatibles avec la version d'ogr2osm que vous utilisez (par souci de simplicité, ceux auxquels je suis lié doivent être compatibles avec la version d'ogr2osm). Voir ici comme exemples de fichiers de traduction compatibles avec l'ogr2osm de pnorman.

Assurez-vous que le fichier de traduction est complet avec toutes les informations que vous souhaitez dans votre fichier de formes. Le fichier de traduction convertira vos types et attributs du fichier de formes en ce que OSM appelle des balises , qui se composent de clés et de valeurs.

1a. exécutez ogr2osm.

  1. Ouvrez josm , téléchargez le plugin de conflation

  2. Vos données gov sont maintenant un fichier osm. Ouvrir josm, Fichier> ouvrir Vos données sont là sous forme de couche.

  3. Si vous avez déjà les données OSM stockées localement sur votre ordinateur, ouvrez-les dans josm, elles s'ouvriront également comme une nouvelle couche.

  4. La fusion de ces deux sources de données et la résolution des données en double sont appelées confusion . Exécutez le plugin de configuration et résolvez tous les conflits.

Si JOSM manque de mémoire (par exemple, lors de l'utilisation de fichiers volumineux), séparez les types d'attributs et effectuez ce flux de travail plusieurs fois, chacun avec un type de données différent (par exemple, limites et utilisations des sols; autoroutes; bâtiments), puis fusionnez enfin les fichiers osm ensemble en utilisant osmium ou un autre outil.

JOSM peut également lire les fichiers de formes bien que le support SHP ne soit pas parfait et cette méthode suppose que le fichier de formes peut être entièrement chargé en mémoire ...

  1. Démarrez JOSM.
  2. Ouvrez le fichier de formes (par exemple, filename.shp).
  3. Tout sélectionner.
  4. Dans JOSM, modifiez les attributs et les propriétés importés du SHP et modifiez-les de sorte que chaque attribut corresponde à une balise OSM.
  5. Enregistrez au format OSM.
  6. Continuez de A4 et conflate

Importer en tant qu'OSM

Importez les données OpenStreetMap dans le système comme suit:

  1. Accédez au répertoire contenant les fichiers OpenStreetMap (OSM) convertis à l'aide de JOSM.
  2. Exécutez les commandes suivantes dans la base de données:
    CRÉER UNE EXTENSION hstore;
    osm2pgsql -j -W \
              -d osm nom_fichier.osm

L' -joption est essentielle car elle demande à osm2pgsql d'importer les balises dans une hstorecolonne, ce qui préserve la structure de données sous-jacente et importera toutes les balises dans la base de données.

Créer une couche Mapnik

Pour que les données apparaissent sur la carte, ajoutez une couche et un style pour cette couche. Cela peut être aussi simple que ce qui suit:

  1. Modifier mapnik-stylesheets/osm.xml.
  2. Insérez le code XML suivant avant la </Map>balise de fermeture ...

...

<Layer name="prefix_zone" status="on" srs="&osm2pgsql_projection;">
  <StyleName>zones</StyleName>
  <Datasource>
    <Parameter name="table">
    (select way from prefix_line order by tags desc, z_order) as zones
    </Parameter>
    &datasource-settings;
  </Datasource>
</Layer>

Créer un style Mapnik

Suite de la section précédente:

  1. Trouvez la dernière </Style>balise (autour de la ligne 3350).
  2. Insérez le code XML suivant avant la &layer-shapefiles;directive:

...

<Style name="zones">
  <Rule>
    &maxscale_zoom1;
    &minscale_zoom19;
    <LineSymbolizer stroke="#0065BD" stroke-width="2.5" />
  </Rule>
</Style>

Roadmatcher

roadmatcher est un autre outil qui pourrait être utile

Volonté.
la source
OpenJUMP 1.5.1 n'est pas compatible avec RoadMatcher 1.4. OpenJUMP 1.3.1, qui peut utiliser RoadMatcher 1.4, n'est pas compatible avec PostGIS 2.0 (car OpenJUMP appelle find_extentplutôt que st_find_extent). PostGIS 2.0 est installé sur la base de données.
Dave Jarvis
Le plugin OpenData de JOSM lit les fichiers de formes: wiki.openstreetmap.org/wiki/JOSM/Plugins/OpenData
Dave Jarvis