Daten so exportieren, dass Bounding Box Wege trennt/schneidet?

Ist es moeglich Daten so zu exportieren, dass ich nach dem Exportieren keine Nodes ausserhalb der Bounding Box habe?

Wege, die ‘complete’ Nodes ausserhalb der Bounding Box haetten, sollen dabei aber von dieser geschnitten werden. Es soll also waehrend des Exports wenn erforderlich ein Node in einen Weg eingefuegt werden, damit dieser exakt auf der Bounding Box endet.

Möglich ist vieles, aber nicht alles ist einfach. Es gibt keinen fertigen Webservice, der das tut, was Du willst, und auch kein fertiges Commandline-Tool. Der einfachste Weg ohne Programmieren, der mir einfällt, wäre, dass Du die OSM-Daten zunächst in ein Shapefile umwandelst (fertiges von Geofabrik laden, oder osm2pgsql+pgsql2shp, oder modernes ogr2ogr, oder andere Möglichkeiten). Dann kannst Du mit ogr2ogr oder einem anderen Tool einen exakten Ausschnitt machen (bei ogr2ogr mit -spat und -clipsrc spat_extent), und dann mit einem shp-to-osm-Tool (http://wiki.openstreetmap.org/wiki/Shp2osm) wieder OSM draus machen.

Dabei geht natürlich die original-OSM-Objekt-ID verloren, aber mit OSM rückwärtskompatibel wären Deine Daten mit den dazuerfundenen Nodes ja auch nicht gewesen…

Bye
Frederik

Ich halte nicht davon, OSM-Rohdaten an der BBOX zu clippen. Für POI, Nodes oder auch Ways (Strassen) mag das ja noch gehen, aber sobald du eine einfache geschlosse Linie wie ein landuse=forest oder landuse=residential einfach am Rand abschneidest, ist das Teil defekt und nicht als Fläche darstellbar. Von Multipolygonen will ich erst garnicht anfangen.

Osmosis hat so eine Clipping-Funktion, der man “sagen” kann, dass relevante Daten ausserhalb der BBOX eben nicht abgeschnitten werden.

Das Clippen an der BBOX is Aufgabe der Anwendung, die die fertigen Daten anzeigt und nicht Aufgabe des Datenimportes.

Gruss
walter

Solange der Teil geschlossener Wege innerhalb der BBox aus einem einzelnen Segment besteht (nur eine ID), gibt es keine Probleme am Rand. Zumindest JOSM und auch Mkgmap verbinden dann die äußersten beiden Punkte miteinander, die dem Rand am nächsten liegen (betrifft Wege sowie Flächen, wobei geschlängelte Wege etwas komisch aussehen, fällt besonders bei den administrativen Grenzen auf). Je nach Gleichheit des Rand-Abstands betreffender Punkte verlaufen diese geradlinigen Verbindungen nicht parallel zum Rand. Da Multipolygon-Relationen nur aus einer ID bestehen, funktioniert das eigentlich zuverlässig. Anders bei geteilten Wegen mit verschiedenen IDs - diese werden dann nicht verbunden.

Die Art des Schneidens hat keinen Einfluss auf die Elemente innerhalb der BBox. Die Punkte außerhalb der BBox sind sowieso “futsch”, ein zusätzliches Clippen entfernt lediglich die Referenzen auf die Nodes, die weggeschnitten wurden und auf die Ways bei Relationen (ein Way wird nur entfernt, wenn alle seine Nodes außerhalb der BBox liegen). Genaugenommen sind “geclippte” Elemente datentechnisch intakt, weil sie auf nichts referenzieren, was nicht mehr vorhanden ist - abgesehen vom Fehlen der Information, dass der Weg geschlossen war. Der Fehler entsteht erst, wenn ausgeschnittene Gebiete zusammengefügt werden sollen - die Nodes sind wieder vollständig, aber der durchgeschnittene Teil der Referenzen fehlt (man hat dann streng genommen zwei verschiedene Wege mit gleicher ID ohne gemeinsamen Node).

Edit: Umformulierung

Okay, danke. Ich wollte nur fragen, bevor ich anfange etwas zu programmieren, das es schon ausgereift gibt…

Kommt halt (wie immer) auch darauf an, was Du vorhast. Müssen es wirklich OSM Rohdaten sein? Bei Vector Tiles z.B. ist Clipping ein Thema, da wird das dann aber auf den abgeleiteten Geometrien gemacht, die zum Rendern verwendet werden.

Kürzlich erst gesehen: https://github.com/mapbox/lineclip