Qual è il modo più veloce (per quanto riguarda le prestazioni) di servire le funzionalità PostGIS?


12

Sono interessato al modo più veloce di servire le funzionalità di PostGIS. Posso trovare diversi miglioramenti e alternative WMS (MapProxy, TileCache, Mapnik ...) ma non così tanti miglioramenti e alternative WFS Open Source. Non mi interessano le tessere, ma i poligoni sul mio strato base. Servito veloce.

Potresti indicarmi la giusta direzione, per favore?


Aggiornare:

Ho dimenticato di dire che la mia app mostra informazioni catastali. E i poligoni catastali devono essere selezionabili (non modificabili, vengono evidenziati solo quando si fa clic su di essi).

Sto usando in questo momento un mix di WMS + Django che genera oggetti GeoJSON quando l'utente fa clic su una parte della mappa, per evitare situazioni come migliaia di poligoni contemporaneamente nel client (OpenLayers).

Non so se sono nel modo giusto (dovrei evitare situazioni potenzialmente difficili come migliaia di pol nel client rendendole tramite WMS o qualsiasi altra soluzione? Dovrei migliorare il modo in cui vengono serviti i poligoni?)


1
Che hardware hai?
Mapperz

Ubuntu 10.04 32 bit 512 MB di RAM, in esecuzione su un server VMWare. È una macchina di sviluppo, ma non ne ho ancora accesso a un'altra. Dovrebbe funzionare ragionevolmente bene qui (un requisito)
Jorge Arévalo,

Risposte:



6

GeoServer fornisce un'impostazione utente per controllare il numero di posizioni decimali nelle geometrie inserite per accelerare la pubblicazione di WFS.

Assicurarsi inoltre che il server comprima l'output solo se il client può decomprimerlo in modo efficiente.

Finalmente ho sentito cose positive sui piccoli OWS in termini di velocità.


Ho sentito parlare di piccoli OWS ma non l'ho mai usato. Grazie per il suggerimento!
Jorge Arévalo,

6

La memorizzazione nella cache WFS potrebbe soddisfare le tue esigenze. Per quanto ne so, esistono due soluzioni open source che forniscono la memorizzazione nella cache WFS: TileStache e GeoWebCache .

Nella home page di TileStache, si dice "Genera riquadri vettoriali da origini dati OGR in GeoJSON utilizzabili in Polymaps"

GeoWebCache ha alcune funzionalità di memorizzazione nella cache WFS dalla versione 1.1.0 (quella attuale è 1.2.6):

Rilasciato GeoWebCache 1.1.0 (finalmente)

...

1.c Caching WFS di base GeoWebCache 1.1.0 supporta il caching WFS di base. I risultati delle query sono memorizzati su disco, al momento non ci sono funzioni per ispezionarle o rimuoverle a livello di programmazione. L'algoritmo si basa su hash calcolati e non verifica l'unicità, quindi esiste una possibilità minima di collisioni. La motivazione di questo sviluppo è stata il formato di output SHP-ZIP (zippato shapefile) in GeoServer. Questi file possono essere enormi e tremendamente costosi da calcolare. Questo servizio WFS non è, allo stato attuale, destinato a casi più complicati.

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

Sfortunatamente non ho mai lavorato con TileStache né GeoWebCache, quindi non posso condividere alcuna esperienza sulla memorizzazione nella cache WFS.


Grazie. Sto considerando 2 opzioni: renderizzare i miei poligoni e servirli tramite cache WMS + (ce ne sono milioni, forse troppo per il client ...) o provare a servire i miei poligoni tramite cache WFS +. Sto lavorando con la prima opzione in questo momento.
Jorge Arévalo,

1
Consiglio la prima opzione (rendering WMS sul lato server + cache). L'opzione WFS implica che il rendering verrà eseguito sul lato client. Nella mia esperienza, questo è un problema per gli utenti che hanno vecchi browser o computer Web, una variabile che non puoi controllare.
dariapra,

3

Sto sviluppando un grande web-gis, lavoro con molti dati (circa 700.000 funzionalità per livello) L'unica soluzione è quella che stai facendo, WMS per il rendering delle funzionalità e WFS per ottenere le informazioni sulle funzionalità. Quello che sto facendo (con buone prestazioni) è:

  • Geoserver (con libreria JAI nativa )
  • Quando l'utente fa clic sulla mappa, viene utilizzata una wf getfeatureinfo per ottenere le informazioni (sia la forma che i dati) della funzione selezionata (qui è necessario implementare alcune funzionalità di filtro, se si hanno funzioni sovrapposte)
  • Il risultato di getFeatureInfo viene aggiunto come funzionalità su un altro livello per simulare il "momento saliente della selezione"

Grazie! Il progetto è stato finalmente annullato, ma penso che la tua soluzione sia valida.
Jorge Arévalo,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.