[Gfoss] ritagliare più shapefile con QGIS

Buona sera a tutti,

dovrei ritagliare la CTR vettoriale della Regione Liguria (composta da 77 shape file) con un confine comunale. Volevo sapere se con QGIS esiste qualche comando per intersecare tutti i 77 shape file con il confine comunale in un unico comando senza dover intersecarli singolarmente uno ad uno? grazie

luca volpin

Si puo' fare in modalita' batch, supponendo che:

* le 77 shape da clippare stiano nella cartella C:\INPUT
* la shape "tagliante" chiamata CONFINE.SHP stia nella cartella C:\CLIPPING
* il risultato del batch venga salvato nella cartella C:\OUTPUT

apri la shell Osgeo, e digita la seguente sintassi:

C:\> *OGR2OGR -CLIPSRC C:\CLIPPING\CONFINE.SHP C:\OUTPUT C:\INPUT*

<http://gfoss-geographic-free-and-open-source-software-italian-mailing.3056002.n2.nabble.com/file/n7585114/smile.gif&gt;

--
View this message in context: http://gfoss-geographic-free-and-open-source-software-italian-mailing.3056002.n2.nabble.com/ritagliare-piu-shapefile-con-QGIS-tp7585096p7585114.html
Sent from the Gfoss -- Geographic Free and Open Source Software - Italian mailing list mailing list archive at Nabble.com.

/
Luca Volpin wrote

grazie mille per l'informazione…. io ho il mac ….e onestamente non riesco
a trovare le cartelle C:\INPUT e C:\CLIPPING sai mica come posso fare?
grazie

/

Era un esempio di studio, avrei potuto chiamare le cartelle PIPPO e PLUTO...

Comunque sia, per lanciare il comando OGR2OGR hai bisogno di una shell Dos,
quindi vedo due possibilità:

1] installarsi un emulatore Windows sotto Mac
2] caricare shape e "GDAL tools" su un altro computer, sotto Win o Linux

Altre idee..?
<http://gfoss-geographic-free-and-open-source-software-italian-mailing.3056002.n2.nabble.com/file/n7585221/smile.gif&gt;

--
View this message in context: http://gfoss-geographic-free-and-open-source-software-italian-mailing.3056002.n2.nabble.com/ritagliare-piu-shapefile-con-QGIS-tp7585096p7585221.html
Sent from the Gfoss -- Geographic Free and Open Source Software - Italian mailing list mailing list archive at Nabble.com.

Il “mac” è unix. La shell e un terminale decente lo ha di default :wink:


41.95581N 12.52854E

http://www.linkedin.com/in/stefanoiacovella

http://twitter.com/#!/Iacovellas

Il 26/nov/2013 07:26 “antoniovinci” <sieradz@outlook.com> ha scritto:

/
Luca Volpin wrote

grazie mille per l’informazione…. io ho il mac ….e onestamente non riesco
a trovare le cartelle C:\INPUT e C:\CLIPPING sai mica come posso fare?
grazie

/

Era un esempio di studio, avrei potuto chiamare le cartelle PIPPO e PLUTO…

Comunque sia, per lanciare il comando OGR2OGR hai bisogno di una shell Dos,
quindi vedo due possibilità:

1] installarsi un emulatore Windows sotto Mac
2] caricare shape e “GDAL tools” su un altro computer, sotto Win o Linux

Altre idee…?
<http://gfoss-geographic-free-and-open-source-software-italian-mailing.3056002.n2.nabble.com/file/n7585221/smile.gif>


View this message in context: http://gfoss-geographic-free-and-open-source-software-italian-mailing.3056002.n2.nabble.com/ritagliare-piu-shapefile-con-QGIS-tp7585096p7585221.html
Sent from the Gfoss – Geographic Free and Open Source Software - Italian mailing list mailing list archive at Nabble.com.


Gfoss@lists.gfoss.it
http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss
Questa e’ una lista di discussione pubblica aperta a tutti.
I messaggi di questa lista non hanno relazione diretta con le posizioni dell’Associazione GFOSS.it.
666 iscritti al 22.7.2013

Interessantissimo, non conoscevo ogr2ogr.
Sapresti dirmi se esiste la possibilità di passare uno shapefile
C:\CLIPPING\CONFINI.SHP
che abbia più records (es.: centinaia di comuni) e looppare attraverso
i diversi record di questo shapefile per inserire in diverse cartelle
di output (es. c:\output\comune1, c:\output\comune2, ...dove comune1,
comune2 ecc. potrebbero essere i nomi o i codici ISTAT dei diversi
comuni) i risultati del clip dei diversi files presenti nella cartella
C:\INPUT secondo i tagli definiti dai diversi record dellla shape
"tagliante"?
Ho cercato esempi in rete ma senza trovare quello che mi sembra faccia
al mio caso.

Grazie,
Maurizio

Il 23/11/13, antoniovinci<sieradz@outlook.com> ha scritto:

Si puo' fare in modalita' batch, supponendo che:

* le 77 shape da clippare stiano nella cartella C:\INPUT
* la shape "tagliante" chiamata CONFINE.SHP stia nella cartella C:\CLIPPING
* il risultato del batch venga salvato nella cartella C:\OUTPUT

apri la shell Osgeo, e digita la seguente sintassi:

C:\> *OGR2OGR -CLIPSRC C:\CLIPPING\CONFINE.SHP C:\OUTPUT C:\INPUT*

<http://gfoss-geographic-free-and-open-source-software-italian-mailing.3056002.n2.nabble.com/file/n7585114/smile.gif&gt;

--
View this message in context:
http://gfoss-geographic-free-and-open-source-software-italian-mailing.3056002.n2.nabble.com/ritagliare-piu-shapefile-con-QGIS-tp7585096p7585114.html
Sent from the Gfoss -- Geographic Free and Open Source Software - Italian
mailing list mailing list archive at Nabble.com.
_______________________________________________
Gfoss@lists.gfoss.it
http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss
Questa e' una lista di discussione pubblica aperta a tutti.
I messaggi di questa lista non hanno relazione diretta con le posizioni
dell'Associazione GFOSS.it.
666 iscritti al 22.7.2013

/
Maurizio Trevisani wrote

possibilità di passare uno shapefile che abbia più records

/

A quest'ora della notte, ho la senzazione che sia fattibile in almeno 2 modi
diversi (escludendo il loop fra i record).

Siccome domani ho una consegna, non avro' la possibilita' di testare
fisicamente le 2 soluzioni, quindi mi limito a dare gli spunti che spero
qualcuno possa elaborare.

1] con OGR2OGR clippare tutto secondo l'unica shape tagliante, per poi
splittare i risultati con

VETTORE => STRUMENTI DI GESTIONE DATI => DIVIDI VETTORE

2] splittare la shape tagliante come sopra, rinominare i "pezzi" come
Pippo1,Pippo2,...,PippoN,
e lanciare OGR2OGR in un ciclo di "for" rispetto all'argomento PippoX (con X
incrementale da 1 ad N).

:slight_smile:

--
View this message in context: http://gfoss-geographic-free-and-open-source-software-italian-mailing.3056002.n2.nabble.com/ritagliare-piu-shapefile-con-QGIS-tp7585096p7585251.html
Sent from the Gfoss -- Geographic Free and Open Source Software - Italian mailing list mailing list archive at Nabble.com.

2013/11/27 Maurizio Trevisani <maurizio.trevisani@gmail.com>:

Interessantissimo, non conoscevo ogr2ogr.
Sapresti dirmi se esiste la possibilità di passare uno shapefile
C:\CLIPPING\CONFINI.SHP
che abbia più records (es.: centinaia di comuni) e looppare attraverso
i diversi record di questo shapefile per inserire in diverse cartelle
di output (es. c:\output\comune1, c:\output\comune2, ...dove comune1,
comune2 ecc. potrebbero essere i nomi o i codici ISTAT dei diversi
comuni) i risultati del clip dei diversi files presenti nella cartella
C:\INPUT secondo i tagli definiti dai diversi record dellla shape
"tagliante"?
Ho cercato esempi in rete ma senza trovare quello che mi sembra faccia
al mio caso.

se non ho capito male dovresti fare una cosa tipo questa (in linux,
in windows va adattata e dovresti usare la osgeo4w shell che contiene i
comandi grep e awk) :

#!/bin/bash
for c in `ogrinfo comuni.shp -sql "SELECT DISTINCT codistat FROM
comuni" | grep FIPS | awk '{print $4}'`
do
    for s in input/*.shp
    do
        echo "Genero clip di shapefile $s per codice istat $c..."
        mkdir output/$c
        ogr2ogr output/$c/${s%%.*}.shp $s -clipsrc comuni.shp
-clipsrcwhere "codistat='$c'"
    done
done

per adattarla su windows potresti fare tipo (non ho un pc con windows
su cui testare):

for /F "tokens=*" %%c IN ('ogrinfo comuni.shp -sql "SELECT DISTINCT
codistat FROM comuni" ^| grep iso2 ^| awk "{print $4}"') do (
  for /r %s in (input/*.shp) do (
     echo "Genero clip di shapefile %%s per codice istat %%c..."
     mkdir output/%%c
     ogr2ogr output/%%c/%%f $s -clipsrc comuni.shp -clipsrcwhere
"codistat='%%c'"
  )
)

ciao
p

--
Paolo Corti
Geospatial software developer
web: http://www.paolocorti.net
twitter: @capooti
skype: capooti

provo subito,
grazie
:slight_smile:

Il 27/11/13, Paolo Corti<pcorti@gmail.com> ha scritto:

2013/11/27 Maurizio Trevisani <maurizio.trevisani@gmail.com>:

Interessantissimo, non conoscevo ogr2ogr.
Sapresti dirmi se esiste la possibilità di passare uno shapefile
C:\CLIPPING\CONFINI.SHP
che abbia più records (es.: centinaia di comuni) e looppare attraverso
i diversi record di questo shapefile per inserire in diverse cartelle
di output (es. c:\output\comune1, c:\output\comune2, ...dove comune1,
comune2 ecc. potrebbero essere i nomi o i codici ISTAT dei diversi
comuni) i risultati del clip dei diversi files presenti nella cartella
C:\INPUT secondo i tagli definiti dai diversi record dellla shape
"tagliante"?
Ho cercato esempi in rete ma senza trovare quello che mi sembra faccia
al mio caso.

se non ho capito male dovresti fare una cosa tipo questa (in linux,
in windows va adattata e dovresti usare la osgeo4w shell che contiene i
comandi grep e awk) :

#!/bin/bash
for c in `ogrinfo comuni.shp -sql "SELECT DISTINCT codistat FROM
comuni" | grep FIPS | awk '{print $4}'`
do
    for s in input/*.shp
    do
        echo "Genero clip di shapefile $s per codice istat $c..."
        mkdir output/$c
        ogr2ogr output/$c/${s%%.*}.shp $s -clipsrc comuni.shp
-clipsrcwhere "codistat='$c'"
    done
done

per adattarla su windows potresti fare tipo (non ho un pc con windows
su cui testare):

for /F "tokens=*" %%c IN ('ogrinfo comuni.shp -sql "SELECT DISTINCT
codistat FROM comuni" ^| grep iso2 ^| awk "{print $4}"') do (
  for /r %s in (input/*.shp) do (
     echo "Genero clip di shapefile %%s per codice istat %%c..."
     mkdir output/%%c
     ogr2ogr output/%%c/%%f $s -clipsrc comuni.shp -clipsrcwhere
"codistat='%%c'"
  )
)

ciao
p

--
Paolo Corti
Geospatial software developer
web: http://www.paolocorti.net
twitter: @capooti
skype: capooti