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)
-
_______________________________________________
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.
796 iscritti al 28/12/2017

Rispondere a