[Gfoss] Topologie a confronto (era: QGIS (OSGEO): Strumenti GRASS non attivi e barra attributi non visibile)

Sandro Santilli strk a keybit.net
Mar 22 Nov 2011 11:04:36 CET


On Tue, Nov 22, 2011 at 09:54:06AM +0100, Andrea Spisni wrote:

> Appare anche utile il cookbook...soprattutto questa parte!:
> --------
> 
> Notes for polygons:
> 
>  * polygon_0 are the holes
>  * polygon_1 are the areas with one centroid
>  * polygon_2 are the area with two centroids (overlapped areas)

Argomento molto caldo in questo periodo !

Ho visto questo layout a Zurigo, dove sono andato proprio per parlare
di topologia con gli sviluppatori di QGis e di GRASS.

Scusate il thread hijacking, ma colgo l'occasione per trovare
utilizzatori del miglior supporto topologico attualmente esistente
(GRASS) per modellare quello emergente in PostGIS [1]

[1] http://strk.keybit.net/blog/2011/10/14/postgis-topology-iso-sqlmm-complete/

Dal confronto avuto a Zurigo il modello di basso livello topologico
GRASS/PostGIS/ISO e' pressocche' lo stesso.

Quel che cambia e' il modo in cui si assegnano gli attributi alle
"primitive topologiche". In GRASS gli attributi delle aree si assegnano
a dei "centroidi". In questo modo una feature costituita da piu' aree
disgiunte (multipolygon) avra' piu' "centroidi" (uno per ogni faccia
topologica). In PostGIS gli attributi si assegnano a liste di
componenti primitivi identificati con un numero (anziche' con una
posizione geografica, come succede per il "centroide" di GRASS).

In entrambi i casi l'estrazione dell'informazione:

>  * polygon_0 are the holes
>  * polygon_1 are the areas with one centroid
>  * polygon_2 are the area with two centroids (overlapped areas)

 ... necessita del layer semantico (quello con gli attributi),
perche' e' proprio la presenza o meno di "centroidi" (in GRASS)
o di "TopoGeometry" (in PostGIS) a determinare l'appartenenza di
ogni faccia topologica ad una delle categorie sopra, che potremmo
ridefinire in questo modo:

    * Facce che non appartengono ad alcuna feature 
    * Facce che appartengono ad una feature 
    * Facce che appartengono ad piu' di una feature 

Proprio in questi giorni mi sono trovato a convertire un dataset 
particolarmente complesso verso una topologia PostGIS di base.
La complessita' del dataset era appunto dovuta alla gran quantita'
di overlap e underlap (gap) che mettevano a dura prova la stabilita'
numerica degli algoritmi di PostGIS (ora tutti irrobustiti).

Come esperimento, una volta importato il dataset, ho indagato le
possibilita' di cleanup esistenti con il solo livello primitivo:

http://strk.keybit.net/blog/2011/11/21/topology-cleaning-with-postgis

Ma ovviamente, avendo soltanto costruito la topologia di base (ISO:
nodi, edge, facce), non avevo il livello feature (TopoGeometry) e
quindi non avevo la possibilita' di fare un'analisi di quali facce
appartenessero a zero, una o piu' features.

Importare la topologia di base in PostGIS e' molto semplice, c'e' una
funzione ISO: ST_CreateTopoGeo(<toponame>, <collection_of_geometries>).

Ma importare le proprie _features_ semplici in modo da crearne di
equivalenti ma topologicamente definite richiede un procedimento
ad oggi piu' complesso. Si tratterebbe di andare ad identificare, 
per ogni feature, quali siano i componenti di base che la costituiscono,
ed aggiungere nuovi componenti di base ove quelli gia' presenti
non fossero sufficienti.

Ho immaginato che questa complessita' di conversione (da Geometry a
TopoGeometry) possa essere di gran lunga semplificata con
l'implementazione di una funzione di import/conversione che dati
in input una Geometry e il nome di una topologia, si occupi
di creare tutti gli elementi che servono a definirla topologicamente
e ritorni una TopoGeometry pronta a l'uso. 

Il ticket per la funzione: http://trac.osgeo.org/postgis/ticket/1017

Tale funzione, che potrebbe essere alla base di una routine di
import topologico equiparabile a quella esistente per GRASS
(con la differenza avere il risultato integrato nel database),
puo' essere implementata e distribuita con PostGIS-2.0.0 se si
riesce a farla entro la fine di Dicembre. 

Qualcuno ha messo a disposizione parte del budget necessario
per il lavoro. Restano ancora da trovare circa 2500 euro.
Basterebbero 10 donazioni da 250 euro per raggiungere la cifra,
oppure 50 donazioni da 50 euro.

Se volete partecipare alla colletta di natale:
http://www.pledgebank.com/postgistopology

Oppure scrivetemi in privato per possibili alternative.

Grazie!

--strk; 

  ()   Free GIS & Flash consultant/developer
  /\   http://strk.keybit.net/services.html


Maggiori informazioni sulla lista Gfoss