ritagliare più shapefile con QGIS

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
8 messages Options
Reply | Threaded
Open this post in threaded view
|

ritagliare più shapefile con QGIS

Luca Volpin
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

_______________________________________________
[hidden email]
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
Reply | Threaded
Open this post in threaded view
|

Re: ritagliare più shapefile con QGIS

antoniovinci
This post was updated on .
Si puo' fare in modalita' batch, supponendo che:

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

apri la shell Osgeo, e digita la seguente sintassi:

C:\> OGR2OGR -CLIPSRC D:\CLIPPING\CONFINE.SHP D:\OUTPUT D:\INPUT
Reply | Threaded
Open this post in threaded view
|

Re: ritagliare più shapefile con QGIS

antoniovinci
This post was updated on .
In reply to this post by Luca Volpin
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..?
Reply | Threaded
Open this post in threaded view
|

Re: ritagliare più shapefile con QGIS

Stefano Iacovella

Il "mac" è unix. La shell e un terminale decente lo ha di default ;-)

---------------------------------------------------
41.95581N 12.52854E

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

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

Il 26/nov/2013 07:26 "antoniovinci" <[hidden email]> 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.
_______________________________________________
[hidden email]
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

_______________________________________________
[hidden email]
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
Reply | Threaded
Open this post in threaded view
|

Re: ritagliare più shapefile con QGIS

Maurizio Trevisani
In reply to this post by antoniovinci
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<[hidden email]> 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>
>
>
>
> --
> 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.
> _______________________________________________
> [hidden email]
> 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
_______________________________________________
[hidden email]
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
Reply | Threaded
Open this post in threaded view
|

Re: ritagliare più shapefile con QGIS

antoniovinci
This post was updated on .
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).
Reply | Threaded
Open this post in threaded view
|

Re: ritagliare più shapefile con QGIS

Paolo Corti
In reply to this post by Maurizio Trevisani
2013/11/27 Maurizio Trevisani <[hidden email]>:

> 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
_______________________________________________
[hidden email]
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
Reply | Threaded
Open this post in threaded view
|

Re: ritagliare più shapefile con QGIS

Maurizio Trevisani
provo subito,
grazie
:-)


Il 27/11/13, Paolo Corti<[hidden email]> ha scritto:

> 2013/11/27 Maurizio Trevisani <[hidden email]>:
>> 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
>
_______________________________________________
[hidden email]
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