OSM-Daten in PostGIS-Datenbank einlesen

Außerdem will ich Höhenlinien und Hillshades auf der Karte darstellen. Zum Speichern von Höhenlinien in PostGIS habe ich eine Wiki-Seite gefunden http://wiki.openstreetmap.org/wiki/Contours#The_shapefiles_approach, zum Speichern von Hillshades noch nicht. Weiß jemand, ob das möglich ist?

Vielleicht… aber ich kenne nur Renderer, die die Schummerung als Grafik irgendwo gespeichert haben (als (geo)tiff z.B. oder schon vorbereitet als Grafik pro Kachel) und dann beim Rendern die Schummerung über (unter, zwischen…) das Kartenbild legen. Oder ganz getrennt Karte und Schummerung als zwei Layer ausliefern.

Würde mich wundern, wenn jemand Höhenwerte in eine DB stopft, nur um daraus dann die immer gleichen Werte abzufragen und in ein Bild zu verwandeln.

Grüße, Max

Wie maxbe schon angesprochen hat ist hier dei Frage nach der Sinnhaftigkeit zu stellen. Bei dem normalen osm Mapnikstyle werden zum Beispiel Küstenlinien auch bereits vorverarbeitet verwendet.
Und vor allem im Flachland könnte es mit den Linien schwierig werden, wenn du dann nicht mehr in jeder Kachel einen referenzpunkt hast und der Renderere somit gar nicht weiß ob solch ein Objekt in seinem Bereich existiert.
Der Vorteil solcher höhenlinien in der Datenbank ergäbe sich nur dann wenn du bestimmte Objekte in Abhängigkeit der Höhe dartstellen oder anderweitig auswerten möchtest. Da sich die Daten sonst nur wenig ändern würde ich eher zu einmal fertig aufbereiteten Daten tendieren.

Eine Anleitung für Hillshades findest Du im Wiki unter http://wiki.openstreetmap.org/wiki/Shaded_relief_maps_using_mapnik

Höhen

Das Speichern von Höhenlinien in der DB ist möglich - es ist aber auf Dauer nicht zu empfehlen. Denn dann mischt Du die OSM-Daten, die Du regelmäßig updaten wirst, mit Höheninformationen, die sich niemals ändern werden. Dadurch wird alles komplizierter und die DB unnötig größer und langsamer. Ich habe das früher so gemacht und bin dann auf shapefiles umgestiegen. Die Shapefiles werden einmalig berechnet und können von mapnik genauso in einem Sitz mitgerendert werden als ob die Daten in der DB stünden.

Hillshades

Hillshades funktionieren nicht mit der DB. Sowohl die Höhendaten als auch die berechneten Hillshades sind flächige Grafiken. Die Hillshades müssen auf jeden Fall mit einem externen Tool im Voraus berechnet werden. Aber eben auch nur einmal da sich die Höhen nicht ändern.

Um die Karte und die Hillshades/Höhenlinien zusammenzubringen gibt es meherere Methoden:

  • eigene Tiles für die Höhendaten erzeugen und als zweite Map-Layer im Browser darüberlegen. So macht es z.B. die http://hikebikemap.de/. Funktioniert gut wenn man die Karte im Browser anschaut (Du kannst für den Anfang auch einfach das dort verwendete Hillshading mit Deiner Karte kombinieren), ist aber schlecht wenn man die Karte woanders verwenden will wie z.B. in Apps die nur mit einer Layer rechnen. Außerdem legt sich hier die Schummerung immer über alles drüber, so daß z.B. Straßen, Icons und Texte auch mit abgedunkelt werden.

  • Es ist möglich vorbereitete Hillshade-Grafiken mit Mapnik als eigene Raster-Layer zu integrieren und die Schummerung direkt mitrendern zu lassen. Allerdings ist das Ergebnis immer etwas unbefriedigend, da Mapnik sie nur als Grautöne drübermalen kann. Dadurch werden die Farben insgesamt blasser und der Gesamteindruck der Karte leidet.

  • Die aufwändigste Methode, die aber das beste Ergebnis bringt ist folgende: Der Mapnik-Style wird in zwei Hälften geteilt: Flächige Daten, die ein Hillshading bekommen sollen, und Linien, Icons und Texte, die nicht verändert werden sollen, werden separat gerendert. Die Schummerung wird ebenfalls in extra Tiles gerendert. Bei den Höhenlinien kannst Du Dir aussuchen ob sie einmalig mit der Schummerung oder mit den Straßen gezeichnet werden sollen. Die Schummerung wird nicht als Grauwerte sondern als abdunkelnde/aufhellende Alphawerte gerechenet (Anleitung unter http://wiki.openstreetmap.org/wiki/Hillshading_using_the_Alpha_Channel_of_an_Image)). Dadurch entstehen dann drei Layers, die entweder im Browser oder mit einem zusätzlichen Verarbeitungsschritt nach dem Rendern kombiniert werden. Ein Karte die so arbeitet ist die http://wiki.openstreetmap.org/wiki/TopOSM.

bye, Nop

PostGIS ab Version 2.0 unterstützt Raster-Informationen.

Man kann - und mMn sollte - die bereits gerasterten Hillshades und Höhenlinien selbstverständlich in einer PostgreSQL/PostGIS-Datenbank ablegen und von dort abrufen.
siehe http://postgis.net/docs/manual-2.0/using_raster.xml.html und http://postgis.net/docs/manual-2.0/RT_reference.html

Ob das allerdings für dein Privat-Projekt sinnvoll ist, mag ich nicht beurteilen.

Gruss
walter

Das verwendet man eher dazu, die Höhendaten abzulegen um damit zu rechnen, nicht die fertigen Hillshades. Man kann dann aus den Daten auch farbige Höhenschichten machen (sowas wie der Hintergrund der Cyclemap z.B.), oder die Schummerung auch mal schnell mit Beleuchtung aus Süden ansehen. Oder ganz ungrafisch einfach die Höhe an einer Koordinate ausgeben. Für reines Ausschneiden kleiner Stücke aus einem grossen Bild find ich das ganz schön überdimensioniert.

Grüße, Max

Ich hatte bis jetzt aus den SRTM-Daten Shapefiles erzeugt und als eigenen Layer gerendert. Der Nachteil ist, daß ich dann für jedes größere Gebiet einen eigenen Layer brauche. Kann man die SRTM-Dateien oder die Shapefiles mergen? Dann müsste ich nur einen Layer einbinden, der sich nie ändert. Das wäre vermutlich die einfachste Methode.

Die Seite http://wiki.openstreetmap.org/wiki/Hillshading_using_the_Alpha_Channel_of_an_Image)) ist leer.

Ich hab das da befolgt: http://wiki.openstreetmap.org/wiki/Shaded_relief_maps_using_mapnik
GeoTiffs mergen geht mit gdal_merge.py (*)

Shapefiles könnte man mit ogr2ogr zusammenbasteln (steht hier), hab das aber selbst noch nie gemacht, die Höhenlinien hab ich in der DB, vermute aber, Nop hat recht damit, die nicht in der DB zu haben :wink:

Mach die Klammer am Ende weg: http://wiki.openstreetmap.org/wiki/Hillshading_using_the_Alpha_Channel_of_an_Image

Edit: () Ich bin mir aber nicht sicher, was passiert, wenn zwischen Spanien und Sachsen keine Daten vorhanden sind. Bei Shapefiles sollte das kein Problem sein, aber ob ein Geotiff damit funktioniert, weiss ich nicht…*

Mit Mapnik verwendbar?

Eigentlich egal, dürfte in jedem Fall langsamer sein als Grafiken im Filesystem.

bye, Nop

möglicherweise: Mapnik kann gdal - und gdal kann postgis raster: http://trac.osgeo.org/gdal/wiki/frmts_wtkraster.html

wird wohl so sein - aber Spaß machen würde es definitiv :wink:

Ich könnte mir vorstellen, daß eine richtig große Anwendung damit besser zu managen sein könnte.

So, Schluß mit träumen, ran an die Landstraßen.

Gruß
walter