Importare shapefile in un db.sqlite utilizzando la shell

Quando si lavora con molti shapefile, prima o poi, nasce l’esigenza di utilizzare un database spatialite per evitare, quanto meno, il numero esagerato di file e lavorare con uno solo.

Vediamo come importare tutti gli shapefile (*.shp) presenti in una cartella in un database spatialite facendo uso della potenza della linea di comando shell di MSYS:

cartella di esempio con 5 shapefile:

N1
cartella con 5 shp – 20 file

 

 

 

 

Installando QGIS nel PC verrà installato anche il terminale MSYS:

N2

avviato, si presenterà cosi in attesa di un comando:

N3
shell MSYS

lo script ‘import.sh‘ occorre eseguirlo dalla cartella che contiene gli *.shp e lo script stesso, quindi dobbiamo portarci nella giusta cartella:

  1. copiare il percorso della cartella (es: C:/giuseppe/pill/coreglia_a/test); NB: utilizzare / e non \;
  2. incollare il percorso in un notepad ed aggiungere cd  davanti al percorso ( cd C:/giuseppe/pill/coreglia_a/test );
  3. copiate tutto e andate nella shell, posizionatevi con il mouse dopo il $ e pigiate il tasto destro del mouse per incollare il percorso;N4
  4. dopo INVIO, vi ritroverete all’interno della cartella utile al nostro scopo:N5
  5. digitiamo, ora, il nome del file ‘import.sh‘ e INVIO:N6
  6. dopo l’invio verrà visualizzato una serie di stringhe che ci aggiorna sull’esecuzione dello script:N7
  7. fatto; ha importato gli shapefile nel database (se esistente, altrimenti lo crea in automatico);
  8. N8
  9. ecco il database spatialite con le 5 tabelle spaziali: N9

Note finali: affinché ogni tabella (ex-shapefile) importata in spatialite abbia il suo SRS occorre che esista, nella cartella di partenza, il relativo file .prj; aggiungo che, le estensioni dei vari file dello shapefile devono essere tutti minuscoli o MAIUSCOLI (.shp, shx, dbf. .prj; .SHP, SHX, .DBF, PRJ) altrimenti il terminale non li riconosce.


VIDEO:

Buon lavoro!!!

 

Ringraziamenti:

Andrea Borruso, per lo script e la pazienza!!!

La Mailing List QGIS ITA

 

 

 

Annunci

7 pensieri su “Importare shapefile in un db.sqlite utilizzando la shell

    1. Ciao,
      le vestizioni dipendono dal software GIS che usi: es: se usi QGIS è possibile creare un file .qml che contiene la vestizione del layer, ma è un file che legge solo QGIS; esistono altri formati di intescambio tipo SLD ma non sempre sono compatibili tra i vari software GIS in quanto NON esiste uno standard sulle vestizioni.
      Detto ciò è possibile salvare in un database (spatilite o postgis) lo stile dei vari layer in una tabella particolare ‘layer_styles’ in formato xml; per far ciò basti tematizzare un layer (proveniente da un database) e poi, dalle proprietà del layer, salva stile nel database.
      Rendere automatico questo processo, come descritto per gli shapefile, non ho mai avuto la necessità di farlo.
      ciao

      Mi piace

  1. Bellissimo. Ho però un problema: non trovo MSYS. Ricordo che quando minstallai le prime versioni di QGis in effetti mi figurava questa misteriosa icona di MSys, ma all’epoca ero alle primissime armi e QGis mi avanzava e mi bastava. Adesso ho installato la versione 2.18.9 e mi sono accorto che Msys non c’è più. Come posso fare? E’ nascosto da qualche parte o devo installarlo come cosa aggiuntiva? Grazie.

    Mi piace

    1. Strano che non trovi l’applicativo, forse non compare più l’icona: prova a cercarlo in QGIS/apps/msys

      io ormai uso la versione OSGeo4W e non so più cosa accade nella standalone 😉

      Mi piace

  2. Per chi utilizzasse ubuntu o derivate può provare con questo script (da utilizzare nello stesso modo spiegato dall’incomparabile Totò, che ringrazio per il suo prezioso servizio di divulgazione):

    #!/bin/bash
    for f in `ls *.shp`
    do
    echo “Append shapefile ” $f ” …..”
    ogr2ogr -update -append output.sqlite $f -f “SQLite” -dsco SPATIALITE=YES -a_srs “EPSG:3003”
    done

    Liked by 1 persona

Rispondi

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

Logo WordPress.com

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

Foto Twitter

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

Foto di Facebook

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

Google+ photo

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

Connessione a %s...