Opzioni per la visualizzazione dei raster PostGIS in OpenLayers


12

Questa domanda è simile a una domanda precedente sulla visualizzazione di dati vettoriali in una mappa Web. Voglio avere un'interfaccia web di base che utilizza OpenLayer e può visualizzare dati raster che si trovano attualmente in PostGIS, utilizzando una mappa di base come Google. Ho installato PostGIS2.0 con la libreria raster e dalla documentazione vedo che esistono diverse opzioni per l'output di dati, come JPEG, GeoTIFF e PNG. È un formato consigliato da usare?

Per visualizzare i dati vettoriali sto attualmente utilizzando JavaScript per inviare coordinate dal browser dell'utente al mio server e quindi eseguire una query utilizzando PHP / SQL su PostGIS. I risultati vengono quindi restituiti come GeoJSON che può essere sovrapposto sulla mappa di base. Mi chiedevo se un approccio simile potesse essere applicato usando i raster ma non so quale sia il formato raster migliore o se ci siano altri vincoli che dovrei considerare.

Ho visto molti riferimenti a GeoServer ma non sono sicuro che sia necessario per questo progetto (non sono del tutto sicuro quando GeoServer dovrebbe essere usato o meno).

Risposte:


13

I raster sono immagini , quindi il formato migliore sarà un formato immagine (png / jpg / ecc.). Geojson è un buon formato per i vettori . Non vedrai mai, per esempio, che la tua foto del profilo di Facebook verrà riportata come puro json. Naturalmente, restituire un URL a un'immagine come JSON è molto diverso :)

Per quanto riguarda il jpeg vs png vs qualsiasi altra discussione sul formato delle immagini, ci sono tonnellate di opinioni diverse al riguardo . Ciò che si riduce è che alcuni formati di immagine sono senza perdita mentre altri sono con perdita . La tua decisione dipende da cosa hai intenzione di fare con i dati. Per l'analisi potresti non tollerare la perdita, ma per la visualizzazione di cose sul web lo faresti.

PostGIS 2.0 può generare immagini? Sicuro. Guarda la sezione di output Raster.

E 'questa una buona idea? Dipende davvero molto da quello che stai facendo. A volte la generazione di immagini può richiedere molto tempo davvero molto lungo e si desidera memorizzarle nella cache per evitare di pagare il prezzo per generarle ogni volta che le si richiede attraverso un ambiente Web. L'unica "memorizzazione nella cache" che puoi eseguire sul lato PostGIS è salvare i risultati in una tabella diversa e quindi eseguire una query sulla tabella invece quando ne hai bisogno. Geoserver ha un'intera infrastruttura ( GeoWebCache ) per farlo.

Hai bisogno di GeoServer, probabilmente no - ma ti semplifica la vita quando hai questo middleware che espone tutti i tuoi dati usando i servizi web OGC , fa cache , styling di vettori e raster un sacco di cose in più .


Capisco come generare un'immagine usando PostGIS: quello che sto cercando di capire è il modo migliore per caricarlo in Openlayers. Ad esempio, se uso ST_AsPNG (), dovrò comunque identificare le coordinate superiore e inferiore in cui è posizionata l'immagine. Ho pensato che potesse esserci un modo pulito per restituire un'immagine autonoma che avrei potuto caricare direttamente in openlayer (oltre a usare un geoserver).
djq,

Sì, puoi caricarlo direttamente su openlayer da st_aspng, ma richiederà un lavoro extra. Devi quindi tenere traccia del bbox e specificarlo quando lo carichi dev.openlayers.org/apidocs/files/OpenLayers/Layer/Image-js.html Fidati di me, è la strada lunga. Faresti meglio a lasciare che sia geoserver o mapserver a farlo. Ti restituiscono WMS / WMTS e usi due righe di codice per aggiungerlo agli openlayer.
Ragi Yaser Burhum,

4

Mapserver ha il supporto per i raster postgis e le indicazioni per una configurazione di base sono fornite qui (elemento 9.9).

Nel tuo caso dovresti configurare Mapserver in modo che funzioni come un server WMS in modo che restituisca i raster Postgis come normali livelli WMS. È quindi quasi banale aggiungere i layer nella mappa OpenLayers usando un oggetto layer WMS .

Questo tipo di soluzione è probabilmente l'opzione migliore perché è tutto basato sul software OpenSource, è uno stack collaudato e non richiede un middleware completo. Tutto ciò di cui ha bisogno un server di mappe è un server web (l'apache che probabilmente stai già utilizzando per php è ok) che può eseguire script cgi. Se le prestazioni non sono un problema critico, puoi evitare di utilizzare una cache (tile) e fare in modo che Mapserver esegua il rendering dei layer al volo ogni volta.

Se si desidera memorizzare nella cache i riquadri per ridurre al minimo il carico del server e migliorare i tempi di risposta, considerare l'utilizzo di mapcache o tilecache . Mapcache è un progetto sorella minore di Mapserver, ma dovrebbe superare le prestazioni di tutte le altre cache mentre viene eseguito come modulo apache.

Per gli utenti di Ubuntu il modo più semplice per installare le dipendenze di Mapserver è aggiungere Ubuntu GIS PPA al sistema.


Mapserver è sicuramente un'ottima alternativa a GeoServer (lo uso per altri progetti). In genere, scelgo geoserver per i miei clienti perché ha un'interfaccia facile da usare. Ciononostante, volevo sottolineare che servire cache di tile serve contenuto statico e che qualsiasi soluzione basata su nginx (o qualsiasi altro server non bloccante) sarebbe molto più veloce di qualsiasi soluzione apache - in isolamento basato sul processo o in modalità thread.
Ragi Yaser Burhum,

Grazie @unicoletti. Posso utilizzare Mapserver se desidero generare raster in base alla query degli utenti? Ad esempio, se permetto agli utenti di specificare un'area (entro un certo limite), mi consentirà di effettuare una query spaziale di quell'area?
djq,

@celenius Mapserver e GeoServer ti consentiranno entrambi di farlo.
Ragi Yaser Burhum,

1
@RagiYaserBurhum Confronto mapcache con altre cache. Le tessere statiche non stanno parlando strettamente di una cache.
unicoletti,

0

Tutto dipende. Dimensione dell'immagine, memorizzazione nella cache, librerie disponibili (ad esempio alcuni driver proprietari jp2k).

Ecco un link a un fantastico pdf , Geoserver su steroidi. Questo ti guiderà attraverso i vari formati, i loro pro e contro e alcune impostazioni di base.

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.