[Gfoss] clip

>P.S.: Sto provando a tagliare con postgis in questo momento. Utilizzo la seguente query:
>create table grid_cut as select g."campo1",Intersection(g.the_geom, f.the_geom) AS the_geom from layer1 f, layer2 g where f.the_geom && g.the_geom and Intersects(g.the_geom, f.the_geom);
>
>Con spatialite funzionerebbe?

Io taglio regolarmente con spatialite, e si tratta di roba anche molto pesa.

Se sono minuzzaglie allora va anche bene usare uno strumento gis desktop.
Ma se sono roba corposa io userei decisamente spatialite (o postgis se ne hai uno sottomano), ma bada che comunque spatialite non ha niente da

inviadiare a postgis su questo fronte.

La query che hai scritto te, va bene solo in teoria.
Quasi sempre su archivi reali in un 1% di casi, quando si taglia, si generano delle geometrie non valide oppure delle geometrie complesse.

Di conseguenza ti ritroverai' una tabella con il campo geometrico di tipo "geometry" egnerico e non potrai impiegarlo.

Per depurare il risultato della query occorre aggiungervi alcune funzioni ad hoc.

Ma esse dipendono dal tipo di archivio che stai trattando.
Devi un po' studiare la manualistica.
Io ti consiglio di impiegare spatialite, che ti rende piu' semplice la vita nella fase iniziale (import da shapefile) e finale (export su shapefile)

e poi e' piu' versatile.

Qualche dritta e spiegazione su come correggere le query la trovi in questo thread:
[http://lists.gfoss.it/pipermail/gfoss/2011-November/020699.html](http://lists.gfoss.it/pipermail/gfoss/2011-November/020699.html)

Invece delle dritte su come correggere le geometrie invalide le trovi su questo fantastico documento di Ramsey.

[http://s3.opengeo.org/postgis-power.pdf](http://s3.opengeo.org/postgis-power.pdf)

L'unica cosa che non hai su spatialite (per ora) e' la ST_MakeValid(), 
ma per i problemi che ti nasceranno dai tagli potrai sopperire con le soluzioni che Ramsey indica in quel documento.

Io li uso regolarmente con spatialite e funzioanno alla grande.

Saluti,

Andrea Peri
. . . . . . . . .
qwerty àèìòù

On Wed, Dec 14, 2011 at 02:03:34PM +0100, Andrea Peri wrote:

Io ti consiglio di impiegare spatialite, che ti rende piu' semplice la
vita nella fase iniziale (import da shapefile) e finale (export su
shapefile)

Posso chiedere lumi circa la maggior complessita' di PostGIS nella fase
di import/export shapefile ? Magari si puo' semplificare qualcosa, in vista
del rilascio della 2.0.

Grazie.

--strk;

  ,------o-.
  | __/ | Thank you for PostGIS-2.0 Topology !
  | / 2.0 | http://www.pledgebank.com/postgistopology
  `-o------'

Il 14/12/2011 14:10, Sandro Santilli ha scritto:

Posso chiedere lumi circa la maggior complessita' di PostGIS nella fase
di import/export shapefile ? Magari si puo' semplificare qualcosa, in vista
del rilascio della 2.0.

oggi si possono importare shp in sl e pg anche solo droppandoceli, via DB Manager (plugin di QGIS).
Saluti.

--
Paolo Cavallini
See: http://www.faunalia.it/pc

Non e’ correggibile, la differenza è insita nella modalita’ implementativa dei due sistemi.

Spatialite, ha una sua console specifica, all’interno della quale si puo’ fare un semplice comando:

.loadshp …
e ci si ritrova lo shapefile caricato in una tabella.

poi con
.dumpshp …
si riesce a ributtare una tabella in uno shapefile (ovviamente devono essere compatibili come geometria e struttura).

Su postgis non si puo’ operare sempre all’interno del medesimo ambiente.
Perche’ la console di postgis e’ in realta’ quella di postgres e non ha dei comandi dot come la console di spatialite (ne’ penso li potrebbe avere)

Per cui , in postgis si deve per prima cosa usar “shp2sql” e generarsi il file sql, poi con psql lo si carica su postgis.
E’ vero che in alternativa si potrebbe usare ogr2ogr, ma si e’ sempre su una shell e poi si entra in psql per dare i comandi sql per il clip.

Invece da spatialite si fa’ tutto dall’interno del medesimo ambiente.
Almeno su questo punto postgis prende un gol da spatialite.

Anche se poi sono il primo a dire che alla lunga vince postgis ci mancherebbe altro, spatialite ha delle mancanze strutturali importanti.

IN PRIMIS LA STORIA DEGLI INDICI SPAZIALI !!!

e infatti poi la query sara’ un po’ piu’ complessa da scriversi.
Ma una volta scritta va sempre bene e la ricicli in ogni circostanza in cui devi clippare.

Per cui chi deve semplicemente clippare un archivio in shapefile, e poi riportarsi il risultato anche esso in shapefile, fa certamente prima a passare da spatialite .

Andrea.

Il giorno 14 dicembre 2011 14:10, Sandro Santilli <strk@keybit.net> ha scritto:

On Wed, Dec 14, 2011 at 02:03:34PM +0100, Andrea Peri wrote:

Io ti consiglio di impiegare spatialite, che ti rende piu’ semplice la
vita nella fase iniziale (import da shapefile) e finale (export su
shapefile)

Posso chiedere lumi circa la maggior complessita’ di PostGIS nella fase
di import/export shapefile ? Magari si puo’ semplificare qualcosa, in vista
del rilascio della 2.0.

Grazie.

–strk;

,------o-.
| __/ | Thank you for PostGIS-2.0 Topology !
| / 2.0 | http://www.pledgebank.com/postgistopology
`-o------’

Andrea Peri
. . . . . . . . .
qwerty àèìòù

On Wed, 14 Dec 2011 14:10:09 +0100, Sandro Santilli wrote

Posso chiedere lumi circa la maggior complessita' di PostGIS nella fase
di import/export shapefile ? Magari si puo' semplificare qualcosa,
in vista del rilascio della 2.0.

a) SpatiaLite supporta VirtualShape; tramite una semplice
   CREATE VIRTUAL TABLE abcd USING (args);
   puoi interrogare al volo [in puro SQL] qualsiasi SHP
   esterno senza alcun bisogno di importarlo preventivamente
   dentro al DBMS
   e poi per chiudere la connessione con lo SHP esterno basta
   DROP TABLE abcd;
   p.es. questo ti consente di importare una porzione
   selezionata invece di tutto quanto, ti permette di
   cambiare i nomi di tavola e di colonna a piacere,
   sopprimere colonne, aggiungere colonne calcolate etc
   Insomma, e' dannatamente flessibile :wink:
   E' puro SQL, ed e' direttamente intergrato dentro
   al main-core: funziona da GUI, funziona da CLI,
   funziona negli SQL scripts, e naturalmente funziona
   anche da C/C++ Python Java etc

b) sia SpatiaLite CLI-front-end che spatialite_gui ti
   permettono di importare/esportare "al volo" SHP,
   ma anche DBF, TXT/CSV, HTML, GeoJSON, KML etc etc

diciamo per capirci che l'equivalente sarebbe se PSQL
potesse supportare un qualche magico comando interno
che consentisse di importare/esportare direttamente
uno SHP

oppure come se PgAdminIII avesse tra i vari bottoni
della toolbar e su qualche menu popup anche le
opzioni "importa SHP", "esporta SHP" etc

ciao Sandro

On Wed, Dec 14, 2011 at 02:26:29PM +0100, Andrea Peri wrote:

Spatialite, ha una sua console specifica, all'interno della quale si puo'
fare un semplice comando:

.loadshp ....
e ci si ritrova lo shapefile caricato in una tabella.

poi con
.dumpshp ...
si riesce a ributtare una tabella in uno shapefile (ovviamente devono
essere compatibili come geometria e struttura).

Su postgis non si puo' operare sempre all'interno del medesimo ambiente.
Perche' la console di postgis e' in realta' quella di postgres e non ha dei
comandi dot come la console di spatialite (ne' penso li potrebbe avere)

Capito, grazie delle informazioni.

Da utente UNIX non riesco ad apprezzare la differenza, perche' per me
l' "ambiente unico" e' la shell di unix, e psql e' solo un'altro elemento
da usare nell'ambiente:

$ shp2pgsql myshape | psql
$ psql -c "update myshape set the_geom = st_makevalid(the_geom)"
$ pgsql2shp myshape

Come dici tu ``psql'' non e' specifico di PostGIS, ma ha dei
comandi "dot" (quelli che iniziano con il backslash).

Purtroppo sebene funzioni usare il pipe in output:

=> \o | mail strk@keybit.net

Lo stesso non funziona in input:

=> \i !shp2psgql myshape

Quindi pare che ad oggi l'unico modo per farlo senza uscire sia:

=> \! shp2pgsql myshape | psql

Consentire a psql una maggior flessibilita' nell'estensione dei
comandi sarebbe un progetto interessante.

--strk;

  ,------o-.
  | __/ | Thank you for PostGIS-2.0 Topology !
  | / 2.0 | http://www.pledgebank.com/postgistopology
  `-o------'

On Wed, Dec 14, 2011 at 02:38:03PM +0100, a.furieri@lqt.it wrote:

diciamo per capirci che l'equivalente sarebbe se PSQL
potesse supportare un qualche magico comando interno
che consentisse di importare/esportare direttamente
uno SHP

Ci vorrebbe una versione estendibile di psql, ad oggi
non e' disponibile, ma sono sicuro che delle modifiche
in quella direzione sarebbero ben accette.

oppure come se PgAdminIII avesse tra i vari bottoni
della toolbar e su qualche menu popup anche le
opzioni "importa SHP", "esporta SHP" etc

Credo questa ci sia, e' la gui del loader di postgis,
che si integra con PgAdminIII.
Io non l'ho mai usata (non sono tipo da gui) ma e'
uno sviluppo recente.

--strk;

  ,------o-.
  | __/ | Thank you for PostGIS-2.0 Topology !
  | / 2.0 | http://www.pledgebank.com/postgistopology
  `-o------'

Il 14/12/2011 19:08, Francesco ha scritto:

Con postgis ha funzionato perfettamente, anche se ci ha messo un sacco
di tempo, forse dovevo utilizzare gli indici spaziali (in effetti però

Si. Gli indici spaziali sono un "must" per il clip.

non ho provato a controllare l'integrità geometrica). Ho provato a fare
la stessa cosa con spatialite, ma continuo ad ottenere tabelle vuote.
Probabimente la sintassi non è sovrapponibile con quella di postgis.

strano....

Non dovrebbe esserci niente.

l'unica differenza e' l'impiego di 1/0 al posto di true/false in ST_Intersects(..)

Andrea.