Wie optimiere ich das Openstreetmap Tile Rendering?

8

Ich versuche derzeit, Wasser (3.198.333 Datensätze) und detaillierte Weltgrenzen (process_p) für die Welt zu rendern. Ich kann beide Ebenen erfolgreich rendern, bin aber mit der Leistung nicht zufrieden.

Mein aktuelles Setup ist wie folgt:

  • Amazon EC2-Instanz (m2.2xlarge)
  • 34,2 GB Speicher
  • 13 EC2-Recheneinheiten (4 virtuelle Kerne mit jeweils 3,25 EC2-Recheneinheiten)
  • 850 GB Instanzspeicher
  • 64-Bit-Plattform
  • E / A-Leistung: Hoch
  • Mapnik, 4 Fäden
  • Postgresql-Einstellungen basierend auf diesen Benchmarks
  • GiST-Index für alle meine Ebenen vorhanden

Einige meiner Ideen zur Leistungssteigerung :

  • Vereinfachung meiner Funktionen
  • Keine Wasserfliesen rendern - beim Laden mit offenen Schichten kann der Ladefehler auf die blaue Farbe gesetzt werden
  • Teilen Sie die Wasserspiele der Welt in verschiedene Abschnitte auf und teilen Sie Mapnik explizit seine Grenzen mit. Wenn ich beispielsweise Wasserspiele aus Nordamerika trenne und Mapnik Kacheln für Australien generiert, sollte Nordamerika nicht abgefragt werden, ob sich eines der Merkmale in den Kacheln befindet.
  • Meine zweite Idee ist etwas verrückter. Da Mapnik für jede Kachel eine räumliche Abfrage durchführt, um zu verarbeitende Features zu finden, kann ich diese Abfrage zuvor für alle meine Ebenen durchführen. Ich würde davon ausgehen, dass dies etwas Rechenleistung einsparen würde.

Meine Frage: Was kann ich noch tun, um das Rendern von Kacheln zu optimieren?

RK
quelle
Haben Sie unter "Optimieren des Renderns mit PostGIS" github.com/mapnik/mapnik/wiki/OptimizeRenderingWithPostGIS einige Tipps gesehen?
Mapperz
Hallo Mapperz. Ja, ich habe sichergestellt, dass nur Wasserspiele in meine Datenbank geladen werden. Alle meine Polygone und Linien sind bereits vorgefiltert und sind Wasserspiele. Ich habe auch meine Datenbank gesaugt und die vorgeschlagenen Indizes angewendet.
Hallo, ich habe Mapnik noch nicht verwendet, aber wenn es möglich ist, Kacheln mit bestimmten Zoomstufen oder für bestimmte Bereiche zwischenzuspeichern, wird die Leistung verbessert.
Dango

Antworten: