Private Shapefile-Daten mit OSM-Daten zusammenführen (zusammenführen)

11

Hintergrund

Alberta OSM-Daten von Geofabrik heruntergeladen und auf einem privaten Linux-Server mit PostgreSQL 9.1, PostGIS 2.0, Mapnik 2.1.0, osm2pgsql, Apache 2, mod_tile, renderd und OpenLayers ausgeführt:

Die Daten wurden osm2pgsqlwie folgt importiert :

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

Problem

Die OSM-Daten für Alberta sind unvollständig. Ich erhielt eine Reihe von Shapefiles , die die OSM-Daten verbessern:

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

Plus zusätzliche Shapefiles für Dörfer, städtische Gebiete, Gemeindebezirksgrenzen usw. Ich habe die Shapefiles mit einem pgAdmin- Plugin erfolgreich in PostgreSQL importiert . Die City.prjDatei beschreibt ihre Projektion wie folgt:

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]]

Die Shapefile-Daten und OpenStreetMap (OSM) -Daten haben jeweils eine eigene Datenbank, aber ich glaube, ich möchte die Shapefile-Daten in die OSM-Datenbank importieren. (Dies ist ein privater Server und eine lokale Kopie der OSM-Daten. Die Shapefile-Daten können nicht legal freigegeben werden.)

Update Nr. 1

Um klar zu sein, enthalten die Shapefiles keine Straßen: nur Gemeindegrenzen (die definitiv nicht Teil der OSM-Daten sind), Städte (von denen einige Teil der OSM-Daten sind) und Stadtgrenzen für größere Städte (von denen einige möglicherweise sind) Konflikt mit den OSM-Daten).

Frage

Wie füge ich die Shapefile-Daten mit OSM-Daten zusammen, damit die neuen Städte auf der Karte angezeigt werden?

Hinweis: Mein Hauptanliegen ist das Auflösen doppelter Daten (z. B. ist Edmonton sowohl in OSM als auch in den beschafften Shapefiles aufgeführt).

ähnliche Links

Vielen Dank!

Dave Jarvis
quelle
Laden Sie Ihre Shapefiles mithilfe der osm-Tags in Postgis - wiki.openstreetmap.org/wiki/Canadian_tagging_guidelines#Naming. Aktualisieren Sie dann Ihren Kachelserver, um alle neuen Funktionen als osm-gestaltete Daten zu laden.
Mapperz

Antworten:

5

Einführung

Dies erfordert wahrscheinlich einen erheblichen manuellen Aufwand, um die duplizierten Daten zu erkennen und zu entfernen. Wenn Sie doppelte Daten erkennen und auflösen; Sie möchten, dass beide Quellen dasselbe Geoformat haben: Shapefile, PostGIS-DBs oder als OSM-Daten.

Arbeitsablauf

Der folgende Workflow basiert darauf, dass beide Datenquellen als OSM verwendet werden, bevor doppelte Daten zusammengeführt und aufgelöst werden.

Es gibt einige Optionen zum Konvertieren der Daten in OSM:

EIN]

  1. Konvertieren Sie die Shapefile-Daten in OSM, wie Sie möchten. Versionen von ogr2ogr, die 2013 oder höher veröffentlicht wurden (Version 1.10 oder höher, IIRC), können SHP auch in OSM konvertieren. Es gibt auch, ogr2osmwie Sie bemerkt haben: Es gibt ein paar verschiedene Versionen von ogr2osm, egal welche Sie verwenden - ich bevorzuge pnorman's , es ist die aktuellste. Stellen Sie unabhängig davon sicher, dass die Übersetzungsdateien mit der von Ihnen verwendeten Version von ogr2osm kompatibel sind (der Einfachheit halber sollten diejenigen, mit denen ich verlinkt habe, mit der Version von ogr2osm kompatibel sein). Siehe hier als Beispiele für Übersetzungsdateien , die mit pnorman der ogr2osm kompatibel sind.

Stellen Sie sicher, dass die Übersetzungsdatei alle Informationen enthält, die Sie in Ihrem Shapefile benötigen. Die Übersetzungsdatei konvertiert Ihre Typen und Attribute des Shapefiles in von OSM als Tags bezeichnete Tags , die aus Schlüsseln und Werten bestehen.

1a. Führen Sie ogr2osm aus.

  1. Öffnen Sie josm und laden Sie das Conflation-Plugin herunter

  2. Ihre Regierungsdaten sind jetzt eine Osm-Datei. Öffnen Sie josm, Datei> öffnen Ihre Daten sind als Ebene vorhanden.

  3. Wenn Sie die OSM-Daten bereits lokal auf Ihrem Computer gespeichert haben, öffnen Sie sie in josm. Sie werden auch als neue Ebene geöffnet.

  4. Das Zusammenführen dieser beiden Datenquellen und das Auflösen der doppelten Daten wird als Zusammenführung bezeichnet . Führen Sie das Conflation-Plugin aus und lösen Sie alle Konflikte.

Wenn JOSM nicht genügend Arbeitsspeicher hat (z. B. bei Verwendung großer Dateien), trennen Sie die Attributtypen und schließen Sie diesen Workflow mehrmals mit jeweils unterschiedlichen Datentypen ab (z. B. Grenzen und Landnutzung, Autobahnen, Gebäude), und führen Sie sie schließlich zusammen die osm-Dateien zusammen mit osmium oder einem anderen Werkzeug.

B. JOSM kann auch Shapefiles lesen, obwohl die SHP-Unterstützung nicht perfekt ist und diese Methode davon ausgeht, dass das Shapefile vollständig in den Speicher geladen werden kann ...

  1. Starten Sie JOSM.
  2. Öffnen Sie das Shapefile (z filename.shp. B. ).
  3. Wählen Sie Alle.
  4. Bearbeiten Sie in JOSM die Attribute und Eigenschaften, die aus dem SHP importiert wurden, und ändern Sie sie so, dass jedes Attribut einem OSM-Tag entspricht.
  5. Als OSM-Format speichern.
  6. Fahren Sie von der A4 weiter und verschmelzen Sie

Als OSM importieren

Importieren Sie die OpenStreetMap-Daten wie folgt in das System:

  1. Wechseln Sie in das Verzeichnis mit OpenStreetMap (OSM) -Dateien, die mit JOSM konvertiert wurden.
  2. Führen Sie die folgenden Befehle in der Datenbank aus:
    CREATE EXTENSION hstore;
    osm2pgsql -j -W \
              -d osm Dateiname.osm

Die -jOption ist der Schlüssel, da sie osm2pgsql anweist, die Tags in eine hstoreSpalte zu importieren , wobei die zugrunde liegende Datenstruktur erhalten bleibt und alle Tags in die Datenbank importiert werden.

Erstellen Sie eine Mapnik-Ebene

Fügen Sie einen Layer und einen Stil für diesen Layer hinzu, damit die Daten auf der Karte angezeigt werden. Dies kann so einfach sein wie folgt:

  1. Bearbeiten mapnik-stylesheets/osm.xml.
  2. Fügen Sie den folgenden XML-Code vor dem schließenden </Map>Tag ein ...

...

<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>

Erstellen Sie den Mapnik-Stil

Fortsetzung des vorherigen Abschnitts:

  1. Suchen Sie das letzte </Style>Tag (um Zeile 3350).
  2. Fügen Sie vor der &layer-shapefiles;Direktive den folgenden XML-Code ein :

...

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

Roadmatcher

Roadmatcher ist ein weiteres Tool, das hilfreich sein könnte

Wille.
quelle
OpenJUMP 1.5.1 ist nicht mit RoadMatcher 1.4 kompatibel. OpenJUMP 1.3.1, das RoadMatcher 1.4 verwenden kann, ist nicht mit PostGIS 2.0 kompatibel (da OpenJUMP find_extenteher aufruft als st_find_extent). In der Datenbank ist PostGIS 2.0 installiert.
Dave Jarvis
Das OpenData-Plugin von JOSM liest Shapefiles: wiki.openstreetmap.org/wiki/JOSM/Plugins/OpenData
Dave Jarvis