PostgreSQL, PostGIS e software ausiliarizatelli/cartografia_numerica/slides/GIS_geodb-2.pdf · come...

20
Trento, venerdì 24 giugno 2011, CORSO GEODATABASE PostgreSQL, PostGIS e software ausiliari Fabio Zottele – SIG Fondazione E. Mach Marco Ciolli – DICA Università degli Studi di Trento Trento, venerdì 24 giugno 2011, CORSO GEODATABASE

Transcript of PostgreSQL, PostGIS e software ausiliarizatelli/cartografia_numerica/slides/GIS_geodb-2.pdf · come...

Page 1: PostgreSQL, PostGIS e software ausiliarizatelli/cartografia_numerica/slides/GIS_geodb-2.pdf · come aderente al profilo "Types and Functions" il 1 settembre 2006. MAPSERVER PostgreSQL,

Trento, venerdì 24 giugno 2011, CORSO GEODATABASE

PostgreSQL, PostGIS e software ausiliari

Fabio Zottele – SIG – Fondazione E. MachMarco Ciolli – DICA – Università degli Studi di Trento

Trento, venerdì 24 giugno 2011, CORSO GEODATABASE

Page 2: PostgreSQL, PostGIS e software ausiliarizatelli/cartografia_numerica/slides/GIS_geodb-2.pdf · come aderente al profilo "Types and Functions" il 1 settembre 2006. MAPSERVER PostgreSQL,

Trento, venerdì 24 giugno 2011, CORSO GEODATABASE

PostgreSQL

Client(pgAdmin3,phpPgAdmin...)

Client GIS(GRASS,Qgis,UDig...)

PostGIS GEOS proj OGR

PostGIS integra PostgreSQL con il supporto per le primitive geometriche. L'RDBMS può essere connessi ai GIS che riescano a interpretarne I contenuti.

PostGIS segue le OpenGIS "Simple Features Specification for SQL" ed è stato certificato come aderente al profilo "Types and Functions" il 1 settembre 2006.

MAPSERVER

PostgreSQL, PostGIS e software ausiliari

Software...

Page 3: PostgreSQL, PostGIS e software ausiliarizatelli/cartografia_numerica/slides/GIS_geodb-2.pdf · come aderente al profilo "Types and Functions" il 1 settembre 2006. MAPSERVER PostgreSQL,

Trento, venerdì 24 giugno 2011, CORSO GEODATABASE

PostgreSQL, PostGIS e software ausiliari

Software...● PostgreSQL: RDBMS per la gestione dei dati, dei linguaggi, delle transazioni e dei tipi di dato fondamentali;

● PostGIS: estensione spaziale. Fornisce 663 funzioni, 3 trigger, 9 operatori, 2 classi di operatori per l'indicizzazione spaziale e 7 tipi di dato che agiscono su entità di tipo vettoriale aderendo agli standard OGC. Fornisce anche le API per lo sviluppo di interfacce, i dumper per l'importazione e l'esportazione di shapefile. Lo sviluppo prevede: pieno supporto topologico, supporto ai dati raster, supporto alle reti e algoritmi per il calcolo dei costi dei flussi (routing), superfici tridimensionali;

● GEOS (Geometry Engine Open Source): libreria per la gestione della topologia e per la validazione cel dato geometrico. Sono disponibili funzionalità per “pulire” la topologia;

● proj: software per la collezionare e gestire i sistemi di riferimento geografici. comprende il supporto per gli shift dei datum (3 0 7 parametri). Trasforma le coordinate geografiche in coordinate cartesiane (proj) o direttamente da un sistema di coordinate all'altro (cs2cs). Fornisce una libreria che mappa la grande parte dei sistemi di coordinate EPSG;

● OGR/GDAL: fornisce le funzionalità di accesso in lettura (e talvolta in scrittura) per formati di file vettoriali tra cui ESRI Shapefile, S-57, SDTS, PostGIS, Oracle Spatial e Mapinfo mid/mif e TAB, GML, KML, GRASS, Informix DataBlade...

Page 4: PostgreSQL, PostGIS e software ausiliarizatelli/cartografia_numerica/slides/GIS_geodb-2.pdf · come aderente al profilo "Types and Functions" il 1 settembre 2006. MAPSERVER PostgreSQL,

Trento, venerdì 24 giugno 2011, CORSO GEODATABASE

Prerequisiti: ● installazione completa di postgreSQL (>= 7.2)● compilatore C (GNU)● make (GNU)● Proj (opzionale): qualora siano necessarie operazioni di riproiezione sui propri dataset ● GEOS (opzionale): qualora vengano utilizzati test geometrici (Touches(), Contains(), Intersects()) e operazioni (Buffer(), GeomUnion(), Difference(), ST_Buffer())

Installazione:● scompattare i codici sorgenti di PostGIS nella directory “contrib” della directory dei sorgenti di PostgreSQL. (tar xvfz postgis-x.x.x.tar.gz)● cd postgis-x.x.x● ./configure (possibilità di ottimizzare gli eseguibili per la propria architettura e a seconda delle funzionalità volute)● make● make install● Installare il linguaggio procedurale al proprio database (createlang plpgsql spatialdb)● caricare le funzioni ed i tipi di dato geometrici nel database (psql -d spatialdb -f postgis.sql)● caricare il set di sistemi di riferimento geografici (psql -d spatialdb -f spatial_ref_sys.sql)

PostgreSQL, PostGIS e software ausiliari

Installazione (da sorgente) di PostGIS su LINUX

Page 5: PostgreSQL, PostGIS e software ausiliarizatelli/cartografia_numerica/slides/GIS_geodb-2.pdf · come aderente al profilo "Types and Functions" il 1 settembre 2006. MAPSERVER PostgreSQL,

Trento, venerdì 24 giugno 2011, CORSO GEODATABASE

PostgreSQL, PostGIS e software ausiliari

Installazione (da pacchetto) di PostGIS su LINUX

Per installare i “binari” precompilati di PostGIS basta avviare la procedura d'installazione per la propria distribuzione Linux. Per le Debian (e Debian-derived):

apt-get install postgis

Questo comando installa tutte le dipendenze necessarie (compreso PostgreSQL se non già installato nel sistema). Occorre poi caricare manualmente l'estensione spaziale.

Pro:● semplificazione della procedura di installazione;● processo istanteaneo e ready-to-use.

Contro:● spesso le versioni di PostGIS presenti nelle repository non sono sincronizzate con le versioni stabili aggiornate; i “binari” sono stati compilati abilitando (o disabilitando) delle funzionalità o delle dipendenze non necessarie (eseguibili più “corposi” e lenti...)

Page 6: PostgreSQL, PostGIS e software ausiliarizatelli/cartografia_numerica/slides/GIS_geodb-2.pdf · come aderente al profilo "Types and Functions" il 1 settembre 2006. MAPSERVER PostgreSQL,

Trento, venerdì 24 giugno 2011, CORSO GEODATABASE

PostgreSQL, PostGIS e software ausiliari

Installazione di PostGIS su Microsoft WINDOWS

L'installer per Windows di PostgreSQL contiene le librerie, installabili opzionalmente, di PostGIS. Anche in questo caso, raramente la versione dell'estensione spaziale installabile corrisponde alla versione correntemente stabile. Si procede così:● si installa solamente PostgreSQL (e tutte le estensioni necessarie tranne quella spaziale);● si scarica l'installer dell'ultima release stabile di PostGIS e lo si installa successivamente all'installazione di PostgreSQL;● si applica l'estensione spaziale laddove è necessario.

PostGIS viene installato con ogni sua funzionalità: non è possibile ottimizzare l'estensione spaziale in fase di installazione.

Page 7: PostgreSQL, PostGIS e software ausiliarizatelli/cartografia_numerica/slides/GIS_geodb-2.pdf · come aderente al profilo "Types and Functions" il 1 settembre 2006. MAPSERVER PostgreSQL,

Trento, venerdì 24 giugno 2011, CORSO GEODATABASE

PostgreSQL, PostGIS e software ausiliari

Interoperabilità

La struttura modulare con cui è pensata l'architettura dei software Open Source, permette di integrare PostGIS con un elevato numero di applicazioni. Le più importanti sono:● Cadcorp SIS● FME (Free manipulation Engine, ESRI Interoperability Extension)● Geotools (Geoserver, uDig)● GRASS● gvSIG● Ionic Redspider● Jump (OpenJump, Kosmo)● Mapserver● OGR/GDAL● Qgis● tutti i linguaggi che possono interfacciarsi con PostgreSQL possono interfacciarsi anche con PostGIS: perl, php, python, tcl, C, C++, Java, C#...

PostGIS permette anche lo scambio di informazioni georeferenziate tra applicativi non-OGC attraverso l'uso del loader e del dumper.Il loader è un programma (da riga di comando) chiamato shp2pgsql che converte ESRI Shapefiles in una serie di comandi SQL da ridirezionare all'RDBMSAnalogamente, il dumper è chiamato pgsql2shp e converte tabelle di PostGIS (o query) in ESRI Shapefile.Esistono numerose interfacce grafiche al loader/dumper.

Page 8: PostgreSQL, PostGIS e software ausiliarizatelli/cartografia_numerica/slides/GIS_geodb-2.pdf · come aderente al profilo "Types and Functions" il 1 settembre 2006. MAPSERVER PostgreSQL,

Trento, venerdì 24 giugno 2011, CORSO GEODATABASE

PostgreSQL, PostGIS e software ausiliari

Tipi di dato

Gli oggetti geometrici supportati da PostGIS sono un'estensione di quelli definiti dall'OGC “Simple Features”. Postgis supporta tutti gli oggetti e le funzioni de “Simple Features for SQL” ed estende lo standard con il supporto 3DZ, 3DM e 4D.

PostGIS si rende aderente all'ISO SQL/MM inserendo il tipo geometrico Curve e le separando le funzioni che agiscono sul tipo geometry con il nome ST_*.

Per quanto riguarda le funzionalità :●AsKML per l'interazione con GoogleEarth, AsGeoJSON, AsSVG, AsGML.... ●La compilazione con GEOS abilita l'analisi topologica●Funzionalità per operazioni topologiche complesse (analisi dei grafi)●Creazione dei file PRJ nell'esportazione dei dati.

Page 9: PostgreSQL, PostGIS e software ausiliarizatelli/cartografia_numerica/slides/GIS_geodb-2.pdf · come aderente al profilo "Types and Functions" il 1 settembre 2006. MAPSERVER PostgreSQL,

Trento, venerdì 24 giugno 2011, CORSO GEODATABASE

PostgreSQL, PostGIS e software ausiliari

OGC compliant

Le specifiche OGC definiscono due modalità standard per esprimere costrutti spaziali:● Well-Known Text (WKT);● Well-Known Binary (WKB).

Entrambi includono il tipo di oggetto e le coordinate (WKT):

● POINT(0 0)● LINESTRING(0 0,1 1,1 2)● POLYGON((0 0,4 0,4 4,0 4,0 0),(1 1, 2 1, 2 2, 1 2,1 1))● MULTIPOINT(0 0,1 2)● MULTILINESTRING((0 0,1 1,1 2),(2 3,3 2,5 4))● MULTIPOLYGON(((0 0,4 0,4 4,0 4,0 0),(1 1,2 1,2 2,1 2,1 1)), ((-1 -1,-1 -2,-2 -2,-2 -1,-1 -1)))● GEOMETRYCOLLECTION(POINT(2 3),LINESTRING((2 3,3 4)))

Inoltre, lo standard prevede che il formato di immagazzinamento dei dati (internal storage format) includa un identificatore per il sistema di riferimento adottato per materializzare le coordinate.INSERT INTO SPATIALTABLE ( THE_GEOM, THE_NAME ) VALUES ( GeomFromText('POINT(-126.4 45.32)', 312), 'A Place')

Page 10: PostgreSQL, PostGIS e software ausiliarizatelli/cartografia_numerica/slides/GIS_geodb-2.pdf · come aderente al profilo "Types and Functions" il 1 settembre 2006. MAPSERVER PostgreSQL,

Trento, venerdì 24 giugno 2011, CORSO GEODATABASE

PostgreSQL, PostGIS e software ausiliari

Estensione dello standard OGC

Le specifiche OGC definiscono solamente tipi geometrici 2D e lo SRID non viene mai associato nell'input/output dei dati (ma solamente nel formato interno).I formati estesi di postGIS sono un superset si quelli definiti dall'OGC ed ogni geometria valida in formato WKB/WKT lo è anche in EWKB/EWKT.PostGIS EWKB/EWKT aggiunge coordinate 3DM,3DZ,4D e “embedded SRID information”.Esempi di notazione (EWKT) dei costrutti spaziali estesi sono:

● POINT(0 0 0) XYZ● SRID=32632;POINT(0 0) XY con SRID● POINTM(0 0 0) XYM● POINT(0 0 0 0) XYZM● SRID=4326;MULTIPOINTM(0 0 0,1 2 1) XYM CON SRID● MULTILINESTRING((0 0 0,1 1 0,1 2 1),(2 3 1,3 2 1,5 4 1))● POLYGON((0 0 0,4 0 0,4 4 0,0 4 0,0 0 0),(1 1 0,2 1 0,2 2 0,1 2 0,1 1 0))● MULTIPOLYGON(((0 0 0,4 0 0,4 4 0,0 4 0,0 0 0),(1 1 0,2 1 0,2 2 0,1 2 0,1 1 0)),((-1 -1 0,-1 -2 0,-2 -2 0,-2 -1 0,-1 -1 0)))● GEOMETRYCOLLECTIONM(POINTM(2 3 9), LINESTRINGM(2 3 4, 3 4 5))

La forma canonica (internal storage format) è l'HEXEWKB (Extended Well-Known Binary in notazione esadecimale:SELECT 'SRID=4;POINT(0 0)'::geometry; geometry ---------------------------------------------------- 01010000200400000000000000000000000000000000000000 (1 row)

Page 11: PostgreSQL, PostGIS e software ausiliarizatelli/cartografia_numerica/slides/GIS_geodb-2.pdf · come aderente al profilo "Types and Functions" il 1 settembre 2006. MAPSERVER PostgreSQL,

Trento, venerdì 24 giugno 2011, CORSO GEODATABASE

PostgreSQL, PostGIS e software ausiliari

Tipi ISO/SQL-MM

Lo standard SQL Multimedia Applications Spatial specification estende il “Simple Features for SQL” definendo un numero di primitive geometriche interpolate attraverso archi di circonferenza.L'ISO/SQL-MM include coordinate 3DM, 3DZ e 4D coordinates, ma non consentono di associare l'informazione riguardo il sistema di riferimento.

Alcuni esempi di Curve in PostGIS:

● CIRCULARSTRING(0 0, 1 1, 1 0)● COMPOUNDCURVE(CIRCULARSTRING(0 0, 1 1, 1 0),(1 0, 0 1))● CURVEPOLYGON(CIRCULARSTRING(0 0, 4 0, 4 4, 0 4, 0 0),(1 1, 3 3, 3 1, 1 1))● MULTICURVE((0 0, 5 5),CIRCULARSTRING(4 0, 4 4, 8 4))● MULTISURFACE(CURVEPOLYGON(CIRCULARSTRING(0 0, 4 0, 4 4, 0 4, 0 0),(1 1, 3 3, 3 1, 1 1)),((10 10, 14 12, 11 10, 10 10),(11 11, 11.5 11, 11 11.5, 11 11)))

Attualmente Postgis non supporta l'uso delle Compound Curves nella definizione di un Curve Polygon.L'interpolazione avviene attraverso l'applicazione di un fattore di tolleranza: 1E-8.

Page 12: PostgreSQL, PostGIS e software ausiliarizatelli/cartografia_numerica/slides/GIS_geodb-2.pdf · come aderente al profilo "Types and Functions" il 1 settembre 2006. MAPSERVER PostgreSQL,

Trento, venerdì 24 giugno 2011, CORSO GEODATABASE

PostgreSQL, PostGIS e software ausiliari

Il tipo geography

Questo tipo di geometria supporta tutte le primitive viste precedentemente, ma rappresentate da coordinate geografiche.La base delle geometrie OGC è il piano, il percorso più breve tra due punti è una linea retta. Aree, distanze, lunghezze, intersezioni sono calcolate utilizzando la geometria euclidea.La base delle geometrie geography è la sfera: Il percorso più breve tra due punti è un arco di circonferenza. Ciò significa che I calcoli devono venire eseguiti su una sfera, usando una matematica più complicata. Per avere misure più accurate, I calcoli devono utilizzare l'ellissoide e la matematica diventa ancora più complicata.

Se il dataset da utilizzare copre un'area piccola (rispetto al mondo) il tipo geometry è la soluzione migliore

Se il dataset copre tutto il mondo o un continente meglio usare il tipo geography.

Se non si sa nulla di proiezioni, non si ha voglia di imparare e I dati sono tutti in lon/lat allora meglio usare geography.

Page 13: PostgreSQL, PostGIS e software ausiliarizatelli/cartografia_numerica/slides/GIS_geodb-2.pdf · come aderente al profilo "Types and Functions" il 1 settembre 2006. MAPSERVER PostgreSQL,

Trento, venerdì 24 giugno 2011, CORSO GEODATABASE

PostgreSQL, PostGIS e software ausiliari

Come assicurarsi della correttezza dei dati?

PostGIS segue le Specifiche OGC, perciò molte funzioni di PostGIS assumono che le geometrie che sono processate siano sia SIMPLE che VALID: non ha senso calcolare l'area di un poligono che ha un buco al di fuori del poligono, o costruire un poligono utilizzando una linea a forma di “otto”.

Per l'OGC una geometria è SIMPLE se non ha punti anomali (self-intersections, self-tangency) e si riferisce alle geometrie (MULTI)POINT e (MULTI)LINESTRING.La VALIDITA' si riferisce ai (MULTI)POLYGON e la sua definizione è un po' più complicata.

LINESTRINGsimplevalid

LINESTRINGsimplevalidCLOSED RING

LINESTRINGnot valid

LINESTRINGnot valid

Page 14: PostgreSQL, PostGIS e software ausiliarizatelli/cartografia_numerica/slides/GIS_geodb-2.pdf · come aderente al profilo "Types and Functions" il 1 settembre 2006. MAPSERVER PostgreSQL,

Trento, venerdì 24 giugno 2011, CORSO GEODATABASE

PostgreSQL, PostGIS e software ausiliari

Come assicurarsi della correttezza dei dati?

PostGIS dispone di 3 funzioni per verificare la correttezza: ST_IsSimple, ST_IsValid, ST_IsValidReason

SELECT ST_IsSimple(ST_GeomFromText('LINESTRING(1 1,2 2,2 3.5,1 3,1 2,2 1)')); (non Valido)

SELECT ST_IsValid(ST_GeomFromText('POLYGON((0 0, 1 1, 1 2, 1 1, 0 0))')) (Self-intersection at or near point 0 0)

SELECT ST_IsValidReason('LINESTRING(220227 150406,2220227 150407,222020 150410)');

VALID

NOT VALID POLYGON, ma VALID MULTIPOLYGONVALID

NOT VALID POLYGON, ma VALID MULTIPOLYGON

NOT VALID

NOT VALID

Page 15: PostgreSQL, PostGIS e software ausiliarizatelli/cartografia_numerica/slides/GIS_geodb-2.pdf · come aderente al profilo "Types and Functions" il 1 settembre 2006. MAPSERVER PostgreSQL,

Trento, venerdì 24 giugno 2011, CORSO GEODATABASE

PostgreSQL, PostGIS e software ausiliari

OGC – Tabella dei metadati

Per mantenere la consistenza dei metadati (referenzialità), gli standard OGC prevedono due tabelle che collezionano le informazioni riguardanti i dataset georeferenziati.

geometry_columns

f_table_catalog (PK)

f_table_schema (PK)

f_table_name (PK)

f_geometry_column(PK)

coord_dimension (PK)

srid (PK)

type (PK)

spatial_ref_sys

srid (PK)

auth_name

auth_srid

srtext

proj4text

roads

cat

the_geom

gid (PK)

label

CREATE TABLE roads( gid serial NOT NULL, cat int8, label varchar(80), the_geom geometry,CONSTRAINT roads_pkey PRIMARY KEY (gid),CONSTRAINT enforce_dims_the_geom CHECK (ndims(the_geom) = 2),CONSTRAINT enforce_geotype_the_geom CHECK (geometrytype(the_geom) = 'MULTILINESTRING'::text OR the_geom IS

NULL),CONSTRAINT enforce_srid_the_geom CHECK (srid(the_geom) = 26713))

CREATE INDEX roads_the_geom_gist ON roads USING gist(the_geom);

Page 16: PostgreSQL, PostGIS e software ausiliarizatelli/cartografia_numerica/slides/GIS_geodb-2.pdf · come aderente al profilo "Types and Functions" il 1 settembre 2006. MAPSERVER PostgreSQL,

Trento, venerdì 24 giugno 2011, CORSO GEODATABASE

PostgreSQL, PostGIS e software ausiliari

Indicizzazione spazialeGli indici vengono utilizzati per rendere più veloce l'accesso ai dati.Lo scopo di un'estensione spaziale è quello di effettuare analisi sui dati immagazzinati nel database analogamente ad un qualsiasi GIS. L'utilizzo appropriato degli indici forniscono un miglioramento delle performance del sistema.l'indice GiST agisce solamente con le funzioni bounding-box-based, mentre funzioni come distance() non possono utilizzare l'indice per velocizzare le operazioni di estrazione dei dati. Per una tabella contenente un gran numero di geometrie, la seguente query risulterebbe lenta:

SELECT the_geom FROM table WHERE ST_distance(the_geom, GeomFromText('POINT(100000 200000)', -1)) < 100

La query risulta lenta perché misura la distanza tra il punto specificato ed ogni altro punto della tabella. Per evitare lo spreco di operazioni si utilizza l'operatore && che calcola l'intersezione tra le bounding box delle geometrie.

SELECT the_geom FROM table WHERE the_geom && 'BOX3D(90900 190900,100100 200100)'::box3d AND ST_distance(the_geom, GeomFromText('POINT(100000 200000)', -1 )) < 100

La query restituisce lo stesso risultato, ma in modo più efficiente. Se esiste un indice GiST sulla colonna delle geometrie, il query-planner ridurrà il numero di righe da processare prima di calcolare il risultato di distance(). La riduzione avviene per mezzo dell'operatore &&: se la query-box è molto più piccola della regione definita dalla tabella, il numero di operazioni viene drasticamente ridotto.

Page 17: PostgreSQL, PostGIS e software ausiliarizatelli/cartografia_numerica/slides/GIS_geodb-2.pdf · come aderente al profilo "Types and Functions" il 1 settembre 2006. MAPSERVER PostgreSQL,

Trento, venerdì 24 giugno 2011, CORSO GEODATABASE

PostgreSQL, PostGIS e software ausiliari

Esempio

Quali sono i tratti di strada che arrivano sui poderi di proprietà signor Biggam?

SELECT r.the_geom

FROMroads AS r,fields AS f

WHEREr.the_geom && f.the_geomANDoverlaps(r.the_geom,f.the_geom)

Page 18: PostgreSQL, PostGIS e software ausiliarizatelli/cartografia_numerica/slides/GIS_geodb-2.pdf · come aderente al profilo "Types and Functions" il 1 settembre 2006. MAPSERVER PostgreSQL,

Trento, venerdì 24 giugno 2011, CORSO GEODATABASE

PostgreSQL, PostGIS e software ausiliari

Il tipo raster

Analogamente al tipo geometry e geography PostGIS dispone del tipo raster per immagazzinare informazioni di questo tipo aderendo il piùpossibile allo standard ISO 19123 “Abstract Specification Schema for Coverage Geometry and Functions”.

Esiste un loader, raster2pgsl.py, che importa in PostGIS tutti I formati supportati da GDAL

Ogni raster o tile è una riga in una tabella del database. PostGIS gestisce internamente imetadati (width,height, bands, pixeltype, nodata per ogni banda) e la geolocalizzazione (pixelsize, upper left pixel center, rotation, SRID).

Il tipo raster “astrae” il formato e la struttura del dato: l’utente può applicare direttamente funzioni pensate per geometrie vettoriali (ST_Intersect) su dati di tipo raster.

Sebbene il supporto ai raster sia recente esistono già decine di funzionalità per analizzare e gestire questo tipo di dati (es: ST_SummaryStats, ST_MapAlgebra, ST_AsGDAL, ST_AsPNG, ST_AsTiff, ST_Reclass, ST_Histogram...)

PostgreSQL, PostGIS e software ausiliari

Page 19: PostgreSQL, PostGIS e software ausiliarizatelli/cartografia_numerica/slides/GIS_geodb-2.pdf · come aderente al profilo "Types and Functions" il 1 settembre 2006. MAPSERVER PostgreSQL,

Trento, venerdì 24 giugno 2011, CORSO GEODATABASE

Supporto topologico avanzato

PostgreSQL, PostGIS e software ausiliari

Dalla versione 2.0 sarà possibile associare ai layer vettoriali presenti in PostGIS informazioni topologiche come connettività, adiacenza, contenuto/contenente, prossimità, direzioni relative.

Queste informazioni vengono associate alle entità vettoriali in tabelle aggiuntive nello schema topology

Con il supporto alla topologia si potranno costruire in maniera efficiente sistemi di routing (pgRouting) e di flowing, editare le geometrie in maniera dipendente dalle geometrie adiacenti, analisi di visibilità (una geometria può nascondere parzialmente un'altra a seconda del punto e della direzione di osservazione),

Page 20: PostgreSQL, PostGIS e software ausiliarizatelli/cartografia_numerica/slides/GIS_geodb-2.pdf · come aderente al profilo "Types and Functions" il 1 settembre 2006. MAPSERVER PostgreSQL,

Trento, venerdì 24 giugno 2011, CORSO GEODATABASE

Per concludere...

PostgreSQL, PostGIS e software ausiliari

PostGIS rappresenta l'estensione spaziale più matura nel mondo dell'Open Source.Grazie all'adesione agli standard OGC viene garantito l'efficiente scambio di informazioni tra applicazioni.Inoltre gli standard semplificano la gestione del dato georiferito.

Poligono in PostGIS:

POLYGON((0 0, 0 1, 1 1, 1 0, 0 0))

Poligono in Oracle Spatial:

MDSYS.SDO_GEOMETRY(2003, NULL, NULL, MDSYS.SDO_ELEM_INFO_ARRAY(1,1003,1),MDSYS.SDO_ORDINATE_ARRAY(0,0, 0,1, 1,1, 1,0, 0,0)

)