Wie finde ich Gebäude in way_line

Ich dachte bisher, wenn ich nach dem Attribut “building = yes” filtere habe ich alle Gebäude. Leider hat sich dies gestern als falsch herausgestellt.

Das Gebäude hat in dem Attribut “building” keinen Eintrag, also Wert = ‘NULL’
Hier sieht man auch sehr gut, dass man nicht alle “way_line” Objekte übernehmen kann, da dann auch Freiflächen als Gebäude in meinem Datensatz dargestellt werden.

In der OSM Karte ist es aber deutlich als Gebäude erkennbar! Ich stelle mir also die Frage, über welches Attribut werden die Gebäude in dem OSM Datensatz gefiltert???

Ich bitte wenn möglich, um zügige Hilfe. Ich würde gerne meine Karte heute fertigstellen.
Ich nutze zwar ArcGIS, aber dies sollte egal sein, da die Attribute ja die gleichen sind.

Sieht für mich aus wie eine Relation:
http://www.openstreetmap.org/browse/relation/1652129
Und sie hat building=yes

Was ist eine Relation in diesem Zusammenhang? Wenn Du den Datensatz von der geofabrik als pbf lädst und dann mit osmconvert in ein osm Format wandelst, ist kein Attribut building vorhanden.

Wäre schön wenn du die Zeit hat, es bitte zu prüfen.

Das Dortmunder U besteht aus 4 einzelnen Linien und dort gibt es das Attribut building=yes nicht. Ist ja auch logisch, da eine nicht geschlossene Linie kein Gebäude sein kann.

Problem ist, dass ich nicht manuell meine Karte nach fehlenden Gebäuden absuchen möchte. Es kommt an dieversen Stellen häufiger vor.

Ein Multipolygon. Eine Zusammenfassung mehrerer Ways mit den Rollen “inner” und “outer”.
Die Tags für die Fläche findest Du in diesem Fall an der Relation, nicht an den ways.

Chris

Ok, verstehe. Die 4 Linien ist ein Objekte als Mulitpolygon.

Ich filtere die Objekte mit FME und dort werden die 4 Linien nicht als Multipolygon erkannt. Dies ist auch die Erklärung warum das Attribut building nicht angezeigt wird.

Kennt ihr einen anderen Weg die Linen zu filtern? Wie komme ich an meine Gebäude, um später im GIS sie als Flächenobjekte zu nutzen?

mit osmosis oder osmfilter nach Buildings filtern und das Resultat als *.osm in QGIS laden + als Shapefile abspeichern. So würde ich es versuchen

osmfilter läuft bei mir nicht. wir haben es schon auf win7 und auf xp getestet. kennt ihr eine lösung?

osmosis bin ich schon zu blöd zu installieren …

osmfilter geht kurz auf und direkt wieder zu? Kennt jemand das Problem und kann mir helfen?

Wenn Du damit sagen willst, daß Du das Programm per Doppelklick zu starten versuchst, ist das kein Wunder. osmfilter ist - wie die meisten derartigen Werkzeuge - ein Kommandozeilenprogramm. Also Eingabeaufforderung öffnen und osmfilter von dort ausführen.

Ups, … ja habe es wirklich mit einem Doppelklick versucht, weil OSMConvert auch direkt in der Win Oberfläche funktioniert.

Könnt ihr mir bitte die Syntax für die Abfrage nach building=yes und die erneute Ausgabe als osm nennen? Dann brauche ich nicht so lange suchen … :wink:

Ok, ich habe es soweit mit OSMFilter geschafft. :smiley:

Aber …

Ich habe nun noch die Innenhöfe der Gebäude als Fläche, die ich natürlich nicht haben möchte.

Ich müsste also noch nach “member{}.role=outer” filtern!

Warum funktioniert folgendes nicht:

–keep"building=yes" --keep"member{}.role=outer"

Die Innenhöfe sind immer noch vorhanden :frowning:

Problem könnte sein, dass in der {} die Nummern von 0 bis zur Anzahl der Objekte in einem Multipolygon vorkommen und diese dann die Werte “outer” bzw. “inner” haben.

Bitte helft mir wie ich mit osmfilter nur die “outer” Objekte filtere.

Lieben Dank

Kann mir niemand helfen? :frowning:

Sooo, ich habe was neues rausgefunden und hoffe wirklich auf eure Hilfe.

Mit osmfilter hat man gar keinen Zugriff auf das Attribut “member{}.role=inner”

Ich habe mir alle Keys anzeigen lassen:

“osmfilter Dortmunder_U.osm --out-key”

Wo sind die Profis von gestern? Wie bekomme ich nun meine Innenhöfe der Gebäude gefiltert?

Bitte bitte …

Das ist kein Wunder, da es bei OSM keine “Attribute” gibt; diesen Begriff hast Du wohl aus ArcGIS übernommen. OSM-Objekte haben Tags und Elemente von Relationen haben zusätzlich in jeder Relation eine Rolle. osmfilter beherrscht Filtern nach Tags, d.h. was Du versuchst, ist nach einem Tag mit dem Schlüssel “member{}.role” und dem Wert “inner” zu filtern - den es natürlich nirgends gibt. Filtern nach Rollen ist in osmfilter nicht vorgesehen und auch nicht adhoc zu ergänzen.
Um Gebäude zu filtern, die als Multipolygon realisiert sind, wäre --keep-relations=“type=multipolygon and building=yes” angesagt. Das nützt Dir aber auch noch nichts, denn wenn Du die komplette Datei lädtst, sind diese Relationen ja auch vorhanden, sind in ArcGIS aber nach Deiner Aussage nicht sichtbar.

Übrigens steht das auch in der Dokumentation, vgl. http://esriosmeditor.codeplex.com/wikipage?title=Tools :

Auf derselben Seite findet sich ein Hinweis, wie man auf Relationsmitgliedschaften zugreifen kann:

Was damit anzufangen ist, wirst Du selbst herausfinden müssen, da hier offensichtlich niemand ArcGIS benutzt. Ziel wäre die Prüfung, ob der betrachtete Weg Element einer Relation mit type=multipolygon und building=yes ist und dort role=outer hat. (Verschiedene abweichende Tagging-Varianten sind da allerdings noch gar nicht berücksichtigt.)

Ansonsten wurde weiter oben von SunCobalt bereits der Hinweis gegeben, die OSM-Daten mittels geeigneter Software in Shapefiles umzuwandeln; mit denen sollte ArcGIS ja wohl umgehen können. Dies scheint mir für Deine Zwecke der einzig gangbare Weg zu sein. Q(uantum)GIS als Werkzeug dafür wurde bereits genannt. Den Hinweis, daß auch die Osmium-Bibliothek einen fertigen OSM-zu-Shapefile-Konverter enthält, kann ich mir vermutlich sparen, da Du kaum imstande sein wirst, Osmium zu installieren.

Um wie grosse Bereiche geht es Dir denn?

Falls es sich auf ein oder zwei qkm beschränkt, könntest Du mit OverPass Turbo eine GeoJSON runterladen und die nach SHP konvertieren, Overpass kann ganz gut mit Relationen umgehen. (mit OGR2OGR kommt dann z.B. so eine Shapedatei raus).

Für ganze Städte ist das aber kein gangbarer Weg, da verweigert mir OverPass den Dienst. Da würde ich mich an SunCobalts Vorschlag halten, falls Qgis auch Relationen kann…

Grüße, Max

Ja, es handelt sich um eine ganze Stadt. :frowning:

Sagt mal, was für eine Dateiendung hat eine Parameter Datei?

Ich habe folgendes gefunden:

Die Kommandozeilenparameter können sehr lange werden wenn man komplexe Filter definiert. In diesem Fall ist es günstiger, eine Parameterdatei zu verwenden und darauf mit --parameter-file= zu verweisen.

Eine txt Datei funktioniert nicht. Welches Format muss sie haben?

Ich denke schon das ich nach role=outer abfragen kann, da folgendes funktionieren soll:

Zum Beispiel:

./osmfilter europe.o5m --parameter-file=my_parameters >line_1.o5m

Datei “my_parameters”:

-v

–keep=

–keep-relations=
all
route=bus
line=1

–drop-tags=
operator=
direction=

–out-o5m

Da Gebäude nach folgendem Schema aufgebaut werden:

Muss man eigentlich auch nach role abfragen können.

Nur wie …???

garnicht :frowning:

Gruss
walter

Ich glaube, Du verrennst dich…

Das hilft Dir doch noch nicht weiter, wenn Du da die outer rausfilterst. In der Relation stehen alle Linien drin, die das Gebäude beschreiben. Du brauchst alle davon, die “outer” um den äusseren Rand zu malen und die “inner” um den Innenhof aus der von den “outer” beschriebenen Fläche auszuschneiden.

Und Du brauchst ein Stück Software, das Dir aus den vielen Linien (den outer und den inner) etwas zusammenbaut, was Dein GIS als “Polygon mit Löchern” akzeptiert. Das ist nicht ganz einfach, dazu muss man die inner und outer auseinanderdröseln, in die richtige Reihenfolge bringen, ggf. in die richtige Richtung drehen und zusammensetzen. Werkzeuge dazu kenne ich keine, aber ein paar wurden hier genannt.

Grüße, Max