Esercitazione su PostGIS p1 · 2010-02-10 · 27/01/2010 1 Esercitazione su PostGIS Claudio...

12
27/01/2010 1 Esercitazione su PostGIS Claudio Rocchini – Istituto Geografico Militare Introduzione Postgres con PostGIS è un database server professionale Open Source e Gratuito Il supporto spaziale è veramente completo e fa concorrenza a software commerciali ben più costosi (es. Oracle) In questa esercitazione faremo una breve introduzione al supporto spaziale di Postgres. Prerequisiti: Cenni sulle basi di dati SQL Interfaccia di Postgres 2 PostGIS - Claudio Rocchini - IGM Nota su questi lucidi PostGIS - Claudio Rocchini - IGM 3 Le query SQL da eseguire sono sempre scritte con il carattere Courier PowerPoint trasforma talvolta il primo apicetto di una frase in apicetto invero. In SQL bisogna sempre usare l’apicetto diritto (l’apostrofo). Si ricorda che per eseguire una query bisogna: Aprire pgAdminIII Connettersi al server giusto Selezioane un database Aprire SQL editor Digitare la query nella finestra di sinistra Premere il pulsante Play (execute) Supporto Spaziale di Postgres Vediamo in questa sezione cosa effettivamente PostGIS aggiunge a Postgres PostGIS - Claudio Rocchini - IGM 4

Transcript of Esercitazione su PostGIS p1 · 2010-02-10 · 27/01/2010 1 Esercitazione su PostGIS Claudio...

27/01/20101

Esercitazione su PostGIS

Claudio Rocchini –

Istitu

to Geografico Milita

re

Intro

duzione

�Postgres

con PostG

ISè u

n datab

ase server pro

fessionale

Open

Source e G

ratuito

�Il su

pporto

spaziale è veram

ente co

mpleto

e fa co

nco

rrenza a so

ftware co

mmerciali b

en più co

stosi (es.

Oracle)

�In questa esercitazio

ne farem

o una b

reve intro

duzio

ne al

supporto

spaziale d

i Postgres.

�Prereq

uisiti:

�Cen

ni su

lle basi d

i dati

�SQ

L

�Interfaccia d

i Postgres

2PostG

IS -Clau

dio R

occh

ini -

IGM

Nota su questi lu

cidi

PostG

IS -Clau

dio R

occh

ini -

IGM

3

�Le q

uery

SQL da esegu

ire sono sem

pre scritte co

n il

carattere Courier

�Po

werPo

int trasfo

rma talvo

lta il prim

o ap

icettodi u

na

frase in ap

icettoinvero

. In SQ

L biso

gna sem

pre u

sare l’ap

icettodiritto

(l’apostro

fo).

�Si rico

rda ch

e per esegu

ire una q

uery

biso

gna:

�Aprire p

gAdminIII

�Connettersi al server giu

sto

�Selezio

aneun datab

ase

�Aprire SQ

L ed

itor

�Digitare la q

uery

nella fin

estra di sin

istra

�Prem

ere il pulsan

te Play (execu

te)

Supporto

Spaziale di Postgres

Ved

iamo in

questa sezio

ne co

sa effettivamen

te PostG

IS aggiunge

a Postgres

PostG

IS -Clau

dio R

occh

ini -

IGM

4

27/01/20102

Supporto

Spaziale a Postgres

PostG

IS -Clau

dio R

occh

ini -

IGM

5

�Po

stGIS aggiu

nge il su

pporto

geografico

a Postgres

�Tale su

pporto

si compone d

i varie parti e si b

asa prin

cipalm

ente su

standard

Open

GIS C

onso

rtium

(Oracle in

vece, ch

e è più vecch

io, h

a dovu

to svilu

ppare u

n

suo stan

dard

).

�Prin

cipali co

mponen

ti:�

Un nuovo

tipo di d

ato: GEOMETRY

�Tab

elle di su

pporto

: spatial_

ref_sys

e geometry_

columns

�Fu

nzio

ni SQ

L di su

pporto

(circa 700)

�To

olestern

i (es. pgsql2

shpe shp

2pgsql) ch

e vedrem

o duran

te l’im

portazio

ne d

i dati

�Nota: Po

stgres non ha d

i per sé u

n visu

alizzatore

GEOMETRY

PostG

IS -Clau

dio R

occh

ini -

IGM

6

�I d

ati di u

na co

lonna d

i datab

ase sono asso

ciati ad un tip

o

(es. INTEGER, C

HARACTER, B

OOLEAN)

�Il su

pporto

spaziale in

troduce u

n nuovo

tipo di d

ato:

GEOMETRY, q

uesto

tipo è u

n tip

o di d

ato ad

oggetti

(complesso

)

�Questo

tipo di d

ato co

ntien

e la geometria d

i un sin

golo

oggetto

geografico

e eventualm

ente il sistem

a di

riferimen

to asso

ciato (co

dice SR

ID)

�Il tip

o è m

ultifo

rme:

�può co

nten

ere dati a 2

, 3 o 4 dim

ensio

ni (x

,y,z e il campo M

)

�Vari tip

i di geo

metrie: p

unti, lin

ee, aree

, curve

, etc.

spatial_ref_sys: in

troduzione

PostG

IS -Clau

dio R

occh

ini -

IGM

7

�E’ u

na tab

ella del sistem

a spaziale: m

emorizza l’elen

co dei

sistemi d

i riferimen

to su

pportati

�Si b

asa prin

cipalm

ente su

llo stan

dard

EPSG

(http

://www.ep

sg.org)

�Per o

gni sistem

a previsto

è indicato

:

�il co

dice n

umerico

�la so

rgente (si so

lito EPSG

)

�la d

efinizio

ne testu

ale (equivale al testo

conten

uto

nei file p

rg)

�la d

efinizio

ne p

roj4

�Nota: p

roj4 è u

na lib

reria di trasfo

rmazio

ne d

i coord

inate

utilizzata d

a PostG

IS

spatial_ref_sys: contenuto

PostG

IS -Clau

dio R

occh

ini -

IGM

8

�Esem

pio lo

srid4326co

rrisponde a co

ord

inate geo

grafiche W

GS8

4 (G

PS)

�Ecco

la defin

izione testu

ale:GEOGCS[

"WGS 84",

DATUM[

"WGS_1984",

SPHEROID[

"WGS84",

6378137,298.257223563,

AUTHORITY["EPSG","7030"]

],

AUTHORITY["EPSG","6326"]

],

PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],

UNIT["degree",0.01745329251994328,AUTHORITY["EPSG","9122"]],

AUTHORITY["EPSG","4326"]

]�SR

ID 32632e 3

2633co

rrispondono a U

TM W

GS8

4 fu

si 32 e 3

3 N

ord

.

�SR

ID 23032e 2

3033co

rrispondono a U

TM ED50 fu

si 32 e 3

3 N

ord

.

27/01/20103

spatial_ref_sys: estensione

PostG

IS -Clau

dio R

occh

ini -

IGM

9

�Se u

n sistem

a di riferim

ento

non e’ p

revisto può essere

aggiunto

alla tabella, d

efinen

do l’o

pportu

na strin

gpro

j4,

ovviam

ente il sistem

a non sarà stan

dard

�Ad esem

pio Fu

so Italia, u

sato per i catalo

ghi w

eb, (u

na

med

ia fra fuso

32 e fu

so 33) p

uò essere d

efinito

come:

�SR

ID: 9

000;

�au

th_nam

e: "IGMI";

�au

th_srid

: 90000;

�pro

j=tm

erc+lat_

0=0 +lon_0=12 +k=

0.9985 +x_0=7000000.0

+y_

0=0 +ellp

s=W

GS8

4 +datu

m=W

GS8

4 +units=

m +no_defs“

�Po

stgres è in grad

o di u

tilizzare correttam

ente i d

ati geo

grafici con sistem

i defin

iti dall’u

tente.

Un in

ciso: R

oma40P

ostG

IS -Clau

dio R

occh

ini -

IGM

10

�Alcu

ni sistem

i di riferim

ento

non posso

no essere trattati

in m

odo an

alitico

�Ad esem

pio R

oma4

0, h

a biso

gno (p

er una su

a eventuale

trasform

azione), d

i griglie di trasfo

rmazio

ne p

unto

punto,

che m

emorizzan

o la d

ifferenza d

i coord

inate

.

�L’IG

M ven

de q

ueste griglie d

i trasform

azione a b

locch

i

�Pro

j4 (e q

uindi Po

stgres) supportan

o le griglie d

i trasfo

rmazio

ne n

el form

ato stan

dard

NAD (n

tv2)

�Ad esem

pio la segu

ente d

efinizio

ne co

struisce u

n sistem

a geo

grafico R

oma4

0 (aven

do i grigliati o

pportu

ni):

�+pro

j=longlat +

ellps=

WGS8

4 +to

+pro

j=longlat

+ellp

s=W

GS8

4 +nad

grids=

./wgs8

4_to

_ro

ma4

0.gsb

geometry

_columnsPostG

IS -Clau

dio R

occh

ini -

IGM

11

�Questa è la seco

nda tab

ella di sistem

a

�Contien

e i “metad

ati” minim

i per tu

tte le colonne

geometrich

e:

�sch

ema: n

ome d

ello sch

ema ch

e contien

e la tabella

�tab

le_nam

e: nome d

ella tabella geo

metrica

�geo

metry_

column: n

ome d

ella colonna d

i tipo G

EOMETRY

�co

ord

_dim

ensio

n: n

umero

dim

ensio

ni (2

,3, o

4)

�srid

: codice d

el sistema d

i riferimen

to, p

uò essere -1

= non

defin

ito

�typ

e: sotto

tipo geo

metrico

; rappresen

ta un vin

colo ai tip

i geo

metrici co

nten

uti. P

uò valere G

EOMETRY=nessu

nvin

colo

geometry

_columnsdal sito W

EB IG

M

PostG

IS -Clau

dio R

occh

ini -

IGM

12

27/01/20104

Note su geometry

_columns1

PostG

IS -Clau

dio R

occh

ini -

IGM

13

�Defin

ire i metad

ati minim

i è fondam

entale p

er il corretto

funzio

nam

ento

di Po

stGIS (e d

ei GIS co

nnessi ad

esso!)

�Una tab

ella può avere p

iù co

lonne geo

metrich

e (co

rrisponde ad

una featu

reclass

in cu

i ogn

i oggetto

a più

rappresen

tazioni: es. città p

untuali o

areali)

�Una co

lonna geo

metrica:

�può co

nten

ere dati geo

metrici d

i tipo unifo

rme (scelta

consigliata p

er non m

ettere in crisi i sistem

i GIS), ad

esempio

punti, in

questo

caso geom

etry_colum

ns.type co

ntien

e il valore

POIN

T

�Può co

nten

ere dati d

i tipo m

isto (p

unti, lin

ee ed aree), in

questo

caso geom

etry_colum

ns.type co

ntien

e il valore

GEOMETRY

Note su geometry

_columns2

PostG

IS -Clau

dio R

occh

ini -

IGM

14

�Il sistem

a di riferim

ento

può essere:

�Non in

dicato

: SRID

= -1

�Indicato

in geom

etry_colum

ns, quindi p

er l’intera co

lonna

(feature)

�Indicato

den

tro il cam

po geom

etry, quindi p

er ogn

i elemen

to. In

questo

caso può variare d

a elemen

to ad

elemen

to della stessa

colonna (co

sa sconsiglata)

�Alcu

ni sistem

i esterni n

on rico

nosco

no il sistem

a di

riferimen

to co

rrettamen

te:

�Sh

p2pgsq

l non è in

grado di d

ecodificare il file p

rj

�ArcG

IS non è in

grado di in

terpretare lo

SRID

Postgres, il sistem

a di

riferimen

to deve essere co

municato

dall’u

tente.

funzioni

PostG

IS -Clau

dio R

occh

ini -

IGM

15

�Po

stGIS d

efinisce circa 7

00 fu

nzio

ni SQ

L

�Ved

remo alcu

ne d

elle funzio

ni in

dettagli d

uran

te l’esercitazio

ne. L

e funzio

ni so

no divise n

ei gruppi:

�Di G

estione: es. A

ddGeom

etryColum

n

�DICostru

zione: es. ST

_MakePoint

�Di accesso

: es. ST_Dimension

�Di m

odifica: es. ST

_Transform

�Di o

utput: es. ST

_AsGML

�Di relazio

ne e m

isura: es. ST

_Area

e ST_Intersects

�Di p

rocessam

ento

: es. ST_Buffer

�Altro

: es. Linear R

eferencig, ST

_Xmax

, etc.

Lavorare con Postgres

In questa sezio

ne in

iziamo a fare q

ualch

e esercizio co

n SQ

L e i

dati geo

grafici

PostG

IS -Clau

dio R

occh

ini -

IGM

16

27/01/20105

Valori le

tterali 1

PostG

IS -Clau

dio R

occh

ini -

IGM

17

�I valo

ri geometrici p

osso

no essere sp

ecificati in m

odo

letterale, segu

ento

lo stan

dard

OGC W

KT:

�Punto

2D:

�‘POIN

T(0 0)’

�Po

lilinea 3

D:

�‘LIN

EST

RIN

G(0 0

0,1 1 0,1 2 0)’

�Po

ligono (co

n buco

): �

’POLY

GON((0

0,4 0,4 4,0 4,0 0),(1

1, 2

1, 2

2, 1

2,1 1))’

�Punto

multip

lo:

�‘M

ULT

IPOIN

T(0 0,1 2)’

�Punto

con sistem

a di riferim

ento

:�

‘SRID

=32632;POIN

T(0 0)’

Valori le

tterali 2

PostG

IS -Clau

dio R

occh

ini -

IGM

18

�I valo

ri letterali di tip

o G

EOMETRY non posso

no essere

utilizzati co

sì come so

no, altrim

enti il d

b li scam

bia p

er strin

ghe, m

a:�

Si può utilizzare la fu

nzio

ne ST

_Geo

mFro

mEW

KT

per co

nvertirli in

geometria

�Si p

uò acco

dare la d

icitura ::G

EOMETRY per in

form

are il sistema ch

e il valo

re è una geo

metria.

�Es. p

rovate ad

eseguire la q

uery:

SELECT ST_XMax(

ST_GeomFromText(‘LINESTRING(1 3 4, 5 6 7)’)

);

�Nella

query p

reded

ente

abbiam

oco

struito

unageo

metria

e poi ab

biam

outilizzato

la funzio

neST

_XMAX per estrerre

ilvalo

rex m

assimo.

Valori le

tterali 3

PostG

IS -Clau

dio R

occh

ini -

IGM

19

�Vogliam

o pro

iettare le coord

inate geo

grafiche d

el centro

di Firen

ze in U

TM fu

so32N, p

roviam

o:

SELECT ST_Transform(

'SRID=4326;POINT(11.25 43.75)'::GEOMETRY

,32632

)

�Abbiam

oco

struito

la geometria

diun punto

in co

ord

. Geo

grafiche(co

n l’o

pzio

ne::G

EOMETRY) è l’ab

biam

otrasfo

rmato

tramite

la funzio

neST

_Tran

sform

a cui

biso

gnasp

ecificareilsistem

adiarrivo

.

�La risp

osta

didefau

lt è in binario

e quindifatich

iamoa

leggerla. Per leggerlain testo

applich

iamola fu

nzio

ne

ST_AsE

WKT

a ST_Tran

sform

.

Creazione di u

na feature class: dati

PostG

IS -Clau

dio R

occh

ini -

IGM

20

�Creiam

o ad

esso una featu

re a man

o

�Questo

vuol d

ire creare una tab

ella con una co

lonna d

i tipo

gemetry

+ i m

etadati asso

ciati

�Creiam

o la featu

re edificio

eseguen

do:

CREATE TABLE edificio

(

id INTEGER PRIMARY KEY,

descrCHARACTER VARYING

);

�Nota: il vin

colo ch

iave prim

aria è stato in

serito direttam

ente

dopo la d

efinizio

ne d

el tipo

�Nota2

: per o

ra il campo geo

metrico

non c’è. Po

tevamo

inserirlo

subito

(aggiungen

do la co

lonna “sh

ape G

EOMETRY”)

ma p

referiamo farlo

in un altro

modo…

27/01/20106

Creazione di u

na feature: geometria

PostG

IS -Clau

dio R

occh

ini -

IGM

21

�Po

stgres contien

e la funzio

ne A

ddGeom

etryColum

nch

e perm

ette di aggiu

ngere la co

lonna geo

metrica, i m

etadati

e alcuni vin

coli aggiu

ntivi in

un so

l colpo.

�La fu

nzio

ne h

a i seguen

ti param

etri:

�Tab

ella su cu

i operare

�Nome d

ella colonna geo

metrica

�Sistem

a di riferim

ento

�Tipo geo

metrico

�Numero

dim

ensio

ni

�Pro

vate ad esegu

ire (orm

ai dovreb

be essere ch

iaro):

SELECT

AddGeometryColumn('edificio','shape',4623,'POLYGON',2);

Creazione dell’in

dice spaziale

PostG

IS -Clau

dio R

occh

ini -

IGM

22

�Perch

é il funzio

nam

ento

delle q

uery

spaziali sia velo

ce è fondam

entale creare u

n in

dice su

lla colonna shap

e

�La sin

tassi generica p

er creare indici è:

CREATE IN

DEX nom

e_indice

ON nom

e_tabella

(colonne)

�Gli in

dici sp

aziali però

sono diversi d

a quelli su

numeri e

paro

le: in questo

caso biso

gna sp

ecificarne il tip

o (ch

e si ch

iama gist): p

rovate q

uindi ad

eseguire:

CREATE INDEX edificio_shape_idx

ON edificioUSING gist (shape);

�Il n

ostro

indice sp

aziale è in fu

nzio

ne

Uno sguardo alla nostra

tabella

PostG

IS -Clau

dio R

occh

ini -

IGM

23

�Diam

o un sgu

ardo alla n

ostra tab

ella nell’alb

ero grafico

�Oltre agli attrib

uti e all’in

dice

, la funzio

ne

AddG

eometryC

olumn

ha aggiu

nto

vinco

li (constrain

ts) aggiu

ntivi ch

e bloccan

o il sistem

a di riferim

ento, il n

umero

di d

imen

sioni e il tip

o geo

metrico

Uno sguardo ai m

etadati

PostG

IS -Clau

dio R

occh

ini -

IGM

24

�Selezio

nate n

ell’albero

grafico la tab

ella (dello

schem

a public) geom

etry_colum

n

�Visu

alizzate la tabelle e ved

rete che q

uesta co

ntien

e i metad

ati minim

i della n

ostra featu

re:

�Nome d

ello sch

ema

�Nome d

ella tabella

�Nome d

el campo geo

metrico

�Dim

ensio

ni (2

)

�Sistem

a di riferim

eno(4623=W

GS8

4)

�Tipo geo

metrico

27/01/20107

Popolamento della ta

bella

PostG

IS -Clau

dio R

occh

ini -

IGM

25

�Creiam

o ad

esso qualch

e oggetto

geografico

, pro

vate ad

eseguire:

INSERT INTO edificio

VALUES

(1,'Ospedale',

'SRID=4623;POLYGON((6 42, 8 42, 8 43, 6 43, 6 42))'::GEOMETRY

);

�I p

rimi d

ue valo

re sono la ch

iave prim

aria e la descrizio

ne, il

terzo è la geo

metria (u

n poligo

no rettan

golare) d

el giusto

sistem

a di riferim

ento

�Nota: le aree van

no “ch

iuse” vale a d

ire che l’u

ltimo vertice

deve co

incid

ere con il p

rimo (o

vvero i q

uad

rati han

no 5

vertici…)

Ancora altri d

ati

PostG

IS -Clau

dio R

occh

ini -

IGM

26

�Divertiam

oci an

che a creare u

n seco

ndo oggetto

:INSERT INTO edificio

VALUES

(2,'Industria',

'SRID=4623;POLYGON((10 43, 13 43, 13 46, 10 46, 10 43),(11

44, 12 44, 12 45, 11 45, 11 44))'::GEOMETRY);

�Nota: la riga d

ella geometria q

ui so

pra va scritta tu

tta di

seguito

(PowerPo

int in

vece va a capo)

�La geo

metria d

ella nostra in

dustria è u

n rettan

golo co

n

un buco

nel cen

tro: la seco

nda serie d

i coord

inate

defin

isce il buco

centrale

.

Semplici analisi sulle nostre

feature

PostG

IS -Clau

dio R

occh

ini -

IGM

27

�Pro

viamo ad

esso a tab

ellare le aree dei n

ostri ed

ifici con

la query:

SELECT id,descr,

ST_Area(shape)

FROM edificio;

�L’area vien

e misu

rata in grad

i quad

rati…pro

viamo in

vece a p

roiettare q

ueste co

ord

inate n

el fuso

32:

SELECT id,descr,

ST_Area( St_Transform(shape,32632) )/10000

FROM edificio;

�In questo

caso il risu

ltato è in

ettari

�Nei sem

plici esem

pi fin

o a q

ui visti, le fu

nzio

ni ven

gono

applicate ad

ogn

i singo

lo oggetto

Semplici fu

nzioni aggreganti

PostG

IS -Clau

dio R

occh

ini -

IGM

28

�Ved

iamo ora q

ualch

e esempio di fu

nzio

ne aggregan

te.

Pro

vate ad esegu

ire:SELECT ST_Extent(shape) FROM edificio;

�Il risu

ltato è:

"BOX(6 42,13 46)"

�La fu

nzio

ne ST

_Extent

calcola l’esten

sione m

assima

dell’u

nione d

egli elemen

ti della tab

ella. Un altro

esempio:

SELECT St_AsEWKT(ST_Union(shape))

FROM edificio;

�La fu

nzio

ne ST

_Union

calcola l’u

nione d

i tutte le

geometrie

27/01/20108

Connessione con QGIS (oppure

UDIG)

Ed ora u

n piacevo

le interm

ezzo: visu

alizzazione d

i dati tram

ite QGIS

PostG

IS -Clau

dio R

occh

ini -

IGM

29

Visualizzare i d

ati: in

troduzione

PostG

IS -Clau

dio R

occh

ini -

IGM

30

�Questa è u

n’esercitazio

ne su

Postgres-Po

stGIS

�Questo

softw

are non ha d

i per sé u

n visu

alizzatore

grafico.

�E’ d

ifficile però

contin

uare sen

za visualizzare i n

ostri d

ati.

�Intro

durrem

o quindi i co

ncetti m

inim

i per p

oter

visualizzare i d

ati con Q

GIS

�Una d

escrizione d

i QGIS esu

la dagli sco

pi d

i questa

disp

ensa.

Procedura di visualizzazione con QGIS 1

PostG

IS -Clau

dio R

occh

ini -

IGM

31

�Lan

ciare QGIS

�Prem

ere il pulsan

te: Add

PostG

IS Layer

�Nel d

ialogo

che si ap

re prem

ere il tasto new

�Inserire i valo

ri corretti d

i co

nnessio

ne e p

remere O

K

�Nel d

ialogo

prin

cipale p

remere

il tasto Connect: ap

pariran

no

tutte le featu

re disp

onibili

Procedura di visualizzazione con QGIS 2

PostG

IS -Clau

dio R

occh

ini -

IGM

32

�Selezio

nare la featu

re public –

edifici e p

remere il tasto

Add

�Se tu

tto va b

ene ap

parirà n

ella map

pa l’elen

co degli o

ggetti da n

oi

manu

almen

te creati (vedi

pro

ssimo lu

cido)

�Selezio

nan

do lo

strumen

to

Iden

tifyFeatu

re (I) è possib

ile an

che in

terrogare gli attrib

uti d

egli oggetti.

�Po

ssiamo m

anten

ere QGIS ap

erto

men

tre continu

iamo a lavo

rare co

n Po

stgres

27/01/20109

Risultato della visualizzazione

PostG

IS -Clau

dio R

occh

ini -

IGM

33

Un in

ciso connessione con UDIG

PostG

IS -Clau

dio R

occh

ini -

IGM

34

La connessio

ne co

n U

DIG

segue u

na p

roced

ura

Equivalen

te: Men

ù Layer

–Add. Scegliere

PostG

ISim

postare i p

arametri e scegliere le

feature

.

Importa

zione di dati E

sterni

(shape)

In questa sezio

ne si im

portan

o dei d

ati esterni n

el form

ato

shap

e

PostG

IS -Clau

dio R

occh

ini -

IGM

35

Dati d

i Esempio

PostG

IS -Clau

dio R

occh

ini -

IGM

36

�Come d

ati di esem

pio, u

tilizzeremo il D

B to

pografico

della regio

ne P

uglia, in

partico

lare i dati d

el foglio

383 e

solo le featu

reC010101 (area strad

ale), C010107

(elemen

to strad

ale) e C060106 (C

oltu

ra Agrico

la).

�In partico

lare l’ultim

a feature

contien

e un attrib

uto

multivalo

re

�L’im

portazio

ne d

ei file shap

e avverrà attraverso lo

stru

men

to “sh

p2pgsq

l”, un to

oldi Po

stGIS. L

o stesso

stru

men

to può im

portare tab

elle di d

ati puri (n

on

geografici).

27/01/2010

10

Preparazione all’im

porta

zione

PostG

IS -Clau

dio R

occh

ini -

IGM

37

�Im

porterem

o i n

ostri file sh

ape n

el datab

ase Postgres d

i lavo

ro

�I d

ati però

non verran

no caricati n

ella schem

a prin

cipale

, ma in

un nuovo

schem

a den

ominato

“puglia”.

�Creazio

ne d

ello sch

ema “p

uglia”:

�Aprite p

gAdmin III

�Selezio

nate il server d

a utilizzare

�Selezio

nate il d

atabase “co

rso”

�Clicca co

l botto

ne d

estro su

“Schem

as”

�Selezio

nate “N

ew Sch

ema”

�Digitate “p

uglia” co

me n

ome

�Prem

ete OK

Funzionamento di shp2pgsql

PostG

IS -Clau

dio R

occh

ini -

IGM

38

�Sh

p2pgsq

l è un so

ftware d

os

(a riga di co

man

do) fu

nzio

na

digitan

do il co

man

do in

una

finestra d

os, co

n le

opportu

ne o

pzio

ni

USO

: shp2pgsq

l [<optio

ns>

] <sh

apefile>

[<

schem

a>.]<

table>

OPTIO

NS:

-s <srid

> Selezio

nalo SR

ID.

-d C

ancella

e ricreale tab

elle

-a Appen

deidati

-c Crea

nuove

tabelle

e dati

-p C

reale tab

ellesen

zadati

-g <geo

metry_

column>

specifica

ilnomedel cam

po

geometrico

-I Crea

l’indice

spaziale

-W <

enco

ding>

Specifica

la co

difica

carattere

-n Im

porta

solo I d

bf

Procedura di im

porta

zione

PostG

IS -Clau

dio R

occh

ini -

IGM

39

�Creare la cartella c:\lavo

ro

�Copiarci d

entro

i file shap

e e dbfda im

portare

�Aprire u

na sh

ellDOS (ad

esempio prem

endo Start –

Esegu

i, digitan

do cm

de p

remen

do O

K)

�Digitare il co

man

do:

�cd

\lavoro

�Digitare il co

man

do:

�sh

p2pgsq

l -s 32633 -c -g sh

ape –

I C010101_POL.sh

p

puglia.C

010101 > C

010101.sq

l

�Vien

e creato il file c0

10101.sq

l

Analisi dei parametri

PostG

IS -Clau

dio R

occh

ini -

IGM

40

�-s 32633 : selezio

na il sistem

a di riferim

ento

(32633 =

UTM Fu

so 32N, W

GS8

4, il sistem

a utilizzato

dalla P

uglia),

il sistema va in

dicato

perch

é Postgres n

on riesce a leggere

i file prj

�-c

: crea tabella e carica i d

ati

�-g shape : selezio

na “sh

ape” co

me n

ome d

ella colonna

geometrica

�–I: crea an

che l’in

dice sp

aziale

�C010101_POL.shp: il file d

a importare

�puglia.C010101: n

ome d

ella tabella d

a creare (nello

sch

ema “p

uglia”)

27/01/2010

11

Importa

zione delle altre

feature

PostG

IS -Clau

dio R

occh

ini -

IGM

41

�Si co

ntin

ua co

n il co

man

do:

�sh

p2pgsq

l -s 32633 -c -g sh

ape -I C

010107_LIN

.shp

puglia.C

010107 > C

010107.sq

l

�Quindi co

n il co

man

do:

�sh

p2pgsq

l -s 32633 -c -g sh

ape -I C

060106_POL.sh

p

puglia.C

060106 > C

060106.sq

l

�Infin

e riman

e da im

portare la tab

ella di so

li dati T

060106:

questa n

on è u

na featu

regeo

grafica ma u

na tab

ella pura,

utilizzare p

er implem

entare u

n attrib

uto

multivalo

re. In

questo

caso va aggiu

nto

l’opzio

ne –

n al p

osto

dell’o

pzio

ne –

I (che n

on serve). D

igitate il coman

do:

�sh

p2pgsq

l -s 32633 -c -g sh

ape -n

T060106_TY.d

bf

puglia.T

060106 > T060106.sq

l

Uno sguardo ai file

prodotti

PostG

IS -Clau

dio R

occh

ini -

IGM

42

�Lo stru

men

to utilizzato

pro

duce d

ei coman

di sq

lSET STANDARD_CONFORMING_STRINGS TO ON;

BEGIN;

CREATE TABLE "puglia"."c010101" (gidserial PRIMARY KEY,

"file_id" int4,

"codice_in" varchar(50),

"fonte" varchar(8),

"rilievo" varchar(8),

"tipo_elab" varchar(8),

"data_note" varchar(254),

"livello" int2,

"scala" varchar(10),

"ac_vei_zon" varchar(8),

"ac_vei_fon" varchar(8),

"ac_vei_sed" varchar(8),

"ac_vei_liv" varchar(8),

"shape_leng" numeric,

"shape_area" numeric);

SELECT AddGeometryColumn('puglia','c010101','shape','32633','MULTIPOLYGON',4);

INSERT INTO "puglia"."c010101" ("file_id","codice_in","fonte","rilievo“ …

Finestra

DOS durante l’im

porta

zione

PostG

IS -Clau

dio R

occh

ini -

IGM

43

Esecuzione dei file

SQL

PostG

IS -Clau

dio R

occh

ini -

IGM

44

�Adesso

biso

gna esegu

ire i file SQL pro

dotti.

�Un m

odo può essere q

uello

di u

tilizzare il coman

do D

OS

“psq

l”, ma n

oi in

vece utilizzerem

o l’in

terfaccia grafica.

�Da p

gAdmin III, lan

ciate la finestra SQ

L (E

xecute)

�Nella fin

estra SQL Edito

r, Selezionate il m

enù File

–Open

…, q

uindi selezio

nate il file “c0

10101.sq

l”

�Prem

ete il pulsan

te play (E

xecute) e atten

den

te l’esecu

zione d

ei coman

di SQ

L.

�Se tu

tto va b

ene il m

essaggio fin

isce con la frase: “Q

uery returned successfully w

ith no result in xxx ms.”

27/01/2010

12

Scherm

ata di eseguzionedell’S

QL

PostG

IS -Clau

dio R

occh

ini -

IGM

45

Esecuzione degli a

ltri file

PostG

IS -Clau

dio R

occh

ini -

IGM

46

�Ripetete il ciclo

di o

perazio

ni (O

pen

–Execu

te) con gli

altri file: C060106.sq

l, C010107.sq

l e T060106.sq

l.

�Atten

den

te pazien

temen

te il risultato

di o

gni esecu

zione.

�Il caricam

ento

dei d

ati è finito

.

�Po

tete dare u

no sgu

ardo ai m

etadati: n

ell’interfaccia

grafica selezionate la tab

ella public. geo

metry_

columns,

quindi p

remete il p

ulsan

te “View

data” (Tab

ella):