Aspettando la fine del vetusto shapefile in questo articolo farò vedere, usando la CLI (Command Line Interface) riga di comando, come ‘passare’ da un insieme di shapefile a un unico geopackage e viceversa, cioè da un unico geopackage – con tanti vettori – a tanti shapefile distinti. Per maggiori dettagli su cosa sia un geopackage potete leggere questo mio post.
Da shapefile a geopackage:
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/bin/bash | |
| set -x | |
| for i in *.shp; | |
| do | |
| ogr2ogr -f 'GPKG' -append pacchetto.gpkg "$i"; | |
| done |
lo script va eseguito all’interno della cartella che contiene gli shapefile ottenendo un unico geopackage con tanti vettori quanti sono gli shapefile e con stessi nominativi.
Da geopackage a shapefile:
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/bin/bash | |
| set -x | |
| # estrae tutti i vettori nella cartella output | |
| ogr2ogr -f 'ESRI Shapefile' output pacchetto.gpkg |
lo script genera tanti shapefile quanti sono i vettori all’interno del geopackage e li mette tutti all’interno della cartella output; in questo processo si potrebbero perdere alcune informazioni per esempio se la lunghezza dei nomi dei campi degli shp supera i 10 caratteri si avrà un troncamento degli stessi (la cli visualizzerà dei warning).
Buon lavoro
Un doveroso grazie al mio amico Andy
Geopackage di esempio.
Ciao Salvatore,
volevo caricare una serie di shapefile, presenti in una stessa cartella, in una unica “mossa”, attraverso ogr2ogr e la OSGEO4W SHELL.
Dalla Shell entro nella cartella dove sono tutti i file e scrivo:
ogr2ogr -f GPKG nome_gpkg *. shp
Una volta inviato, noto che il gpkg si crea, ma è vuoto e soprattutto nella shell mi compare un errore del genere:
ERROR 1: Couldn’t fetch requested layer ‘xxx.shp’
(xxx.shp uno dei tanti shape file presenti nella cartella che vorrei importare)
Che cosa sbaglio? Perché non vengono caricati gli shape?
Grazie,
Un saluto
Eugenio
"Mi piace""Mi piace"
ma perché non uso un ciclo for come nel primo esempio del posto?
"Mi piace""Mi piace"