Moin!

Am 01.02.2011 19:41, schrieb Frederik Ramm:
Stephan Wolff wrote:
Der von mir erstellten Regeln führen leider zu sehr sehr langen
Renderzeiten.

So komplizierte Regeln sind dann halt schon ein gutes Argument fuer eine
eigene Datenbank, in der man diese Sachen, die man staendig braucht,
ueber Trigger vorberechnen laesst.

Ich wollte doch nur eine einfache Overlaykarte basteln und hatte schon
Mühe genug, mich in die Mapnik-Konfiguration einzuarbeiten. Jetzt soll
ich auch noch eine Datenbank erstellen und pflegen ;-)

Ausserdem hat die Standard-Datenbank
auch keine Indexe ausser dem geografischen; Deine Abfragen sind ja oft:

select "haufen krimskrams" from planet_osm_line where power="line"

da wird dann ueber den GIN-Index alles rausgesucht, was in dem geogr.
Bereich ist, und per table scan dann jede einzelne Linie angechaut, ob
sie vielleicht power=line hat.

Ich habe leider nicht genau verstanden, wie das render-Skript die
Abfragen zusammensetzt. Wenn erst die Datenbankobjekte zuerst
geografisch selektiert werden und danach der Test auf power="line"
stattfindet, dann sollte  "haufen krimskrams" nur für wenige bis
wenige hundert Objekte (je nach  Zoomlevel) ausgeführt werden.
Laut tagwatch gibt es in Deutschland knapp 12000 mal power=line.
Die Standardkarte ruft "select * from planet_line where power='line'"
zusammen mit vielen weiteren Abfragen problemlos auf.

In einer eigenen Datenbank koenntest Du
einen kombinierten geografischen Index mit "power=line" machen, dann
ginge das schneller. (Eventuell kannst Du die toolserver-Betreiber ja zu
so einem Index ueberreden.) Alternativ koennte man auch power=line in
die planet_osm_roads-Tabelle kopieren lassen, in der hat man normal die
Autobahnen und andere grossraeumige Sachen, da ist der Zugriff
schneller, weil weniger Kleinkram drin liegt.

Wenn das die einzige, praktikable Lösung ist, muss ich darüber nachdenken, ob und wie der Vorschlag umsetzbar ist.

Ansonsten rate ich dazu, das Loggin einzuschalten und mittels Verstand
und/oder der Skripte in applications/rendering/mapnik/utils genauer
herauszufinden, welche der Abfragen die Probleme machen.

Das habe ich getan. Ganz trivial sind auch Tests in psql nicht, da die
Rechenzeit stark davon abhängt, ob dieselben Daten zuvor mit einer
anderen Abfrage selektiert wurden. Teilweise war die zweite, ähnliche
Abfrage um einen Faktor 10 schneller.
Zweifellos sind die geschachtelten Aufrufe
select "haufen krimskrams" from (select "nochmehr krimskrams" from ...)
für power=line und power=generator langsam. Ich weiß leider nicht, wie
ich sie bei gleicher Funktion beschleunigen kann.

Viele Grüße, Stephan



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

Antwort per Email an