[Gfoss] Spatialite - fusione massiva di svariati shp in un unico layer

falcerisimone a inwind.it falcerisimone a inwind.it
Mer 14 Nov 2018 18:52:02 CET


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";


Maggiori informazioni sulla lista Gfoss