[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