Jaki jest najszybszy (pod względem wydajności) sposób obsługi funkcji PostGIS?

12

Interesuje mnie najszybszy sposób obsługi funkcji PostGIS. Mogę znaleźć kilka ulepszeń i alternatyw WMS (MapProxy, TileCache, Mapnik ...), ale nie tak wiele ulepszeń i alternatyw WFS Open Source. Nie interesują mnie płytki, ale wielokąty nad moją warstwą podstawową. Podawane szybko.

Czy możesz mi proszę wskazać właściwy kierunek?


Aktualizacja:

Zapomniałem wspomnieć, że moja aplikacja wyświetla informacje katastralne. Wielokąty katastralne muszą być możliwe do wybrania (nie można ich edytować, są podświetlane tylko po kliknięciu).

Używam teraz mieszanki WMS + Django generujących obiekty GeoJSON, gdy użytkownik kliknie część mapy, aby uniknąć sytuacji takich jak tysiące wielokątów w tym samym czasie w kliencie (OpenLayers).

Nie wiem, czy jestem we właściwy sposób (czy powinienem unikać potencjalnie trudnych sytuacji, takich jak tysiące ankiet w kliencie, renderując je za pomocą WMS lub innego rozwiązania? Czy powinienem poprawić sposób obsługi wielokątów?)

Jorge Arévalo
źródło
1
Jaki masz sprzęt?
Mapperz
Ubuntu 10.04 32 bity 512 MB RAM, działający na serwerze VMWare. To maszyna programistyczna, ale nie mam jeszcze dostępu do innej. Powinno tu działać dość dobrze (konieczny)
Jorge Arévalo

Odpowiedzi:

6

GeoServer zapewnia ustawienie użytkownika do kontrolowania liczby miejsc dziesiętnych w geometrii, które zostały tam wprowadzone, aby przyspieszyć obsługę WFS.

Upewnij się również, że serwer kompresuje dane wyjściowe tylko wtedy, gdy klient może je skutecznie zdekompresować.

Wreszcie usłyszałem dobre rzeczy o maleńkim OWS pod względem prędkości.

Ian Turton
źródło
Słyszałem o małym OWS, ale nigdy go nie użyłem. Dzięki za sugestie!
Jorge Arévalo,
6

Buforowanie WFS może odpowiadać Twoim potrzebom. O ile mi wiadomo, istnieją dwa rozwiązania typu open source zapewniające buforowanie WFS: TileStache i GeoWebCache .

Na stronie głównej TileStache, sekcja funkcji jest napisane: „Generuje kafelki wektorowe ze źródeł danych OGR w GeoJSON, które można używać w polymapach”

GeoWebCache ma pewne funkcje buforowania WFS od wersji 1.1.0 (bieżąca to 1.2.6):

Wydano GeoWebCache 1.1.0 (wreszcie)

...

1.c Podstawowe buforowanie WFS GeoWebCache 1.1.0 obsługuje bardzo podstawowe buforowanie WFS. Wyniki kwerend są przechowywane na dysku, obecnie nie ma funkcji do ich sprawdzania lub programowego usuwania. Algorytm opiera się na obliczonych skrótach i nie sprawdza wyjątkowości, więc istnieje niewielka szansa na kolizję. Motywacją tego rozwoju był format wyjściowy SHP-ZIP (zip-shapefile) w GeoServer. Pliki te mogą być ogromne i niezwykle drogie w obliczeniach. Ta usługa WFS w obecnym stanie nie jest przeznaczona do użytku w bardziej skomplikowanych przypadkach.

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

Niestety nigdy nie pracowałem z TileStache ani GeoWebCache, więc nie mogę dzielić się żadnym doświadczeniem na temat buforowania WFS.

dariapra
źródło
Dzięki. Rozważam 2 opcje: renderuj moje wielokąty i podaj je za pomocą pamięci podręcznej WMS + (są ich miliony, może za dużo dla klienta ...) lub spróbuj obsłużyć moje wielokąty za pomocą pamięci podręcznej WFS +. Pracuję teraz z pierwszą opcją.
Jorge Arévalo,
1
Polecam pierwszą opcję (renderowanie WMS po stronie serwera + pamięć podręczna). Opcja WFS oznacza, że ​​renderowanie będzie wykonywane po stronie klienta. Z mojego doświadczenia wynika, że ​​jest to problem dla użytkowników posiadających stare przeglądarki lub komputery, zmienną, której nie można kontrolować.
dariapra,
3

Rozwijam duży web-gis, pracuję z dużą ilością danych (około 700 000 funkcji na warstwę) Jedynym rozwiązaniem jest to, co robisz, WMS do renderowania funkcji i WFS do uzyskiwania informacji o funkcji. Co robię (z dobrą wydajnością) to:

  • Geoserver (z natywną biblioteką JAI )
  • Gdy użytkownik kliknie mapę, wms getfeatureinfo służy do uzyskania informacji (zarówno kształtu, jak i danych) o wybranej funkcji (tutaj należy zaimplementować funkcję filtrowania, jeśli masz nakładające się funkcje)
  • Wynik getFeatureInfo jest dodawany jako funkcja na innej warstwie w celu symulacji „podświetlenia zaznaczenia”
Tommaso
źródło
Dzięki! Projekt został ostatecznie anulowany, ale myślę, że twoje rozwiązanie jest dobre.
Jorge Arévalo,