Wie können PostGIS-Funktionen am schnellsten (in Bezug auf die Leistung) bereitgestellt werden?

12

Ich bin an der schnellsten Möglichkeit interessiert, PostGIS-Funktionen bereitzustellen. Ich kann verschiedene WMS-Verbesserungen und Alternativen finden (MapProxy, TileCache, Mapnik ...), aber nicht so viele WFS Open Source-Verbesserungen und Alternativen. Ich interessiere mich nicht für Fliesen, sondern für Polygone über meiner Grundschicht. Schnell serviert

Könnten Sie mir bitte die richtige Richtung zeigen?


Aktualisieren:

Ich habe vergessen zu erwähnen, dass meine App Katasterinformationen anzeigt. Und Katasterpolygone müssen auswählbar sein (nicht bearbeitbar, sie werden nur hervorgehoben, wenn Sie darauf klicken).

Ich verwende momentan eine Mischung aus WMS + Django, die GeoJSON-Objekte generiert, wenn der Benutzer auf einen Teil der Karte klickt, um Situationen wie Tausende von Polygonen gleichzeitig im Client (OpenLayers) zu vermeiden.

Ich weiß nicht, ob ich auf dem richtigen Weg bin (sollte ich potenziell schwierige Situationen wie Tausende von Polen im Client vermeiden, indem ich sie über WMS oder eine andere Lösung wiedergebe? Sollte ich die Art und Weise verbessern, in der die Polygone bedient werden?)

Jorge Arévalo
quelle
1
Welche Hardware hast du?
Mapperz
Ubuntu 10.04 32 Bit 512 MB RAM, ausgeführt unter einem VMWare-Server. Es ist eine Entwicklungsmaschine, aber ich habe noch keinen Zugriff auf eine andere. Es sollte hier einigermaßen gut funktionieren (eine Voraussetzung)
Jorge Arévalo

Antworten:

6

GeoServer bietet eine Benutzereinstellung zum Steuern der Anzahl der Dezimalstellen in den Geometrien, die dort eingegeben wurden, um das WFS-Serving zu beschleunigen.

Stellen Sie außerdem sicher, dass der Server die Ausgabe nur komprimiert, wenn Ihr Client sie effizient dekomprimieren kann.

Schließlich habe ich gute Dinge über winzige OWS in Bezug auf die Geschwindigkeit gehört.

Ian Turton
quelle
Ich habe von winzigen OWS gehört, es aber nie benutzt. Danke für den Vorschlag!
Jorge Arévalo
6

WFS-Caching entspricht möglicherweise Ihren Anforderungen. Soweit ich weiß, gibt es zwei Open-Source-Lösungen, die WFS-Caching anbieten : TileStache und GeoWebCache .

Auf der Startseite von TileStache im Bereich Features heißt es: "Erzeugt Vektorkacheln aus OGR-Datenquellen in GeoJSON, die in Polymaps verwendet werden können."

GeoWebCache verfügt seit Version 1.1.0 über einige WFS-Caching-Funktionen (die aktuelle Version ist 1.2.6):

GeoWebCache 1.1.0 (endlich) veröffentlicht

...

1.c Grundlegendes WFS-Caching GeoWebCache 1.1.0 unterstützt sehr einfaches WFS-Caching. Die Ergebnisse von Abfragen werden auf der Festplatte gespeichert. Derzeit gibt es keine Funktionen zum Überprüfen oder programmgesteuerten Entfernen von Abfragen. Der Algorithmus basiert auf berechneten Hashes und prüft nicht auf Eindeutigkeit. Daher besteht eine winzige Wahrscheinlichkeit für Kollisionen. Die Motivation für diese Entwicklung war das SHP-ZIP-Ausgabeformat (Zip Shapefile) in GeoServer. Diese Dateien können sehr groß und enorm teuer in der Berechnung sein. Dieser WFS-Dienst ist in seinem aktuellen Status nicht für kompliziertere Fälle vorgesehen.

http://old.nabble.com/GeoWebCache-1.1.0-(finally)-released-td22870524.html

Leider habe ich noch nie mit TileStache oder GeoWebCache gearbeitet. Daher kann ich keine Erfahrungen mit WFS-Caching teilen.

Dariapra
quelle
Vielen Dank. Ich überlege mir zwei Möglichkeiten: Rendere meine Polygone und versorge sie über WMS + Cache (es gibt Millionen davon, vielleicht zu viel für den Client ...) oder versuche, meine Polygone über WFS + Cache zu versorgen. Ich arbeite gerade mit der ersten Option.
Jorge Arévalo
1
Ich empfehle die erste Option (WMS-Rendering auf Serverseite + Cache). Die WFS-Option impliziert, dass das Rendern auf Client-Seite durchgeführt wird. Nach meiner Erfahrung ist dies ein Problem für Benutzer mit alten Webbrowsern oder Computern, eine Variable, die Sie nicht steuern können.
Dariapra
3

Ich entwickle ein großes Web-GIS, ich arbeite mit einer Menge Daten (ungefähr 700.000 Features pro Layer). Die einzige Lösung ist die, die Sie tun, WMS zum Rendern der Features und WFS zum Abrufen von Feature-Informationen. Was ich mache (mit guter Leistung) ist:

  • Geoserver (mit nativer JAI- Bibliothek)
  • Wenn der Benutzer auf die Karte klickt, wird ein wms getfeatureinfo verwendet, um die Informationen (sowohl Form als auch Daten) des ausgewählten Features abzurufen (hier sollten Sie einige Filterfunktionen implementieren, wenn Sie Features überlappt haben).
  • Das Ergebnis von getFeatureInfo wird als Feature auf einer anderen Ebene hinzugefügt, um die "Auswahlhervorhebung" zu simulieren.
Tommaso
quelle
Vielen Dank! Das Projekt wurde endgültig abgebrochen, aber ich denke, Ihre Lösung ist gut.
Jorge Arévalo