Fondere molti shapefile

Questo post ha lo scopo di fornire assistenza a persone che stanno cercando di unire molti shapefile (presenti in una cartella) in un singolo shp in ambiente Windows o Linux usando strumenti Open Source.

Risolveremo il problema usando la riga di comando, la libreria GDAL/OGR, mapshaper, la shell di OSGeo4W e Bash su Ubuntu come sottosistema Win 10.

Dati

Cartella con 390 shapefile, uno per ogni Comune della Regione Siciliana:

Cartella con 390 shp

OSGeo4W Shell

Lo script che permette di fondere tutti gli shp in uno solo (merged.shp) è:

for %f in (*.shp) 
do (
if not exist merged.shp 
(ogr2ogr -f “esri shapefile” merged.shp %f) 
else 
(ogr2ogr -f “esri shapefile” -update -append merged.shp %f -nln Merged )
)

Bash Ubuntu sotto Win 10

Lo script che permette di fondere tutti gli shp in uno solo (merged.shp) è:

for f in *.shp;
do 
ogr2ogr -update -append merged.shp $f -f "ESRI Shapefile";
done;

Mapshaper

La ricetta che permette di fondere tutti gli shp in uno solo (merged.shp) è:

mapshaper -i *.shp encoding=latin1 combine-files -merge-layers -o merged.shp

QGIS processing

Permette di fondere i vettori caricati in QGIS oppure dal File Sistem

Fondi vettori

NOTE FINALI:

Ho testato tutti i metodi sopra descritti e rimango stupefatto dalla semplicità di mapshaper: in una sola riga e senza cicli è possibile “mergiare” 390 shp in pochi secondi.

Bash Ubuntu Win 10

Riferimenti:

Ringraziamenti:

Dati:

Se il blog post vi è piaciuto cliccate su ‘Mi piace’, grazie!!!
if you liked the blog post click on ‘Like’, thank you !!!

Se il post vi è stato utile contribuite a mantenerlo aggiornato PayPal

Pubblicità

3 pensieri su “Fondere molti shapefile

  1. Molto interessante il fatto di fondere vettori, bypassando qgis, specie se sono centinaia se non migliaia di file, tipo i classici shapefile, usando GDAL.

    Riporto qui sotto qualche esempio, un caso in cui si abbiano centinaia di shapefile, con prefissi variabili e suffissi costanti, copiando ed incollando il codice nella OSGeo4W Shell per ottenere un unico DB Spatialite.
    Es. Come fondere gli shapefile del catasto del Trentino Alto-Adige, scaricabili gratuitamente da Openkat:

    for %f in (C:\GIS_Laboratorio\Input\*_fix_points.shp) do (ogr2ogr -f SQLITE C:\GIS_Laboratorio\Spatialite\TN_catasto.sqlite %f -update -append -dsco SPATIALITE=YES -lco LAUNDER=YES -lco GEOMETRY_NAME=geo -nlt POINT -nln punti_fiduciali)

    for %f in (C:\GIS_Laboratorio\Input\*_vl_local_name.shp) do (ogr2ogr -f SQLITE C:\GIS_Laboratorio\Spatialite\TN_catasto.sqlite %f -update -append -dsco SPATIALITE=YES -lco LAUNDER=YES -lco GEOMETRY_NAME=geo -nlt POINT -nln nomi_locali)

    for %f in (C:\GIS_Laboratorio\Input\*_vl_parcel_poly.shp) do (ogr2ogr -f SQLITE C:\GIS_Laboratorio\Spatialite\TN_catasto.sqlite %f -update -append -dsco SPATIALITE=YES -lco LAUNDER=YES -lco GEOMETRY_NAME=geo -nlt POLYGON -nln catasto)

    "Mi piace"

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo di WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione /  Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione /  Modifica )

Connessione a %s...

Questo sito utilizza Akismet per ridurre lo spam. Scopri come vengono elaborati i dati derivati dai commenti.