ich brauche hilfe. Ich will den Landkreis von Bad Schwalbach entland der Grenzen rendern. Leider weiß ich nicht wie es funktioniert.
Ich habe bereits die Karte schon teilweise gerendert, aber ich möchte die nicht dazuliegenden Städte/Örter nicht auf der Karte haben. Ich hoffe ihr könnt mir helfen und mir einige Tipps geben.
Du kannst aus der Kreisgrenze ein Polygon machen, mit dem du die OSM-Daten aus dem nächstgrößeren Geofabrik-Extrakt ausschneidest. Dann wird auch nur das gerendert, was innerhalb dieses Polygons liegt.
Gibt es keine Tools um z.b. eine stadt aus deutschland auszuschneiden? Ich hab mit Maperative schon Bad Schwalbach als Quadrat ausgerendert, aber ich will es entlang der Grenzen rendern. Wie kann ich das machen ?
Du brauchst ein Polygon der Stadtgrenze und kannst dann mit osmosis den entsprechenden Teil ausschneiden. Wenn es eine Relation der Stadtgrenze gibt, diese alleine als *.osm Datei herungerladen und mit den diversen existierenden Tools in ein Polygon umwandeln.
neben der Frage wie du die OSM daten nur für das Gebiet von Bad Schwalbach (meinst du im übrigen dieses Gebiet laut http://www.openstreetmap.org/browse/relation/1734859 ??) bekommst, weißt du denn schon mit welchem Programm du dann die Daten rendern willst?
Klingt ja schon nach einer guten Aufgabe für Maperitive …
Der schon erwähnte Ansatz ist, den gewünschten Umriss schon vor dem Rendern aus den Daten auszuschneiden. Dazu wird statt einer Bounding Box (bbox) ein Polygon (poly) File verwendet, weitere Infos im Wiki.
Um ein solches poly File zu erstellen, benötigst du die obige Relation als OSM XML Datei inklusive Wege und Knoten (aus Extrakt filtern oder in JOSM herunterladen) und konvertierst diese dann mit osm2poly.pl. Ein Problem beim Schneiden sind evtl. Flächen (z.B. Wald), die evtl. entweder gar nicht oder über den Umriss hinaus gerendert werden.
Maperitive scheint poly Bounds nicht zu unterstützen (Suche ohne Ergebnis).
Eine Alternative wäre, das nachträglich durch darüberlegen einer “Schablone” zu lösen, wie das im Thread Region hervorheben für OpenLayers beschrieben ist. Evtl. kann man das in Maperitive auch schon beim Rendern darüberlegen.
Selber umwandeln brauchst du nicht.
Hier: http://www.odbl.de/boundaries/
gibst alle Kreisgrenzen Deutschlands. da sind auch die poly-files mit drin. Wahlweise grenzgenau(polygon_genau_al6.zip) oder mit einem schmalen Zusatzstreifen (polygon_geglättet_al6.zip).
Dort findest du Schwalbach_Stadt.poly
Da er aber Bad Schwalbach haben will, sollte er besser Bad_Schwalbach.poly nehmen.
Allerdings hilft das auch nicht viel weiter, da osmconvert genausowenig wie osmosis “grenzscharf” clipt.
Es bleiben immer Rudimente übrig, die ausserhalb des Polygons liegen. Stört bei der Datenverarbeitung nicht so sehr aber beim Rendern sieht es grottenschlecht aus.
Zudem bin ich mir sicher, dass die Renderer auch Informationen über die “äussere Welt” brauchen, damit sie im Randbereich sauber arbeiten.
Was hältst du den von der oben erwähnten Idee mit der Schablone, d.h. Multipolygon mit BBox als outer und das Grenz-Polygon als inner, die stammt ja von dir. Das müsste man doch auch mit Maperitive drüber rendern können, als Schatten oder eben weiß.
Sauber entlang der Grenze ausgeschnitten. Geht ganz einfach indem du die Geometrien in der DB (osm2pgsql oder besser noch imposm) mit einer maske (deine Grenze) verschneidest.
Der postgis Befehl dazu lautet ST_Intersection
Wie du schneidest hängt von deinen Bedürfnissen ab, man kann direkt das Polygon der Grenze als Maske nehmen, ich nehme aber auch öfter mal ein definiert breiteres Gebiet, das ich erhalte in dem ich auf das Grenzpolygon noch ST_Buffer und ST_Simplify anwende, so z.B hier beim Saarland mit einem ST_Buffer Wert von 3000m
Das ist die “grosse” Lösung mit Postgresql-DB und eigenem Renderer. Wirklich sauber
Mir war schon klar, dass man das damit hinkriegt - nur haben wir uns zu schnell auf maperitive eingeschossen.
Dann das Polygon in einer Fläche als Ausschnitt (einfache Relation mit inner und outer) mit speziellen Rules damit der Background transpartent rendern.
Bei Tiles mit MOBAC über den Alpha-Kanal zusammensetzen.
mal sehen, was David daraus macht.
Leider enden solche “Wie macht man Sowas”-Diskussionen öfters mit Funkstille und keiner erfährt dann, was der Fragesteller letztendlich gemacht hat.
Mich würde interessieren, wie du das jetzt gemacht hast …
… das wäre auch bei der Beantwortung der Fragen hilfreich: welches Programm hast du verwendet (Maperitive, QGIS, …), welche Datei meinst du (OSM Format, gerendertes Bitmap, SVG, …), was möchtest du mit Shapefiles machen (die sind doch eher für noch nicht gerenderte Rohdaten, oder nicht?)?
Hallo,
Ich arbeite zusammen mit David zusammen an diesem Projekt.
Wir haben die .osm so wie von ajoessen an den Grenzen ausgeschnitten. So haben wir jetzt eine .osm Datei erzeugt die nur die reinen Daten von Bad Schwalbach enthält.
Die nächste Frage ist aber noch:
Wie bekommen wir die Daten also .osm oder die Tiles ggf. wenn mit Maperative verarbeitet, zu einem Shapefile.
Sodass wir diese auf einem Geoserver laden können?
Carsten