[Talk-de] Semikolon als Trenner (war Re: Paketannahmestellen)
Sarah Hoffmann
lonvia at denofr.de
Di Nov 3 09:07:30 UTC 2009
On Tue, Nov 03, 2009 at 12:49:39AM +0100, Tobias Knerr wrote:
> > wenn das ganze dagegen folgendermassen getaggt ist:
> >
> > amenity = recycling
> > recycling:batteries = yes
> > recycling:glass = yes
> > recycling:paper = yes
> > recycling:cars = no
> >
> > ist das wesentlich aufwendiger zu verarbeiten,
>
> Für welche Zwecke?
>
> Bei den Beispielen, die mir so einfallen, kann ich da keinen
> Zusatzaufwand erkennen. Einfacher Fall: Ich will wissen, ob ein Objekt
> eine Recyclingstelle für (unter anderem) Glas ist.
>
> Pseudocode yes/no:
>
> wenn objekt.wertVon("amenity") ist "recycling"
> und objekt.wertVon("recycling:glass") ist "yes"
> dann ...
>
> Pseudocode Semikolon:
>
> wenn objekt.wertVon("amenity") ist "recycling"
> und objekt.wertVon("recycling").trenneAn("[whitespace]*;")
> .enthält("glass")
> dann ...
>
> Sieht ähnlich aus. Wenn überhaupt ist die Notwendigkeit der Trennung des
> Wertes noch ein zusätzlicher Aufwand.
Leider funktioniert das in der Realität nicht wirklich, weil die meisten
amenity = recycling ohne Zusatztags daherkommen. Das heisst, damit deine
Verarbeitung einigermassen robust ist, möchtest du zusätzlich alle
amenities = recycling finden, die ohne Material-Infos getaggt sind.
Mit Simikolon-Notation ist das programmtechnisch ganz einfach zu
lösen, mit yes/no-Notation wird das ganze extrem aufwändig, weil du
immer alle Tags des Objektes scannen musst.
Oder versuche mal, mit Hilfe von osm2pqsql/Mapnik, eine Karte zu
erzeugen, die tagesaktuell Recycling-Stellen mit den entsprechenden Untertypen
anzeigt. Dort muss beim Import in die Postgresql für jeden
recycling:..-Tag eine eigene Spalte in der DB-Tabelle angelegt
werden. Das heisst, jedes Mal, wenn du eine neue Art von Recycling-
Material anzeigen willst, musst du die Datenbank komplett neu importieren
Das dauert je nach Rechenpower zwischen 2 Tagen und einer Woche.
In der Semikolon-Notation müsste man lediglich eine neue Rendering-
Regel einfügen.
Es ist einfach müssig, Tagging-Schemen aufgrund irgendwelcher Software-
Anforderungen auszuwählen. Dafür gibt es viel zu viele Anwendungs-
möglichkeiten der OSM-Daten, die alle anders funktionieren.
Die Software muss sich da einfach an das existierende anpassen.
Es wäre vermutlich recht einfach, osm2psql so umzuprogrammieren,
dass es mit recyling:...-Tags zurechtkommt, aber genauso hat
der OSM-Composer nicht die geringsten Probleme damit, das
osmc:symbol-Tag zu verstehen, dass mit Doppelpunkt-getrennten
Werten daherkommt.
Gruss
Sarah
Mehr Informationen über die Mailingliste Talk-de