[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