Il protocollo WCS - Laboratorio di Geomatica
Transcript
Il protocollo WCS - Laboratorio di Geomatica
Andrea Aime Geoserver, protocollo WCS Geoserver lead developer The Open Planning Project Geoserver, un server OpenSDI a standard OGC Como 22/01/2007 WCS, Web Coverage Service Così come WFS, si lavora a livello di livello di “codice sorgente” dell'informazione geografica. Presuppone un approccio a campi. Gli oggetti territoriali di WCS si chiamano Grid Coverage, hanno una estensione (non necessariamente bi-dimensionale), una risoluzione, una o più bande informative. Mentre per i vettoriali il formato standard è GML, in WCS deve essere supportato almeno uno fra una rosa di formati (GeoTIFF, HDF-EOS, DTED, NITF, GML) Geoserver 1.5.x implementa WCS 1.0 e supera i test CITE relativi. 2 Grid Coverage, il presente Le grid coverage supportate al momento sono bidimensionali Il supporto è stato testato estensivamente su immagini satellitari semplici, in mosaico, o su piramide, in true color Il supporto a raster “geofisici” è presente, ma non altrettanto testato Lo stesso si può dire per immagini con palette (256 o più colori) In Geoserver, il supporto WCS ha permesso di supportare anche i raster nel WMS (Geoserver 1.4.0 non è in grado di gestire dati raster). 3 Grid coverage, il futuro Supporto completo al RasterSymbolizer (vedi descrizione di SLD nella presentazione WMS) Si sta parlando di supporto a grid n-dimensionali (ora possono essere simulate col supporto multi-banda se la terza dimensione ha un dominio finito e “piccolo”) 4 Formati standard in ingresso GeoTIFF nelle sue varie forme. In particolare, per servire mappe tramite WMS, si consiglia di effettuare il tiling interno e di aggiungere le overview (con GDAL, anche se stiamo sviluppando tool specifici). Immagine + world file + projection file (proiezione in formato wkt) ArcGRID Gtopo30 In lavorazione, abbiamo ECW e JPEG2000 (appoggiandosi su GDAL), e NetCDF 5 Formati di ingresso non standardizzati Mosaico di immagini Supporta tiling regolare o immagini sovrapposte Usa uno shapefile di appoggio per la descrizione delle envelope e l'indicizzazione, esattamente come MapServer Può essere prodotto con gdaltindex, ma richiede un file di proprietà ulteriore. Piramide di immagini Si tratta di un insieme di mosaici regolari contenuti in cartelle separate Un file di proprietà lega le risoluzioni alle cartelle, consentendo di scegliere il livello più appropriato alla richiesta WCS o WMS Esistono strumenti per crearlo, piuttosto primitivi al momento 6 Scalabilità In linea generale, le Geotiff con overview complete (livelli per potenze di due) sono piuttosto veloci, si possono servire senza difficoltà raster di centinaia di megabyte o pochi gigabyte Le piramidi sono consigliate quando i dati sono svariati gigabyte e devono scalare dalla piena risoluzione alla overview di piccola scala Come ha commentato un utente sulla mailing list: AA: I'm doing other tests, since apparently a 1.4GB image is not big enough to show a performance difference (between pyramid and overviews) VS: Hey, that's peanuts. Be a man, try mosaicing all SRTM data. But watch out for the tiff 2 or 4 Gb limit. NDR: 14GB di GTIFF in .zip, si possono scaricare da ftp://srtm.csi.cgiar.org/srtm_v3/SRTM_Data_GeoTiff/) 7 WCS, operazioni GetCapabilities DescribeCoverage GetCoverage La specifica WCS non prevede, al momento, un WCS-T (coverage modificabili) 8 WCS GetCapabilities E' la carta di identità del server, il punto di accesso che consente di conoscerlo, di sapere quali dati fornisce e cosa può fare Analogo a quello di WFS, in questo caso abbiamo una descrizione sommaria delle coverage: ... <CoverageOfferingBrief> <metadataLink about="http://www.geotools.org/WorldImageReader+formats" metadataType="other"/> <description>Generated from img_sample2</description> <name>nurc:Pk50095</name> <label>Pk50095 is a A raster file accompanied by a spatial data file</label> <lonLatEnvelope srsName="urn:ogc:def:crs:OGC:1.3:CRS84"> <gml:pos>12.999446822650462 46.722110379286</gml:pos> <gml:pos>13.308182612644663 46.91359611878293</gml:pos> </lonLatEnvelope> <keywords> <keyword>WCS</keyword> <keyword>img_sample2</keyword> <keyword>Pk50095</keyword> </keywords> </CoverageOfferingBrief> ... 9 WCS DescribeCoverage Analoga a DescribeFeature, consente di conoscere la struttura della coverage: Dominio spaziale e temporale Attributi e loro struttura (possono essere semplici scalari, oppure vettori, o “compound”, ad esempio, radiazione per lunghezza d'onda, con vari range di l.o.) CRS in cui la coverage può essere richiesta e fornita Formati in cui la coverage può essere prodotta La risposta può essere molto complessa nel caso generale. Nel caso specifico di Geoserver, si lavora con immagini a bande per cui i range sono semplici intervalli o enumerazioni 10 WCS DescribeCoverage, un assaggio dello schema 11 DescribeCoverage, Gtopo30, pag 1 <?xml version="1.0" encoding="UTF-8"?> <CoverageDescription ...> <CoverageOffering> ... omesso la parte comune con GetCapabilities <domainSet> <spatialDomain> <gml:Envelope srsName="EPSG:4326"> <gml:pos>-19.999999999999996 40.000000000019995</gml:pos> <gml:pos>19.99999999998401 90.0</gml:pos> </gml:Envelope> <gml:RectifiedGrid dimension="2"> <gml:limits> <gml:GridEnvelope> <gml:low>0 0</gml:low> <gml:high>4800 6000</gml:high> </gml:GridEnvelope> </gml:limits> <gml:axisName>Lon</gml:axisName> <gml:axisName>Lat</gml:axisName> <gml:origin> <gml:pos>-19.999999999999996 90.0</gml:pos> </gml:origin> <gml:offsetVector>0.00833333333333 0.0</gml:offsetVector> <gml:offsetVector>0.0 -0.00833333333333</gml:offsetVector> </gml:RectifiedGrid> </spatialDomain> </domainSet> 12 DescribeCoverage, Gtopo30, pag 2 <rangeSet> <RangeSet> <name>nurc:gtopo30_Coverage</name> Un solo asse, “Band”, <label>DTED Example (W020N90)</label> con un solo possibile valore, 1. <axisDescription> Per GeoTIFF RBG avremo un asse, <AxisDescription> Band, con tre valori 1,2,3 <name>Band</name> <label>Band</label> <values><singleValue>1</singleValue></values> </AxisDescription> </axisDescription> <nullValues><singleValue>0</singleValue></nullValues> </RangeSet> </rangeSet> <supportedCRSs> <requestResponseCRSs>EPSG:4326</requestResponseCRSs> </supportedCRSs> <supportedFormats nativeFormat="Gtopo30"> <formats>GTOPO30</formats> <formats>GeoTIFF</formats> <formats>PNG</formats> Il codice supporta anche <formats>GIF</formats> interpolazione bi e tri lineare <formats>TIFF</formats> </supportedFormats> <supportedInterpolations default="nearest neighbor"> <interpolationMethod>nearest neighbor</interpolationMethod> </supportedInterpolations> </CoverageOffering> </CoverageDescription> 13 GetCoverage Richiesta di una coverage, specificando: Formato della coverage generata Dominio richiesto (spazio e tempo) CRS Attributi richiesti (quali assi, quali valori degli assi) Metodo di interpolazione Nuovamente, la richiesta in XML è abbastanza sofisticata La chiamata può essere effettuata anche come GET 14 Esempio di GetCoverage (POST) <GetCoverage service="WCS" ...> <sourceCoverage>nurc:Arc_Sample</sourceCoverage> <domainSubset> <spatialSubset> <gml:Envelope srsName="EPSG:4326"> <gml:pos>9.420000076293944 42.20000076293945</gml:pos> <gml:pos>11.819999694824217 43.90000049273173</gml:pos> </gml:Envelope> <gml:Grid dimension="2" srsName="EPSG:4326"> <gml:limits> <gml:GridEnvelope> <gml:low>0 0</gml:low> E' necessario specificare <gml:high>120 85</gml:high> o una griglia, </gml:GridEnvelope> </gml:limits> o una risoluzione <gml:axisName>Band</gml:axisName> </gml:Grid> </spatialSubset> </domainSubset> <rangeSubset> <axisSubset name="Band"> <singleValue>1</singleValue> </axisSubset> </rangeSubset> <output> <crs>EPSG:4326</crs> <format>TIFF</format> </output> </GetCoverage> 15 WCS, i client Impostare una richiesta WCS a mano è piuttosto laborioso Allo stesso tempo, i client sono carenti: GAIA3 supporta WCS (non è liberamente scaricabile) GvSig 0.6 funziona con Geoserver, GvSig 1.0 presenta dei problemi ... La specifica è relativamente recente rispetto alle altre, il suo uso meno richiesto 16
Documenti analoghi
Introduzione - Laboratorio di Geomatica
WCS, il “sorgente” di un raster
Dato scaricabile, riutilizzabile al di la del server