[Talk-de] api-download bei semikon-getrennten-values
Wolfgang
wolfgang at ivkasogis.de
Mo Okt 11 09:38:44 UTC 2010
Hallo,
Am Montag 11 Oktober 2010 10:54:28 schrieb M∡rtin Koppenhoefer:
> Am 11. Oktober 2010 10:30 schrieb Frederik Ramm <frederik at 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
Mehr Informationen über die Mailingliste Talk-de