DE:Ajoessen/Objekte als GPX extrahieren
Nachfolgend wird beschrieben, wie man Objekte mit einem speziellen tag filtern und als GPX im GPXviewer darstellen kann. Als Beispiel sollen alle Gebäude mit dem tag year_of_construction in Troisdorf gezeigt werden.
Die Rohdaten könne mit osmosis aus einem Geofabrik-Extrakt oder vom XAPI-Server gefiltert werden.
Filterung mit osmosis
Extrakte der Geofabrik von [1]: nordrhein-westfalen.osm.pbf oder koeln.osm.pbf
Batchdatei zur Filterung:
D:\Karten\OpenStreetMap\osmosis\bin\osmosis.bat --read-pbf D:\Karten\osm\Geofabrik\nordrhein-westfalen.osm.pbf --bb left=7.07 right=7.22 bottom=50.76 top=50.87 --tf accept-ways year_of_construction=* --used-node --tf reject-relations --write-xml yoc.osm
Filterung über die XAPI
Batch-Datei:
D:\wget\wget.exe http://osmxapi.telascience.org/api/0.6/way[bbox=7.07,50.76,7.22,50.87][year_of_construction=*] -O xapi-yoc.osm
Die XAPI-Server sind zeitweise überlastet, eventuell kommt man auf http://xapi.openstreetmap.org/... weiter.
Umwandlung nach GPX
Die oben erzeugte yoc.osm in josm laden Speichern unter ->yoc.gpx irgendwo auf der Platte.
Den aktuellen Stand 11/2010 habe ich hier abgelegt: http://bahnradwandern.bplaced.net/yoc.gpx
Vorgehensweise bei Punktelementen (POI)
josm kann nur Wege als GPX-tracks speichern; Punkte werden leider ignoriert. Daher muß hier für die Umwandlung auf GPSbabel ausgewichen werden.
Im zweiten Beispiel werden alle Bänke extrahiert und angezeigt. Die Ausgangsdatei ist bereits auf den interessierenden Bereich (hier Netphen) zugeschnitten.
Batchdatei für osmosis:
D:\Karten\OpenStreetMap\osmosis\bin\osmosis.bat --read-xml netphen.osm --tf accept-nodes amenity=bench --tf reject-ways --tf reject-relations --write-xml bench.osm
Batchdatei für Gpsbabel:
C:\Programme\gpsbabel\gpsbabel.exe -w -i osm -f bench.osm -o gpx,snlen=32 -F bench.gpx
GPX über OpenStreetMap darstellen
Meinen GPX-Viewer hier herunterladen, yoc.gpx als track.gpx ins Verzeichnis des GPXviewers kopieren, und den Viewer starten. Die Objekte mit year_of_construction-tag sind rot umrandet zu sehen.
HKTSmap
Mit der nachfolgenden Batchdatei kann man ziemlich einfach einen GPX-Layer mit Hundekottütenspendern erstellen:
call D:\Karten\OpenStreetMap\osmosis\bin\osmosis.bat --read-pbf D:\Karten\osm\Geofabrik\nordrhein-westfalen.osm.pbf --tf accept-nodes vending=excrement_bags --tf reject-ways --tf reject-relations --write-xml D:\Karten\osm\osmosis\hkts.osm C:\Programme\gpsbabel\gpsbabel.exe -w -i osm -f D:\Karten\osm\osmosis\hkts.osm -o gpx,snlen=32 -F D:\Karten\osm\gpx\hkts.gpx copy D:\Karten\osm\gpx\hkts.gpx D:\Karten\OpenStreetMap\gpxviewer\Track.gpx D:\Karten\OpenStreetMap\gpxviewer\gpxviewer.htm
Extrahieren von Bushaltestellen als GPX
Die Bushaltestellen eines Kreises sollen als GPX-Datei mit Namen extrahiert werden. Hierzu muß zuerst ein Ausschneide-Polygon des Kreises erstellt werden. Aus dem Geofabrik-Extrakt des Bundeslandes werden zunächst alle Kreisgrenzen extrahiert:
admin-6.bat
D:\Karten\OpenStreetMap\osmosis\bin\osmosis.bat --read-pbf D:\Karten\osm\Geofabrik\nordrhein-westfalen.osm.pbf --tf accept-relations admin_level=6 --used-way --used-node --write-xml admin6.osm
Wichtig ist die Reihenfolge von --used-way und --used-node. Nur so werden alle Wege und Knoten ignoriert, die nicht zu Kreisgrenzen gehören.
Für die Umwandlung in ein poly-File wird osm2poly.py von hier verwendet. Hierzu müssen die Wege der Kriesgrenze spezielle tags haben. Die Umwandlung wird mit josm durchgeführt.
admin6.osm in josm laden
Datei/Neue Ebene
Im Ebenenfenster Haken vor admin6.osm setzen
Filter type:node blendet alle Knoten aus
Im Relationsfenster Rechtsklick auf den gewünschten Landkreis ->Elemente auswählen
(Im folgenden wird der Kreis Borken bearbeitet)
Bearbeiten/Auswahl vereinigen
Vereinigen
Im Ebenenfenster Haken vor Datenebene 1 setzen
mit Rechteckauswahl gesamtes Kreisgebiet markieren
Im Eigenschaftenfenster alle tags löschen
neue tags:
polygon_file : Kreis Borken
polygon_id : 1
Werkzeuge/Linien verbinden
Drehen und Verbinden
Datei/Speichern unter
BOR-poly.osm
Beim Verlassen : Verwerfen und Beenden (Nicht hochladen!)
poly.bat:
osm2poly.pl BOR-poly.osm >BOR.poly
Die Bushaltestellen könne nun aus dem Geofabrik-Extrakt ausgeschnitten werden:
BOR-Bushalte.bat:
D:\Karten\OpenStreetMap\osmosis\bin\osmosis.bat --read-pbf D:\Karten\osm\Geofabrik\nordrhein-westfalen.osm.pbf --tf accept-nodes highway=bus_stop amenity=bus_station public_transport=platform --tf reject-ways --tf reject-relations --bounding-polygon file="D:\Karten\osm\osm2poly\BOR.poly" --write-xml BOR-Bushalt.osm
Leider kann man diese Datei nicht mit JOSM in eine GPX-Datei umwandeln. Die Umwandlung mit GPXbabel hat den Nachteil, dass die osm-id als cmt und description, bei namenlosen Objekten auch als Name verwendet wird. Deshalb wird hier alternativ die Umwandlung über Quantum GIS und ogr2ogr beschrieben. Der Direktexport von Quantum GIS in GPX funktioniert leider auch nicht, deshalb wird zunächst ein shapefile erstellt.
In Quantum GIS wird das OSM-plugin aktiviert:
Erweiterungen/Erweiterungen verwalten
x OpenStreetMap plugin
Erweiterungen/Openstreetmap/Load OSM from file
(oder das OSM-Symbol mit dem grünen plus)
... Datei auswählen
Spalten für Elemente:
x name
OK
Im Layerfenster Rechtsklick auf BOR-Bushalt points ->Speichern als...
Format: ESRI-Shapedatei
Speichern unter: Verzeichnis und Dateinamen auswählen
Kodierung: UTF-8
KBS: Durchsuchen
EPSG:4326 auswählen
OK
OK
Quantum GIS beenden
Für die Umwandlung mit ogr2ogr wird die Installation von Mapserver for Windows benutzt:
ogr.bat
set PATH=C:\ms4w\Apache\cgi-bin;C:\ms4w\tools\gdal-ogr;C:\ms4w\tools\mapserv;C:\ms4w\tools\shapelib;C:\ms4w\proj\bin;C:\ms4w\tools\shp2tile;C:\ms4w\tools\shpdiff;C:\ms4w\tools\avce00;C:\ms4w\python\gdal;%PATH% set GDAL_DATA=C:\ms4w\gdaldata set GDAL_DRIVER_PATH=C:\ms4w\gdalplugins set PROJ_LIB=C:\ms4w\proj\nad set CURL_CA_BUNDLE=C:\ms4w\Apache\conf\ca-bundle\cacert.pem if exist BOR-Bushalt.gpx del BOR-Bushalt.gpx C:\ms4w\tools\gdal-ogr\ogr2ogr.exe -f "GPX" D:\Karten\osm\osm2poly\BOR-Bushalt.gpx D:\Karten\osm\osm2poly\BOR-Bushalt.shp