Archiv der Kategorie: Openstreetmap

Geodatenkonvertierung für Openstreetmap

Wer sich ein wenig näher mit Geodaten befasst stellt recht schnell fest, dass man da mit unglaublichen Mengen an historisch gewachsenem Zeug zu kämpfen hat. Ähnlich grausam ist das eigentlich im EDV Bereich nur noch beiCharacter Encoding. Im Geodatenbereich hat sich jedoch das Gegenstück zu Unicode leider noch nicht in der Breite durchgesetzt. Jedes Land wenn nicht sogar jedes Bundesland kocht da meist sein eigenes Süppchen.

Daten die man von öffentlichen Stellen in Deutschland bekommt sind meist in der Gauß-Krüger-Projektion mit Bessel-Ellipsoid in 3° breiten Meridianstreifen. Für die südlichen Bundesländer sind das GK2 für RLP, GK3 für BW und GK4 für Bayern.

Für OSM brauchen wir die Daten aber im „GPS Format“ mit geographischer Länge und Breite bezogen auf WGS84 (epsg:4326). Es stellt sich also die Aufgabe die Daten möglichst genau in diese Formate zu überführen.

Weil OSM ein freies Projekt ist verwenden wir dazu natürlich freie Software!

Ein Kommandozeilenprogramm zur Konvertierung von im Geobereich üblichen Vektorformaten ist das Kommandozeilentool ogr2ogr.

Da die Kommandozeilen ein wenig kryptisch sind veröffentliche ich hier mal die passenden Konvertierungsbefehle für die GK-Zonen, mit denen ich bisher zu tun hatte.

Es geht darum die Aufgabe zu lösen Dateien in GK-Format in eine OSM geeigenete Darstellung (epsg:4326) zu überführen. Dankenswerteweise gibt es dafür eine amtliche Korrekturdatei zum Download. Damit erreicht man Genauigkeiten von etwa einem halben Meter. Für OSM ist das also mehr als ausreichend. Strenggenommen ist die Korrekturdatei zwar für ETRS89 und nicht für WGS84 (Danke Tobias), aber das können wir für die nächsten paar Jahre mal vernachlässigen.

Hier sind die Befehlszeilen die man auf einem Debian GNU/Linux (apt-get install gdal-bin) zur Konvertierung benötigt. Die amtliche Korrekturdatei BETA2007.gsb sollte im aktuellen Pfad liegen.

GK Zone 2 (RLP, NRW):
ogr2ogr -s_srs '+proj=tmerc +lat_0=0 +lon_0=6 +x_0=2500000 +y_0=0 \
+k=1.000000 +ellps=bessel +units=m +nadgrids=./BETA2007.gsb +wktext' \
-t_srs epsg:4326 -f <dateityp> <outfile> <infile>

GK Zone 3 (BW, SHH):
ogr2ogr -s_srs '+proj=tmerc +lat_0=0 +lon_0=9 +x_0=3500000 +y_0=0 \
+k=1.000000 +ellps=bessel +units=m +nadgrids=./BETA2007.gsb +wktext' \
-t_srs epsg:4326 -f <dateityp> <outfile> <infile>

GK Zone 4 (BY):
ogr2ogr -s_srs '+proj=tmerc +lat_0=0 +lon_0=12 +x_0=4500000 +y_0=0 \
+k=1.000000 +ellps=bessel +units=m +nadgrids=./BETA2007.gsb +wktext' \
-t_srs epsg:4326 -f <dateityp> <outfile> <infile>

GK Zone 5 (SN):
ogr2ogr -s_srs '+proj=tmerc +lat_0=0 +lon_0=15 +x_0=5500000 +y_0=0 \
+k=1.000000 +ellps=bessel +units=m +nadgrids=./BETA2007.gsb +wktext' \
-t_srs epsg:4326 -f <dateityp> <outfile> <infile>

Wenn man nach dem gewünschten Dateityp gefragt wird ist das ESRI Shapeformat typischerweise dem Autocad DXF vorzuziehen. Für ersteres gibt es fertige Konvertierungsprogramme ins native OSM Datenformat. Diese sind zwar noch stark verbesserungsfähig, aber dennoch halbwegs brauchbar.

Bookmarklet to load the current section of a slippy map into JOSM

In the meantime there are quite a lot of nice OSM based Slippy-Maps all around the Web. Usually they are based on Openlayers.

Now it happens from time to time, that I find something on one of this maps which needs to be corrected in the Openstreetmap database.

Unfortunately it is not very straight forward to load exactly the corresponding bounding box of the map into josm.

This has been solved in a very convenient way as far as the OSM Inpector is concerned. All you need to do there is to press the „load in josm“ button on the Website.

Wouldn’t it be nice to have this feature in any Slippy Map?

Well, here we go:

Based on Jochens code I have been able to code a Bookmarklet which does exactly this!

All you need to do is to add this URL to your Bookmarks.

Now, if you call the bookmark while browsing a Slippy-map an running josm with the remote plugin enabled, then josm is instructed to download all the OSM-data for the section displayed in the slippy-map.

Update: This is confirmed to work with IE6-8 and Firefox. This does not work with Opera, because they have a security code in place which is blocking access to localhost from within scripts (see discussion on Opera forum).