Topologia e software GFOSS

In un thread della mailing list di GFOSS, Sandro Furieri, creatore e main developer di Spatialite, ha inviato un’e-mail molto ricca e dettagliata nella quale descrive in modo semplice e chiaro il significato e l’implementazione dei concetti di topologia.

La ripubblico qui—con il suo consenso—perché l’ho trovata veramente utile e la ritengo degna di ulteriore divulgazione.


Sostanzialmente, dietro ad un unica etichetta “topologia” si celano due interpretazioni (e due modelli concettuali) che differiscono tra loro in modo abbastanza radicale.

“Vera topologia”

Scordatevi immediatamente concetti come Point, Linestring e Polygon, e dimenticatevi pure il concetto di layer.
Quelle sono le rappresentazioni “simple feature” delle geometrie e non hanno nulla a che vedere con il modello adottato dalla “vera topologia”.

In una “vera topologia” si ha semplicemente un’unica superficie infinita sulla quale si appoggiano oggetti Node, Edge e Face;

  • un Node è un punto notevole in cui si incontrano due o più Edges;
  • un Edge è un tratto di confine comune tra due Faces adiacenti (si pensi ad es. al confine italo-austriaco inteso come un’unica linea comune ad entrambi gli Stati);
  • una Face è una superficie delimitata da un certo numero di Edges;
    anche una topologia completamente vuota comprende una Face che è la “faccia universo”, cioè la superficie infinita stessa. Si pensi ad es. alla penisola Italiana come territorio compreso tra le linee di confine italo-francese, italo-svizzera, italo-austriaca, italo-slovena e la linea di costa; linea di costa che altro non è che una linea di confine (=Edge) con un lato sulla face “penisola italiana” e l’altro lato sulla “face universe”. Sicilia e Sardegna saranno altre due Faces ancora, e saranno semplicemente delimitate dalla linea di costa
    e così via per tutte le altre isole minori, ciascuna delle quali formerà una Face indipendente; poi si avranno le due “isole interne” in corrispondenza della Citta’ del Vaticno e di San Marino. Se si impasta tutto assieme si ottiene il territorio della Repubblica Italiana descritto nei termini “sbriciolati” di tanti Nodes, Edges
    e Faces. Fisicamente non non si avrà mai disegnato neppure un poligono: si avranno invece piazzati dei punti (Nodes) e tracciate delle linee (Edges, ossia tratti di confine); là dove uno o più Edges delimitano
    una superficie chiusa si avrà automaticamente definita una Face e così via.

Ovviamente è possibile creare una topologia a partire da un set di Points/Linestrings/Polygons, ma per arrivarci serve tutta una fase di validazione (generalmente lunga e pesante).
Altrettanto ovviamente è possibile ricavare Points, Linestrings e Polygons da una topologia: ma ancora una volte serve una operazione di trasformazione non del tutto banale.

Naturalmente ci si deve scordare di poter fare operazioni di editing tipo “ho modificato l’Umbria”; per arrivare a quel risultato finale si dovrà sempre lavorare indirettamente sui vari Nodes/Edges che delimitano la Face “Umbria”, e solo alla fine di una sequenza più o meno lunga di operazioni indirette sugli oggetti elementari della topologia si potrà materialmente “vedere” il frutto dei propri sforzi a livello della regione nel suo complesso.
Però in compenso si potrà sempre essere tassativamente certi che le modifiche si rifletteranno sempre con rigorosa simmetria anche su tutte quante le regioni confinanti (Toscana, Lazio, Marche) e si avrà un altro possibile bonus: se si degnano faces al livello più basso possibile (p.es. comuni), qualsiasi modifica dei confini si propagherà automaticmanete anche a tutti i livelli gerarchici superiori (usl, comunità montana, circondario, distretto, provincia, regione, stato etc); tutto in modo totalmente automatico e del tutto trasparente.

Un po’ di storia: il modello “vera topologia” node-edge-face venne inizialmente introdotto da ESRI ArcINFO (oggi non più disponibile); continua invece ad essere attivamente supportato da GRASS GIS.
Infine è alla base del modello standard ISO/IEC 13249-3 (SQL MM), e in quest’ultima forma è supportato da Oracle Spatial, da PostGIS e prossimamente anche da SpatiaLite.

In parole spicciole: è un approccio sicuramente “complicato”, abbastanza diverso dal classico “modello shapefile” che è quello probabilmente più familiare per la maggiorparte degli utenti.
Altrettanto sicuramente è un approccio robusto, solido, rigoroso, supportato da una ricca teoria matematica alle spalle, ma soprattutto è qualcosa che è stato minuziosamente codificato e definito formalmente da uno standard di livello internazionale.

“Simil topologia” aka “topologia semplificata”

Qualcosa di apparentemente simile si può ottenere in un modo molto più semplice e facile da implementare.
Basta introdurre semplicemente una griglia di snap obbligatoria basata su celle di dimensioni a scelta: i punti ed i vertici potranno stare solo *esattamente* la dove di trova un nodo della griglia di riferimento.
Sse non è così, ci penserà il software a spostare il punto sulla posizione fissa più vicina.
(Se su vuole, si può pensare al disegno col lapis sulla carta millimetrata: bisogna sempre centrare un punto di incontro tra linea verticale e linea orizzontale per potere piazzare un punto/vertice … se lo si piazza appena un po’ spostato funzionerà come una magica calamita che te lo riporta automaticamente nella posizione “giusta”)

Bloccare le posizioni disponibili ad una griglia fissa più o meno densa semplifica notevolmente il compito di stabilire se due segmenti presi a caso sono realmente un’unica cosa oppure due cose distinte, e quindi in ultima analisi semplifica il compito di assicurare che due poligoni adiacenti “si tocchino” in modo topologico corretto (cioè senza sovrapposizioni e senza neppure lasciare antipatiche striscioline “terra di nessuno”).

Il modello concettuale “simil topologia via griglia” è stato inizialmente introdotto da ESRI ArcGIS sui suoi GeoDatabase. Ha il vantaggio che è certamente meno “esoterico” dell’altro modello node-edge-face, e sostanzialmente consente di continuare ad utilizzare praticamente invariati quei concetti di layer point/linestring/polygon così rassicurantemente familiari per tantissimi utenti.
Naturalmente nella vita non esistono pasti gratis; qualsiasi compromesso richiede inevitabilmente un qualche prezzo da pagare.

In questo caso quel che si guadagna in termini di apparente semplicità e facilità d’uso lo si perde simmetricamente in termini di robustezza e rigorosa consistenza; e soprattutto lo si perde in termini di interscambio dati.
Finirà inevitabilmente che ciascun utente/ente userà le proprie griglie definite a suo gusto personale, che mal si adatteranno alle altre griglie con passo diverso utilizzate da altri utenti/enti.

Un abbozzo di conclusione

Non è certo per caso se negli ambienti professionali high-end si è sempre preferito utilizzare un ben noto (e costoso) Spatial DBMS  proprietario basato su ISO 13249-3 per fare topologia “seria”.
Ooggi finalmente anche il software GFOSS inizia ad essere in grado di supportare decentemente bene ISO 13249-3; lo fa già oggi PostGIS e lo farà molto presto anche SpatiaLite, e tutto sommato lo fa fin dalla notte dei tempi pure GRASS GIS che comunque adotta un modello conforme Node-Edge-Face pur essendo nato ben prima che vedesse la luce la specifica ISO 13249-3 tutti e tre assieme possoono utilmente cooperare e fare
intelligentemente qualche tipo di cross-impollinazione spalleggiandosi a vicenda, visto che il modello concettuale di riferimento è sempre il solito.

Proprio per questo pare decisamente in controtendenza andare invece a cercare di recuperare l’altro approccio “via griglia” che è oggettivamente inferiore sotto un profilo puramente tecnico e che oltre tutto non è neppure supportato da uno straccio di standard formale.

Una volta tanto è il sw FLOSS/GFOSS che guida saldamente la corsa ben piazzato nel ristrettissimo plotoncino di testa; noi siamo in grado di offrire fin da oggi la soluzione più robusta e completa, quella che poggia su solide basi matematiche e che è rigorosamente conforme agli standard internazionali.
Il nostro principale competitor proprietario oggi come oggi non dispone di nessuna alternativa valida da mettere in campo; ce l’aveva in anni passati, ma per sua libera scelta ha preferito rottamarla (lasciandosi così alle spalle non pochi orfani e vedovi inconsolabili).
Sarebbe veramente un grosso abbaglio cercare di inseguirlo sul suo stesso terreno quando invece abbiamo tutto quel che serve per sorpassarlo a pieni giri.

Annunci

3 pensieri su “Topologia e software GFOSS

  1. Interessante articolo. Proprio in questi giorni sto correggendo la topologia di diversi shp di un progetto, shp realizzati negli anni a più mani che non hanno tenuto minimamente conto delle regole topologiche.
    Il mio committente è molto affezionato ad ArcGis per cui con il correttore topologico di ArcCatalog sto eliminando piano piano tutti gli errori però questo articolo mi ha fatto riflettere sul mio modo di evitare errori topologici in editing. Sia con ArcMap che con QGis uso quella che in questo articolo è chiamata “topologia semplificata”, con lo snap quindi e lo faccio praticamente da sempre impostandolo a 5 pixel ma non sapevo proprio che esistesse un modo ancora più rigoroso per evitare gli errori topologici. Dove posso trovare un approfondimento?

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...