Spatialite - fusione massiva di svariati shp in un unico layer

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

Spatialite - fusione massiva di svariati shp in un unico layer

Falz
Ciao!
Gentilmente, essendo poco pratico con le shell cli, volevo fondere centinaia di shp con spatialite_gui in un unico layer "fusion" con uno script sql. Ho provato con ogr2ogr, ma crea una abnorme schifezza inutilizzabile (virtual FDO...).
Ho appenda scoperto la funzione Importshp(path, nome_nuova_tabella, UTF-8);
Come dovrei settare per ogni shp senza passare per le virtual tables?
Grazie 1000!
SF
 
--FUSIONE MASSIVA DI PIU SHAPEFILES
--1) crea la tabella geometrica contenitore
create table fusion
(pt_type text,
pt_code text,
pt_ccat integer,
pt_fabb text);
select addgeometrycolumn('fusion','geom',3044,'POLYGON',2);

--2) elenca tutti gli shp che vuoi importare e mergiare
CREATE VIRTUAL TABLE "001_vl_parcel_poly"
USING VirtualShape('C:\temp\_test\001_vl_parcel_poly', 'UTF-8', 3044);
insert into fusion (pt_type, pt_code, pt_ccat, pt_fabb, geom)
select pt_type, pt_code, pt_ccat, pt_fabb, geometry
from "001_vl_parcel_poly";
DELETE FROM virts_geometry_columns WHERE virt_name='001_vl_parcel_poly';
DROP TABLE "001_vl_parcel_poly";

CREATE VIRTUAL TABLE "002_vl_parcel_poly"
USING VirtualShape('C:\temp\_test\002_vl_parcel_poly', 'UTF-8', 3044);
insert into fusion (pt_type, pt_code, pt_ccat, pt_fabb, geom)
select pt_type, pt_code, pt_ccat, pt_fabb, geometry
from "002_vl_parcel_poly";
DELETE FROM virts_geometry_columns WHERE virt_name='002_vl_parcel_poly';
DROP TABLE "002_vl_parcel_poly";
_______________________________________________
[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.
796 iscritti al 28/12/2017
Reply | Threaded
Open this post in threaded view
|

Re: Spatialite - fusione massiva di svariati shp in un unico layer

a.furieri
On Wed, 14 Nov 2018 18:52:02 +0100 (CET), [hidden email]
wrote:
> Ciao!
> Gentilmente, essendo poco pratico con le shell cli, volevo fondere
> centinaia di shp con spatialite_gui in un unico layer "fusion" con
> uno
> script sql. Ho provato con ogr2ogr, ma crea una abnorme schifezza
> inutilizzabile (virtual FDO...).
>

gdal fa un ottimo lavoro con SpatiaLite, sei tu che stai chiamando
ogr2ogr nel modo sbagliato.
il driver SQLite di GDAL e' in grado di gestire diversi formati:
FDO, GPKG e SpatiaLite.
se vuoi usare il formato SpatiaLite devi impostare un'opzione
apposita, che se non erro dovrebbe essere

-dsco SPATIALITE=YES

comunque leggiti la doc del driver GDAL, vedrai che in fondo ci
sono esempi specifici per SpatiaLite

https://www.gdal.org/drv_sqlite.html


> Ho appenda scoperto la funzione Importshp(path, nome_nuova_tabella,
> UTF-8);
> Come dovrei settare per ogni shp senza passare per le virtual tables?
>

se il tuo problema e' "fondere" qualche centinaio di SHP in
una singola Spatial Table la ImportSHP() ti sara' poco utile,
visto che per ogni singolo SHP richiede di creare una nuova
tavola.
direi che ogr2ogr si adatta meglio al tuo caso specifico.
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.
796 iscritti al 28/12/2017