[Gfoss] Export PostGIS - SpatiaLITE

a.furieri a lqt.it a.furieri a lqt.it
Mer 7 Feb 2018 12:53:05 CET


On Wed, 7 Feb 2018 12:06:06 +0100, Totò Fiandaca wrote:
> correggetemi se dico fesserie:
>
> una soluzione sarebbe quella di aggiungere un altro campo geometry 
> (es:
> geom, definirlo per bene) alle tabelle e popolarle con la geometria 
> con un
> UPDATE.
>
> credo funzioni.
>

si, dovrebbe funzionare, ma il percorso da seguire per
fare un lavoro ben fatto e' un po' piu' complesso:

- per prima cosa occorre verificare cosa contiene
   esattamente il dataset; basta eseguire la seguente
   query SQL:

SELECT Count(*), GeometryType(geom), Srid(geom), CoordDimension(geom)
FROM table
GROUP BY 2, 3, 4;

n.b. chi usa spatialite_gui puo' usare direttamente
il tool "check geometries" dal menu associato a quella
particolare colonna-geometria.

- a questo punto tutto dipende dai risultati della
   query precedente.

caso #1
===============
nel resultset appare una singola riga.
basta creare la seconda colonna-geometria con gli
argomenti appropriati, p.es.

SELECT AddGeometryColumn('table', 'geom2', srid, 'POINT', 'XY');

a questo punto si procede direttamente al popolamento
della nuova colonna-geometria:

UPDATE table SET geom2 = geom;


caso #2
===============
nel resultset appaiono un paio di righe, ma
tutte con il medesimo modello dimensionale e
con tipi geometrici compatibili, uno di tipo
single-part e l'altro di tipo multi-part
(p.es. POINT e MULTIPOINT, oppure POLYGON
e MULTIPOLYGON).

a questo punto occorre creare la seconda
colonna-geometria stando ben attenti a
specificare il MultiType:

SELECT AddGeometryColumn('table', 'geom2', srid, 'MULTIPOLYGON', 'XY');

infine si procede al popolamento della
seconda colonna-geometria applicando un
opportuno operatore di cast, tale da
forzare il geometry-type per uniformare
tutte le geometrie al caso multi-part:

UPDATE table SET geom2 = CastToMultiPolygon(geom);


caso #3
===============
nel resultset appaiono svariate righe, con
geometry-type incompatibili (p.es. POINT,
LINESTRING e MULTIPOLYGON).

in questo caso non e' possibile procedere
ad una conversione diretta, andranno create
tante colonne-geometria quanti sono i
geometry-types, e durante la fase di popolamento
le geometrie andranno opportunamente filtrate
in base al tipo.

ciao Sandro


> poi, il provider spatialite di QGIS vedrebbe due colonne geometriche 
> dello
> stesso strato.
>


Maggiori informazioni sulla lista Gfoss