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 osm2pgsql
wie 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.prj
Datei 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
- http://wiki.openstreetmap.org/wiki/Shapefiles
- http://wiki.openstreetmap.org/wiki/Import/Shapefile
- http://wiki.openstreetmap.org/wiki/Convert_shp_to_osm_using_grass_and_gpsbabel
- https://github.com/wavded/js-shapefile-to-geojson
- http://redmine.yellowbkpk.com/projects/list_files/geo
- http://www.gdal.org/ogr2ogr.html
- http://wiki.openstreetmap.org/wiki/Ogr2osm
- https://github.com/andrewguertin/ogr2osm
- http://svn.openstreetmap.org/applications/utils/import/shp2osm/
- http://crschmidt.net/blog/archives/354/polyshp2osm/
- http://www.mail-archive.com/[email protected]/msg12487.html
Vielen Dank!
quelle
Antworten:
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]
ogr2osm
wie 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.
Öffnen Sie josm und laden Sie das Conflation-Plugin herunter
Ihre Regierungsdaten sind jetzt eine Osm-Datei. Öffnen Sie josm, Datei> öffnen Ihre Daten sind als Ebene vorhanden.
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.
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 ...
filename.shp
. B. ).Als OSM importieren
Importieren Sie die OpenStreetMap-Daten wie folgt in das System:
Die
-j
Option ist der Schlüssel, da sie osm2pgsql anweist, die Tags in einehstore
Spalte 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:
mapnik-stylesheets/osm.xml
.</Map>
Tag ein ......
Erstellen Sie den Mapnik-Stil
Fortsetzung des vorherigen Abschnitts:
</Style>
Tag (um Zeile 3350).&layer-shapefiles;
Direktive den folgenden XML-Code ein :...
Roadmatcher
Roadmatcher ist ein weiteres Tool, das hilfreich sein könnte
quelle
find_extent
eher aufruft alsst_find_extent
). In der Datenbank ist PostGIS 2.0 installiert.