Shape Files aus OSM generieren

Moin,
wer kann mir einen guten Einstiegslink geben zum Thema shape-Files aus OSM generieren?

Grüße
Chris

Mit welcher Plattform? Software? Sprache?

Gruss
walter

Ich programmiere in Java (richtiges Java, nicht JavaScript! )

Und da verwende ich die GeoTools http://geotools.org/GeoTools

Der Einstieg ist nicht leicht aber wenn man das erstmal geschnallt hat, geht es ganz easy.
Und die anderen Formate, die man so kennt, sind auch dabei. z.B. geoJson, KML, …

https://wiki.openstreetmap.org/wiki/Shapefiles#Create_your_own_shapefiles

Optimal wäre ein Online-Tool, wo ich sagen kann: Exportiere mir mal alle Straßen (zB.) innerhalb einer BBox als Shapefiles.

Alternativ: Ein Windows Tool zum konvertieren von OSM nach shape.

QGIS + Erweiterung: QuickOSM → speicher als shape file

https://www.youtube.com/watch?v=aLmMovuydqI

Danke, demnach geht es auch mit OSMIUM. Gibt es dafür fertige Windows-Builds?

Hallo,

Was auf der Wikiseite zu Osmium stand, bezog sich auf das alte Osmium 1.x. Osmjs gehört zum alten Osmium. Osmium 2.x kann das auch. Wenn man aber richtig gute Shapefiles erzeugen möchte, muss man selber Zeit investieren und mit den Möglichkeiten der Libosmium-Bibliothek und gdalcpp.hpp selber seinen Konverter schreiben.

Ich habe die Wikiseite soeben aktualisiert.

Das Continous-Integration-Tool AppVeyor baut für jeden Commit Binaries für Windows (mit dem Ziel, zu prüfen, ob die Unit-Tests durchlaufen). Diese Builds sind aber nicht offiziell, d.h. wenn etwas kaputt geht und keiner es beheben kann, bleibt es kaputt. Siehe dazu auch https://github.com/osmcode/osmium-tool/issues/59

Viele Grüße

Michael

Hört sich für mich so an, dass der Weg via QGIS der bessere ist?
Hab die 2.18.16 - 64bit mal installiert…

Das ist auf jeden Fall eine gute Idee, aber bedenke bitte die inhärente Beschränkung der Datenfeldnamenslänge in Shapefiles [1].

[1] https://gis.stackexchange.com/questions/15784/how-to-bypass-10-character-limit-of-field-name-in-shapefiles

Aber das ist doch total unabhängig davon, womit das Shape erzeugt wird, oder?

Gruss
walter

Hi Chris,

das hängt mMn davon ab, was du eigentlich willst und wie du das Ganze implementieren willst.

Also WER das dann WIE von WO aus verwenden soll.

Klar, es gibt dutzende Programme, die Shapes erzeugen können, aber mir ist immer noch unklar, was du eigentlich machen willst.

QGIS z.B. ist primär interaktiv, d.h. nur du kannst damit Shapes erzeugen. Man kann QGIS aber auch mit Python-Scripts aufrufen, die dann den Job machen.

Lass mich nicht weiter raten.

Gruss
walter

Ja. Das ist das Format. Aber man muss es im Kopf haben, wenn man “railway:milestone:emergency_brake_override” o.ä. abfragen und ausgeben will.

OSM-Daten eignen sich nicht so besonders für Shapefiles.

QuickOSM liest als Zwischenformat aber shapefiles, d.h. man kriegt für https://overpass-turbo.eu/s/weI mit QuickOSM:


wkt_geom    full_id     osm_id     osm_type railway   railway_po railway_mi note_1    railway__1
Point (...) n1998351202 1998351202 node     milestone 15.0       no         keine NBÜ no
Point (...) n1998351212 1998351212 node     milestone 14.4                            yes
Point (...) n4336140357 4336140357 node     milestone 14.2                            yes
Point (...) n4336140358 4336140358 node     milestone 14.0                            yes
Point (...) n4336140360 4336140360 node     milestone 13.8                            yes
Point (...) n4336140361 4336140361 node     milestone 13.6                            yes
Point (...) n4336140363 4336140363 node     milestone 13.4                            yes

Also vllt. doch keine so gute Idee!

Stimmt, wenn man damit die Tags meint.

Ich hab ja damit auch ein Problem bei den Shape-Exports der Boundaries Map.

Einerseits kann ich nicht alle Tags in EIN Feld packen, da der String dann i.d.R viel zu lang ist und anderseits kann ich nicht für jeden Tag ein eigenes Feld aufmachen, da die Anzahl der Felder ebenfalls limitiert ist.

Als “Lösung” hab ich die mMn wichtigsten Tags ausgegeben, was aber immer wieder zu Nachfragen meiner “Kunden” führt, wieso für sie wichtige Tags im Shape fehlen würden.

Ich werde das Problem dadurch lösen, dass ich zusätzlich Exporte im GeoPackage-Format anbieten werde, da das ein anerkannter, offener OGC Standard für Spatiale Daten geworden ist. http://www.opengeospatial.org/standards/geopackage

@Chris: macht GeoTools mit links :wink:

Gruss
walter

Das hiesige Stadt-Marketing möchte ein GIS aufbauen (mit QGIS!) und hatte mich gefragt, wie man die OSM Daten da reinbekommt.

ah ja, na dann kenne ich die antwort von wambacher schon :slight_smile:

PS: Mein Weg vor ein zwei Jahren: thüringen full und dann daily in eine postgresql mit postgis per osm2pgsql import und dann in QGis ganz einfach mit dieser DB verbunden. … ach hier sogar noch ein logfile von einem germany latest import auf meinem intel i3 laptop mit 8GB ram … fast 3 Tage :laughing:

wirklich? Lass dich überraschen.

Wenn die Stadt ein GIS aufbauen will, wird doch wohl ein Import des Kreises (Stadt + Umgebung) reichen, oder? Und dann sehen die Datenmengen ganz anders aus.

Zu meinem Lösungsansatz:

  • Stadt könnte QGIS-Webserver einsetzen. Damit wäre die Frage der Anwendungsoberfläche und des Webservers geklärt. Oder sie manchen es anders - aber das ist eh nicht unser Chris’s Problem :wink:
  • Kreisdaten mittels osm2pgsql in eine kleine Postgresql-DB importieren. Dauer: Minuten.
  • Mit QGIS ab und zu Shapefiles erzeugen und lokal abspeichern. Ggf dafür einige Python-Scripte schreiben (lassen).
  • Mit QGIS Webserver oder was anderm ins Netz stellen.

ym2c
walter

In der tat geht es nur um Stadt + 10 km, oder so, von daher sollte eine kleine Lösung (Import OSM direkt nach QGIS) gehen.
Habe das Marketing mit meiner Antwort erstmal zufrieden gestellt.