You are not logged in.

Announcement

*** NOTICE: forum.openstreetmap.org is being retired. Please request a category for your community in the new ones as soon as possible using this process, which will allow you to propose your community moderators.
Please create new topics on the new site at community.openstreetmap.org. We expect the migration of data will take a few weeks, you can follow its progress here.***

#1 2012-07-15 11:39:27

Asohen
Member
Registered: 2012-07-15
Posts: 7
Website

Folgen von osmfilter ignore-dependencies

Zwecks Straßennavigation mit dem kleinen eTrex30 habe ich mir eine Karte gebaut, die nur das Nötigste enthält (siehe auch http://asphaltohneende.de/gps_osm.htm).
Mein Aufruf von osmfilter:

osmfilter -v germany.osm --drop-version --keep="highway=primary =primary_link =secondary =secondary_link =tertiary =tertiary_link =living_street =residential =unclassified =rest_area =service =road or amenity=fuel =biergarten =cafe =fast_food =food_court =ice_cream =restaurant or place=city =town =village =hamlet" --drop="motor_vehicle=no or motorcycle=no or vehicle=no or access=no" -o=filtered.osm

Vereinzelt bin ich in filtered.osm dabei auf Shops gestoßen, die nach meiner Vorstellung nicht in der Karte enthalten sein sollen (weder Tank- noch Futterstelle :-)

Die Ursache ist, dass die Knoten jener Shops Teile von (erwünschten) Highways sind.
Beispiel (verkürzt):
    <node id="300088452" lat="50.055788" lon="8.3031455">
        <tag k="name" v="KfZ-Friedrich"/>
        <tag k="shop" v="car"/>
    </node>
    <way id="26361179">
        <nd ref="300088452"/>
        <tag k="highway" v="residential"/>
    </way>
Node 300088452 ist Teil von 26361179, und somit Bestandteil der Karte.

Nun vermute ich, dass ein Knoten mit "shop=car" gar kein Teil einer Straße sein sollte. Im o.g. Beispiel handelte es sich dann um einen Fehler in germany.osm (falsche Eingaben).
Ist diese Vermutung richtig?

Ich könnte auch osmfilter mit --ignore-dependencies aufrufen. Das geschilderte Problem wäre dann zunächst behoben.
Aber was handele ich mir damit noch ein?
Immerhin ist filtered.osm dann nur noch halb so groß. Die Vermutung liegt nahe, dass ich damit mehr herausfiltern würde, als mir lieb ist.
Welche Bedeutung haben die vielen anderen Knoten, die Teil anderer Knoten sind?
Über Infos zu diesem Thema würde ich mich sehr freuen.

Offline

#2 2012-07-15 18:40:51

Asohen
Member
Registered: 2012-07-15
Posts: 7
Website

Re: Folgen von osmfilter ignore-dependencies

Die Anwendung von --ignore-dependencies auf ways ist wohl ziemlich sinnfrei, weil ein Way mindestens zwei Knoten haben muss, nämlich dessen Endpunkte. Nur diese Knoten haben Koordinaten, der Way selbst hat keine.
Die mit --ignore-dependencies erzeute IMG-Datei (Garmin-Format) ist in meinem Fall nur 1/100 so groß, wie die ohne. Das eTrex zeigt alles an - bis auf Straßen.
Soweit sind mir die Zusammenhänge inzwischen klar.

Doch was ist mit Knoten, die z.B. shop=car beinhalten?
Ich sehe bisher keine Möglichkeit, solche von Ways referenzierte Knoten, ohne --ignore-dependencies, pauschal auszufiltern. Mit "pauschal" meine ich, ohne "shop" etc. explizit anzugeben. Es gibt ja eine enorme Menge solcher Tags. In den von Ways referenzierten Knoten möchte ich nur die Koordinaten behalten, damit die korrekt Ways erhalten bleiben.

Any comments?

Last edited by Asohen (2012-07-15 18:59:57)

Offline

#3 2012-07-15 18:47:05

chris66
Member
From: Germany
Registered: 2009-05-24
Posts: 10,128

Re: Folgen von osmfilter ignore-dependencies

Ist nicht verboten, POIs direkt an die Straße zu kleben. Oft wird es vermutlich unbeabsichtigt passiert sein.
Du könntest den shop doch in die drop-Liste reinnehmen?


Mapper aus dem Münsterland.

Offline

#4 2012-07-15 19:07:30

Asohen
Member
Registered: 2012-07-15
Posts: 7
Website

Re: Folgen von osmfilter ignore-dependencies

chris66 wrote:

Ist nicht verboten, POIs direkt an die Straße zu kleben. Oft wird es vermutlich unbeabsichtigt passiert sein.
Du könntest den shop doch in die drop-Liste reinnehmen?

Gerade habe ich meinen vorigen Post editiert, weil mir (zu spät) auffiel, dass von referenzierten shops etc. die Koordinaten gebraucht werden können.
Beispiel: Ein highway=service läuft zum shop, dann braucht dieser "highway" die Endkoordinate des shops. Alle highway=service sollen aber in der Karte vorhanden sein. D.h. der shop-Knoten muss bleiben, aber seine shop-Eigenschaft soll weg. Uff.

Den shop möchte ich nicht in die drop-Liste eintragen, weil es außer "shop" noch Myriaden anderer Knoten gibt, die ich alle einzeln aufführen müsste.

Offline

#5 2012-07-15 19:25:24

kellerma
Member
Registered: 2010-07-18
Posts: 1,623

Re: Folgen von osmfilter ignore-dependencies

osmfilter nodes-in.osm --keep-tags="all fkdjk=" -o=nodes-out.osm

"keep-tags="all .." wirft alles außer "fkdjk" weg. Da es "fkdjk" (hoffentlich wink nicht gibt als tag, werden alles nodes "tag-frei" sein.

Offline

#6 2012-07-15 20:12:06

Marqqs
Member
Registered: 2011-01-01
Posts: 724

Re: Folgen von osmfilter ignore-dependencies

Hallo,

ich weiß nicht, ob es sinnvoll ist, einen Shop-Knoten rauzuwerfen, der Bestandteil einer Straße ist. Die Straße verliert dadurch einen Knoten und ändert ihre Form...

Wahrscheinlich wäre das eher ein Fall für den Tags-Filter. Du kannst für "shop" ganz bestimmte Werte zulassen oder verbieten. Müsste jetzt aber selber in der Anleitung blättern, ist zwar peinlich, aber ich hab die osmfilter-Optionen nicht im Kopf. :-)

osmfilter -h
  und
osmfilter --help

Offline

#7 2012-07-16 19:54:02

Asohen
Member
Registered: 2012-07-15
Posts: 7
Website

Re: Folgen von osmfilter ignore-dependencies

Marqqs wrote:

ich weiß nicht, ob es sinnvoll ist, einen Shop-Knoten rauzuwerfen, der Bestandteil einer Straße ist. Die Straße verliert dadurch einen Knoten und ändert ihre Form...

Davon gehe ich aus. Gestern habe ich mal in Potlatch2 einen Tankstellen-Knoten verschoben, der zwischen zwei highway=service saß (ohne zu speichern natürlich); damit habe ich die Straße verändert. Die Eigenschaft "Tankstelle" oder "Shop" bekommt der Knoten nur durch die entsprechenden Tags.

Nun habe ich es mal damit versucht:

osmfilter -v filtered.osm --keep-node-tags="all amenity=fuel =biergarten =cafe =fast_food =food_court =ice_cream =restaurant place=city =town =village =hamlet" -o=filtered3.osm

Dummerweise verschwinden damit z.B. auch die Namen der Tankstellen. Wenn ich "name=" ergänze, könnte es klappen - vorausgesetzt diese Positivliste ist dann vollständig. Doch weiß ich das?
http://taginfo.openstreetmap.org/keys hilft da auch nicht weiter...

Bleibt vorerst der pragmatische Ansatz: Ich lasse meine Karte vorerst wie sie ist und probiere sie länger aus. Falls tatsächlich bestimmte Icons das kleine Display verstopfen, filtere ich sie mit osmfilter einfach heraus (--drop-tags oder --drop-node-tags). Nicht perfekt, aber effizient.

Für Perfektion müsste wohl eine Datenbank ran; mit SQL geht "alles".

Offline

#8 2012-07-16 22:41:43

Marqqs
Member
Registered: 2011-01-01
Posts: 724

Re: Folgen von osmfilter ignore-dependencies

Asohen wrote:

Für Perfektion müsste wohl eine Datenbank ran; mit SQL geht "alles".

Das stimmt, damit geht dann alles. :-)

Warum hast du eigentlich auch "place" im Filter? Was passiert, wenn du das weglässt und nur die amenity-Werte bei "--keep-node-tags=" drin hast? Natürlich muss dann auch das "all" vorne verschwinden.

Offline

#9 2012-07-17 17:14:57

Asohen
Member
Registered: 2012-07-15
Posts: 7
Website

Re: Folgen von osmfilter ignore-dependencies

Marqqs wrote:

Warum hast du eigentlich auch "place" im Filter?

Im Tag-Filter (zweiter Durchgang) habe ich einfach alle Einträge des keep-Object-Filters wiederholt (erster Durchgang).

Erster Durchgang, zum Vergleich:

osmfilter -v germany.osm --drop-version --keep="highway=primary =primary_link =secondary =secondary_link =tertiary =tertiary_link =living_street =residential =unclassified =rest_area =service =road or amenity=fuel =biergarten =cafe =fast_food =food_court =ice_cream =restaurant or place=city =town =village =hamlet" --drop="motor_vehicle=no or motorcycle=no or vehicle=no or access=no" -o=filtered.osm

Im zweiten Durchgang möchte ich zwar nur in den Objekten filtern, die lediglich durch eine Referenz noch in der OSM-Datei sind, aber die referenzierenden Objekte werden vom Tag-Filter ja ebenso erfasst.
Die referenzierenden Objekte möchte ich nicht verändern; aus den referenzierten Objekten hingegen sollen alle Tags verschwinden. Ich habe also unterschiedliche Filterregeln für die primär gewollten (referenzierenden) und die sekundär nötigen (referenzierten) Objekte.
In osmfilter scheint das nicht formulierbar zu sein, oder ich habe osmfilter noch nicht ganz durchschaut - deshalb schreibe ich hier wink

Offline

#10 2012-07-17 17:48:38

Marqqs
Member
Registered: 2011-01-01
Posts: 724

Re: Folgen von osmfilter ignore-dependencies

Asohen wrote:

Im Tag-Filter (zweiter Durchgang) habe ich einfach alle Einträge des keep-Object-Filters wiederholt (erster Durchgang).

Ok, dann warst du wahrscheinlich schon auf dem richtigen Weg.
Hast du mal versuchsweise das "all" bei "--keep-node-tags=" weggelassen?

Offline

#11 2012-07-17 19:44:05

Asohen
Member
Registered: 2012-07-15
Posts: 7
Website

Re: Folgen von osmfilter ignore-dependencies

Marqqs wrote:

Hast du mal versuchsweise das "all" bei "--keep-node-tags=" weggelassen?

Nein, denn "all" adressiert alle angegebenen Tags, unabhängig von deren Werten (das beabsichtige ich).
Ohne "all" werden nur die Tags gelöscht, deren Werte angegeben sind; es werden also Tags behalten, die spezielle Inhalte haben.

osmfilter --help

TAG_FILTER
        The tag filter determines which tags will be kept and which
        will be not. The example
          --keep-tags=highway=motorway =primary
        will not accept "highway" tags other than "motorway" or
        "primary". Note that neither the object itself will be
        deleted, nor the remaining tags. If you want to drop every
        tag which is not mentioned in a list, use this example:
          all highway= amenity= name=

Offline

#12 2012-07-17 19:48:15

kellerma
Member
Registered: 2010-07-18
Posts: 1,623

Re: Folgen von osmfilter ignore-dependencies

Mmh, evetuell funktionokelt Dein Vorhaben, wenn es Dir gelingt, Deine osm zu splitten:
Einmal mit Tankenstellen incl. den "1-Punkt-auf-der-Straße-Tankstelle" und einmal das Komplementäre davon.
Beim ersten könntest Du dann keep-(node-)tags mit names und beim zweiten 'drop all tags' anwenden.
Anschließend beide Resultate wieder zusammenmanschen. Ob dann das "geographischen mergen" per osmconvert noch gelingt?
Versuch mach kluch wink

Offline

#13 2012-07-17 20:21:51

Marqqs
Member
Registered: 2011-01-01
Posts: 724

Re: Folgen von osmfilter ignore-dependencies

Asohen wrote:

Nein, denn "all" adressiert alle angegebenen Tags, unabhängig von deren Werten (das beabsichtige ich).
Ohne "all" werden nur die Tags gelöscht, deren Werte angegeben sind; es werden also Tags behalten, die spezielle Inhalte haben.

Aber dir gehts doch nur darum, dass die unerwünschten Shops nicht erscheinen, das heißt, es reicht, unerwünschte Shop-Tags zu löschen und die übrigen Tags unberührt zu lassen. Vielleicht hab ich es auch falsch verstanden.

Offline

#14 2012-07-17 21:33:29

quasilotte
Member
Registered: 2011-01-29
Posts: 379

Re: Folgen von osmfilter ignore-dependencies

Ich verstehe das Problem nicht mit den zusätzlich enthaltenen Tags?

Die dürfen doch ruhig in den OSM-Daten drin sein.

Wichtig ist wenn ich das richtig gelesen hab (map für eTrex30   = IMG ) das mkgmap dies richtig interpretiert.

mkgmap ist für solche Fälle wesentlich besser geeignet da man für jeden Fall entsprechende STYLES vorgegeben kann als mit osmfilter - das ja eigentlich fast nur eine ja/nein-Filterung zulässt.

Ich selbst gehe bei der IMG erstellung fast immer mit den ungefilterten OSM-Daten rein, was raus kommt leg ich mit den STYLES fest.

osmfilter verwend ich nur um die performace zu verbessern...

Last edited by quasilotte (2012-07-17 21:34:52)

Offline

#15 2012-07-18 19:02:26

Asohen
Member
Registered: 2012-07-15
Posts: 7
Website

Re: Folgen von osmfilter ignore-dependencies

Marqqs wrote:

Aber dir gehts doch nur darum, dass die unerwünschten Shops nicht erscheinen

Die Shops sind nur ein Beispiel; was es sonst noch alles gibt, ist eine lange, für mich nicht zu überblickende Menge.
Aber natürlich ist dieser Ansatz nicht an der Praxis orientiert, sondern eher idealistisch.
Wie ich schon schrieb, dürfte für die Praxis direktes Ausfiltern der wenigen auffälligen Knoten vollkommen genügen smile

Offline

Board footer

Powered by FluxBB