[Spatialite] caricare shapefile in batch

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

[Spatialite] caricare shapefile in batch

Amedeo Fadini
Salve a tutti,

ma qual'è il modo migliore per caricare una serie di shapefile in un
db spatialite? finora me la sono cavata egregiamente con ogr2ogr da
script Bash o Dos, ho provato ad utilizzarlo anche all'interno di
pyQgis per un plugin che porto avanti nei ritagli di tempo [0], ma
dovrebbe esserci qualcosa di meglio... pyspatialite? Qspatialite?

tenete presente che dovendo caricare e mosaicare la CTR voglio:

- creare la tabella se non esiste, altrimenti aggiungere le feature
- creare l'indice spaziale alla fine
- se il tracciato campi da uno shape all'altro è differente aggiungere
i campi nuovi

forse vale la pena mettersi a fare tutto in python leggendo le
features con pyshp?
Quale strada mi consigliate? Qualche plugin da cui prendere esempio?

amefad

[0] https://gitlab.com/Amefad/importCtr/blob/master/ctr_import_dialog.py
_______________________________________________
[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.
786 iscritti al 30.9.2015
Reply | Threaded
Open this post in threaded view
|

Re: [Spatialite] caricare shapefile in batch

a.furieri
On Fri, 2 Oct 2015 13:39:15 +0200, Amedeo Fadini wrote:
> Salve a tutti,
>
> ma qual'è il modo migliore per caricare una serie di shapefile in un
> db spatialite? finora me la sono cavata egregiamente con ogr2ogr da
> script Bash o Dos
>

ottima scelta: ogr2ogr offre un supporto veramente buono per
spatialite, e tra l'altro supporta pure la modalita' append.

ottima anche la scelta di lavorare direttamente da shell
lasciando completamente perdere la GUI; quando devi fare
import massivi e che coinvolgono tanti files diversi usare
una interfaccia grafica e' uno degli approcci piu' irrazionali
e meno produttivi che la mente umana possa concepire.


> ho provato ad utilizzarlo anche all'interno di
> pyQgis per un plugin che porto avanti nei ritagli di tempo [0], ma
> dovrebbe esserci qualcosa di meglio... pyspatialite? Qspatialite?
>

certamente esiste qualcosa di meglio (piu' flessibile, piu'
efficiente, meglio controllabile): lascia perdere pyspatialite
e/o qspatialite.

fatti piuttosto un bello script SQL, magari anche bello polposo
da un migliaio di righe (e pure oltre, se serve).
spatialite ti mette direttamente a disposizione tutte le funzioni
SQL che ti servono per accedere ai tuoi SHP esterni (e magari
pure per tirare dentro qualche file csv, foglio excel etc):
https://www.gaia-gis.it/fossil/libspatialite/wiki?name=4.2.1+functions#2

per scrivere uno sql script ti basta "vi" (o qualsiasi altro
text editor a tua scelta): e per lanciarlo in esecuzione ti
basta semplicemente la shell dei comandi passando il tuo
script sullo standard input di spatialite (CLI)

# spatialite miodb.sqlite <mio-scropt.sql

se usi saggiamente le transazioni puoi arrivare ad ottenere
qualcosa che ha la medesima robustezza di un carro armato.

magari all'inizio ti potra' sembrare un modo stravagante di
lavorare; ma vedrai che quando ci avrai preso la mano finarai
per scoprire anche tu (come moltissimi altri power-users) che
ricorrerre massivamente agli sql scripts lanciati in batch e'
il modo piu' elegantemente efficiente e produttivo per sfruttare
fino in fondo tutta la potenza di cui un DBMS e' capace.

ciao Sandro
_______________________________________________
[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.
786 iscritti al 30.9.2015
Reply | Threaded
Open this post in threaded view
|

Re: [Spatialite] caricare shapefile in batch

Andrea Peri
In reply to this post by Amedeo Fadini
io questo tipo di attivita' la eseguo da dentro la console di
spatialite, con il comando

.loadshp ....

Ma effettua il load di un unico shapefile per cui devi reiterare per
ogni sp che vuoi caricare.

A.

Il 02/10/2015 13:39, Amedeo Fadini ha scritto:

> Salve a tutti,
>
> ma qual'è il modo migliore per caricare una serie di shapefile in un
> db spatialite? finora me la sono cavata egregiamente con ogr2ogr da
> script Bash o Dos, ho provato ad utilizzarlo anche all'interno di
> pyQgis per un plugin che porto avanti nei ritagli di tempo [0], ma
> dovrebbe esserci qualcosa di meglio... pyspatialite? Qspatialite?
>
> tenete presente che dovendo caricare e mosaicare la CTR voglio:
>
> - creare la tabella se non esiste, altrimenti aggiungere le feature
> - creare l'indice spaziale alla fine
> - se il tracciato campi da uno shape all'altro è differente aggiungere
> i campi nuovi
>
> forse vale la pena mettersi a fare tutto in python leggendo le
> features con pyshp?
> Quale strada mi consigliate? Qualche plugin da cui prendere esempio?
>
> amefad
>
> [0] https://gitlab.com/Amefad/importCtr/blob/master/ctr_import_dialog.py
> _______________________________________________
> [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.
> 786 iscritti al 30.9.2015

_______________________________________________
[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.
786 iscritti al 30.9.2015