Grazie mille Sandro, ho dato una attenta lettura ad entrambe le mail ma mi servirà un po' per assimilare gli script della seconda :D Per il "battesimo" della tabella hai ragione ma volevo cercare di mantenere inalterati i nomi degli shp presi dal PTR della Campania da cui provengono i vettori del geodatabase di prova.
____________ Massimiliano Moraca <http://massimilianomoraca.it/> Il giorno 24 ottobre 2017 14:56, <a.furi...@lqt.it> ha scritto: > On Tue, 24 Oct 2017 14:53:44 +0200, a.furi...@lqt.it wrote: > >> vedi l'esempio allegato (che si basa sul tuo DB campione). >> >> > sorry, pare che la mailing lista non accetta neppure 3KB > di allegato. > > copio lo SQL script a seguire nel corpo della mail > S > > -------------------------------------------------------- > -- > -- abbiamo appena creato un nuovo DB "MAIN", che e' ancora completamente > vuoto. > -- ora "attacchiamo" al "MAIN" il DB "vecchio" che contiene i dati da > importare > -- > ATTACH DATABASE './campania_test.sqlite' AS vecchio; > > -- > -- ora utilizziamo la funzione CreateClonedTable per creare le tavole > -- nel "MAIN" ricopiando tal quali le definizioni corrispondenti > -- dichiarate nel DB "vecchio". > -- NOTA: cosi' siamo sicuri che verrano riprodotte fedelmente le > -- definizione dalla Primary Key, degli Spatial Index etc > -- > SELECT CreateClonedTable('vecchio', 'comuni', 'comuni', 1); > SELECT CreateClonedTable('vecchio', '2_rete_ferroviaria', > '2_rete_ferroviaria', 1); > SELECT CreateClonedTable('vecchio', 'complessi_idrogeologici', > 'complessi_idrogeologici', 1); > > -- > -- ora andiamo a copiare il solo Comune di Napoli dal "vecchio" al "MAIN" > -- > INSERT INTO main.comuni (id, pk2_28, campan2_id, comune, pr, geom) > SELECT id, pk2_28, campan2_id, comune, pr, geom > FROM vecchio.comuni > WHERE comune = 'Napoli'; > > -- > -- ora copiamo gli elementi ferroviari > -- in questo caso dovremo calcolare l'intersezione tra le > -- geometrie da importare ed il Buffer basato sul Comune. > -- in questo caso NON utilizzeremo lo Spatial Index. > -- > -- nota: occorre un cast esplicitio al tipo MultiLinestring, > -- perche' le intersezioni saranno facilmente Linestring > -- elementari. > -- > -- nota #2: battezzare una tavola con un nome che inizia con > -- una cifra e' assolutamente indecente :-PACKAGE > -- vedi tutta la marea di double quoting che implica per > -- rendere legale il nome secondo la sintassi SQL > -- > INSERT INTO main."2_rete_ferroviaria" (id, pk2_72, tipo, opzioni, > descrizion, geom) > SELECT v.id, v.pk2_72, v.tipo, v.opzioni, v.descrizion, > CastToMultiLinestring(ST_Intersection(v.geom, n.geom)) > FROM vecchio."2_rete_ferroviaria" AS v, > (SELECT ST_Buffer(geom, 1000.0) AS geom FROM main.comuni) AS n > WHERE ST_Intersects(v.geom, n.geom) = 1; > > -- > -- ora infine copiamo i complessi idrogeologici > -- piu' o meno e' come il caso precedente, ma questa volta > -- utilizziamo anche lo Spatial Index. > -- > -- note: dobbiamo fare un cast al tipo MultiPolygon perche' > -- spesso le intertsezioni saranno Poligoni semplici. > -- > INSERT INTO main.complessi_idrogeologici (id, pk2_26, stringa, area, > perimeter, > id_tipo_co, tipo_compl, id_tipo_fo, id_tipo_pe, id_grado_p, note, geom) > SELECT v.id, v.pk2_26, v.stringa, v.area, v.perimeter, v.id_tipo_co, > v.tipo_compl, > v.id_tipo_fo, v.id_tipo_pe, v.id_grado_p, v.note, > CastToMultiPolygon(ST_Intersection(v.geom, n.geom)) > FROM vecchio.complessi_idrogeologici AS v, > (SELECT ST_Buffer(geom, 1000.0) AS geom FROM main.comuni) AS n > WHERE ST_Intersects(v.geom, n.geom) = 1 AND v.ROWID IN ( > SELECT rowid FROM SpatialIndex > WHERE f_table_name = 'DB=vecchio.complessi_idrogeologici' > AND search_frame = n.geom); > > _______________________________________________ > Gfoss@lists.gfoss.it > 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. > 801 iscritti al 19/07/2017 > _______________________________________________ Gfoss@lists.gfoss.it 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. 801 iscritti al 19/07/2017