[Gfoss] come unire poligoni vicini?

a.furieri a lqt.it a.furieri a lqt.it
Ven 6 Apr 2018 17:51:40 CEST


On Fri, 06 Apr 2018 15:13:07 +0000, Maurizio Napolitano wrote:
> Ho 30.000 poligoni distribuiti su di una area
> Ho necessità di creare poligoni concavi fra quelli più vicini
>

Ciao Napo,

non sono sicurissimo di avere capito bene i tuoi requisiti,
comunque provo a buttare giu' un'abbozzo di soluzione su
SpatiaLite.

CREATE TABLE aggregati (id INTEGER PRIMARY KEY);
SELECT AddGeometryColumn('aggregati', 'geom', 3003, 'MULTIPOLYGON', 
'XY');

- per prima cosa andiamo a creare una tavola di appoggio


INSERT INTO aggregati
SELECT NULL, ST_Union(geometry)
FROM my_nput_table;

- ora andiamo ad usare la ST_Union come funzione aggegata,
   e salviamo il risultato nella tavola precedente.
   alla fine otterremo un unico enorme multipolygon, in
   cui sicuramente tutti i poligoni elementari adiacenti
   sono stati fusi assieme.


SELECT ElementaryGeometries('aggregati', 'geom', 'poligoni', 'new_id', 
'old_id');
SELECT DropGeoTable('aggregati');

- come ultimo passaggio andiamo a sciogliere il grosso
   multipolygon che abbiamo creato nella fase crecedente
   risolvendo individualmente tutti i poligoni elementari.
   come ultimissimo passaggio eliminiamo la tavola di
   appoggio che non ci serve piu' a nulla.

ATTENZIONE: nulla assicura pero' che i poligoni risultanti
siano concavi oppure convessi ... e non mi viene neppure
in mente nessuna funzione Spatial SQL che possa aiutare a
discriminare tra i due casi.

ciao Sandro (ed in bocca al lupo)
-


Maggiori informazioni sulla lista Gfoss