Hallo,
Am Montag 11 Oktober 2010 10:54:28 schrieb M∡rtin Koppenhoefer:
> Am 11. Oktober 2010 10:30 schrieb Frederik Ramm <frede...@remote.org>:
> > Hallo,
> >
> > Wolfgang wrote:
> >> Hier argumentierst du mit den Unzulänglichkeiten des Datenbankschemas
> >> und von osm2pgsql. Wenn das in das bestehende Schema nicht passt, muss
> >> es eben angepasst werden.
> >
> > Darunter leidet halt auch die Effizienz. Das verstehe ich schon, dass die
> > Programmierer dazu keine Lust haben.
> 
> Eine pauschale Möglichkeit wäre, vor dem Verarbeiten alle values zu
> parsen und aus amenity=bank;atm einen automatisch 2 duplicate nodes zu
> generieren, die jeweils bank und atm als value haben. Wird vermutlich
> allerdings ne Weile dauern, wenn man den Planet damit durchackern
> will.
0/-1

In deinem speziellen Beispiel ginge das, aber für das Beispiel Amenity oder 
Cuisine geht es nicht, weil damit die Statistik in die Tonne getreten würde. 
Wer das für seine Auswertung so machen will, dem steht das frei.
> 
> Ein pragmatischer Ansatz wäre evtl. auch schonmal, die Reihenfolge
> vorzugeben (alphabetisch), mit der doppelte Werte eingetragen werden.
> Dann könnte man "cafe;restaurant", "atm;bank" und was einem sonst noch
> so am Herzen liegt, mit endlichem Aufwand als einen Wert definieren.
> Skaliert natürlich nicht, aber könnte ein paar Spezialfälle abfangen,
> ohne dass man auch noch jeweils "bank;atm" und "restaurant;cafe"
> prüfen müsste.

Hier habe ich ein grundlegendes Verständnisproblem - ich finde das Problem 
einfach nicht. Wenn ich das Datenschema nicht anpasse, bekomme ich für den key 
amenity den Value "cafe;restaurant". Jetzt mit einer klitzekleinen 
Programmzeile eben prüfen, ob ein Semikolon vorliegt, und im Falle, dass 
dieses zutrifft, einen Value-Array mit den einzelnen durch Semikolon(s) 
getrennten Werten erzeugen. Hier den ersten Wert dem Value wieder zuweisen und 
den übrigen Programmablauf so lassen, wie bisher. Damit wird ausschließlich 
der erste Wert benutzt. 

Nicht optimal, aber für den 08-15-Renderer eine brauchbare Möglichkeit. Geht 
viel schneller als die ganzen Diskussionen über das Semikolon in nicht nur 
diesem Thread.

Die Idee mit der Sortierung ist auch nicht schlecht. Wenn ich den erzeugten 
Value-Array noch sortieren lasse, kann ich auf bestimmte Kombinationen 
abprüfen. Das geht allerdings auch ohne Sortierung.

Wer den Programmablauf beschleunigen will, könnte für die Keys und Values in 
der DB eine zusätzliche Spalte für Integers einführen. Dann bekäme jeder Key 
und Value eindeutige int, die nur einmal erzeugt werden muss (und einmal für 
den Inhalt jedes Updates). Die Queries könnten dann integers zurückgeben, die 
viel schneller (automatisch) auszuwerten sind.
Nur so als Idee. Zugegeben einmalig viel Aufwand. Beschleunigt aber erheblich 
mehr, als die Auswertung von ein paar Semikolons sonst kosten könnte.

Gruß, Wolfgang

_______________________________________________
Talk-de mailing list
Talk-de@openstreetmap.org
http://lists.openstreetmap.org/listinfo/talk-de

Antwort per Email an