<html>
  <head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    Ciao a tutti,<br>
    siccome questa e-mail di Sandro mi è piaciuta molto e mi pare molto
    utile, l'ho ripubblicata nel mio blog:
    <a class="moz-txt-link-freetext" href="https://ilsarrett.wordpress.com/2015/10/02/topologia-e-software-gfoss/">https://ilsarrett.wordpress.com/2015/10/02/topologia-e-software-gfoss/</a><br>
    <br>
    Ale<br>
    <br>
    <div class="moz-cite-prefix">On 02/10/2015 01:33, <a class="moz-txt-link-abbreviated" href="mailto:a.furieri@lqt.it">a.furieri@lqt.it</a>
      wrote:<br>
    </div>
    <blockquote cite="mid:45c804d0a177e0b7097d34d772e68cc7@lqt.it"
      type="cite">On Thu, 1 Oct 2015 11:31:20 -0700 (MST), nformica
      wrote:
      <br>
      <blockquote type="cite">Ciao Roberto,
        <br>
        capisco che l'argomento è abbastanza complesso !
        <br>
        Ma proprio nell'ottica di capire un pò tutti qualcosa (... anche
        chi non
        <br>
        sviluppa/programma), ti sarebbe possibile spiegarci con parole
        più semplici
        <br>
        in cosa consiste la questione ??
        <br>
        Mi riferisco sopratutto, per chi è un semplice utente finale.
        <br>
        <br>
      </blockquote>
      <br>
      Nino,
      <br>
      <br>
      ci provo io a sintetizzare (si fa per dire ...) i termini della
      <br>
      questione nella forma piu' liscia e semplice di cui sono capace.
      <br>
      (avviso in anticipo: non saro' breve perche' la materia e' di per
      <br>
      se abbastanza complicata).
      <br>
      <br>
      sostanzialmente dietro ad un unica etichetta "topologia" si
      <br>
      celano due interpretazioni (e due modelli concettuali) che
      <br>
      differiscono tra di se in modo abbastanza radicale.
      <br>
      <br>
      <br>
      "vera topologia"
      <br>
      ----------------
      <br>
      scordati immediatamente concetti come Point, Linestring e Polygon,
      <br>
      e dimenticati pure il concetto di layer.
      <br>
      quelle sono le rappresentazioni "simple feature" delle geometrie,
      <br>
      e non hanno nulla a che vedere con il modello adottato dalla
      <br>
      "vera topologia".
      <br>
      <br>
      in una "vera topologia" hai semplicemente un'unica superficie
      <br>
      infinita sulla quale si appoggiano oggetti Node, Edge e Face;
      <br>
      - un Node e' un punto notevole in cui si incontrano due o piu'
      Edges
      <br>
      - un Edge e' un tratto di confine comune tra due Faces adiacenti
      <br>
        (pensa p.es. al confine italo-austriaco inteso come un'unica
      linea
      <br>
        comune ad entrambi gli Stati).
      <br>
      - una Face e' una superficie delimitata da un certo numero di
      Edges;
      <br>
        anche una topologia completamente vuota comprende una Face che
      <br>
        e' la "faccia universo", cioe' la superficie infinita stessa.
      <br>
        pensa p.es. alla penisola Italiana come territorio compreso tra
      <br>
        le linee di confine italo-francese, italo-svizzera,
      italo-austriaca,
      <br>
        italo-slovena e la linea di costa; linea di costa che altro non
      <br>
        e' che una linea di confine (=Edge) con un lato sulla face
      <br>
        "penisola italiana" e l'altro lato sulla "face universe".
      <br>
        Sicilia e Sardegna saranno altre due Faces ancora, e saranno
      <br>
        semplicemente delimitate dalla linea di costa.
      <br>
        e cosi' via per tutte le altre isole minori, ciascuna delle
      quali
      <br>
        formera' una Face indipendente; poi avrai le due "isole interne"
      <br>
        in corrispondenza della Citta' del Vaticno e di San Marino.
      <br>
        impasta tutto assieme ed ottieni il territorio della Repubblica
      <br>
        Italiana descritto nei termini "sbriciolati" di tanti Nodes,
      Edges
      <br>
        e Faces.
      <br>
        fisicamente non avrai *mai* disegnato neppure un poligono: avrai
      <br>
        invece piazzato dei punti (Nodes) e tracciato delle linee
      (Edges,
      <br>
        ossia tratti di confine); la dove uno o piu' Edges delimitano
      <br>
        una superficie chiusa avrai automaticamente definito una Face
      <br>
        e cosi' via.
      <br>
      <br>
      ovviamente e' possibile creare una topologia a partire da un set
      <br>
      di Points/Linestrings/Polygons, ma per arrivarci serve tutta una
      fase
      <br>
      di validazione (generalmente lunga e pesante).
      <br>
      altrettanto ovviamente e' possibile ricavare Points, Linestrings e
      <br>
      Polygons da una topologia: ma ancora una volte serve una
      operazione
      <br>
      di trasformazione non del tutto banale.
      <br>
      <br>
      naturalmente scordati di poter fare operazioni di editing tipo
      <br>
      "ho modificato l'Umbria"; per arrivare a quel risultato finale
      <br>
      dovrai sempre lavorare indirettamente sui vari Nodes/Edges che
      <br>
      delimitano la Face "Umbria", e solo alla fine di una sequenza piu'
      <br>
      o meno lunga di operazioni indirette sugli oggetti elementari
      della
      <br>
      topologia potrai materialmente "vedere" il frutto dei tuoi sforzi
      <br>
      a livello della regione nel suo complesso.
      <br>
      pero' in compenso sarai sempre tassativamente certo che le tue
      <br>
      modifiche si rifletteranno sempre con rigorosa simmetria anche
      <br>
      su tutte quante le regioni confinanti (Toscana, Lazio, Marche).
      <br>
      ed avrai un altro possibile bonus: se disegni le tue faces al
      <br>
      livello piu' basso possibile (p.es. comuni), qualsiasi modifica
      <br>
      dei confini si propaghera' automaticmanete anche a tutti i livelli
      <br>
      gerarchici superiori (usl, comunita' montana, circondario,
      <br>
      distretto, provincia, regione, stato etc).
      <br>
      tutto in modo totalmente automatico e del tutto trasparente.
      <br>
      <br>
      un po' di storia: il modello "vera topologia" node-edge-face venne
      <br>
      inizialmente introdotto da ESRI ArcINFO (oggi non piu'
      disponibile);
      <br>
      continua invece ad essere attivamente supportato da GRASS GIS.
      <br>
      infine e' alla base del modello standard ISO/IEC 13249-3 (SQL MM),
      <br>
      ed in quest'ultima forma e' supportato da Oracle Spatial, da
      <br>
      PostGIS e prossimamente anche da SpatiaLite.
      <br>
      <br>
      in parole spicciole: e' un approccio sicuramente "complicato",
      <br>
      abbastanza diverso dal classico "modello shapefile" che e' quello
      <br>
      probabilmente piu' familiare per te e per tantissimi altri.
      <br>
      altrettanto sicuramente e' un approccio robusto, solido, rigoroso,
      <br>
      supportato da una ricca teoria matematica alle spalle, ma
      soprattutto
      <br>
      e' qualcosa che e' stato minuziosamente codificato e definito
      <br>
      formalmente da uno standard di livello internazionale.
      <br>
      <br>
      <br>
      "simil topologia" aka "topologia semplificata"
      <br>
      -----------------------------------------------
      <br>
      qualcosa di apparentemente simile si puo' ottenere in un modo
      <br>
      molto piu' semplice e facile da implementare.
      <br>
      basta introdurre semplicemente una griglia di snap obbligatoria
      <br>
      basata su celle di dimensioni a tua scelta: i punti ed i vertici
      <br>
      potranno stare solo *esattamente* la dove di trova un nodo della
      <br>
      griglia di riferimento.
      <br>
      se non e' cosi', ci pensera' il sw a spostare il punto sulla
      <br>
      posizione fissa piu' vicina.
      <br>
      (se vuoi, pensa al disegno col lapis sulla carta millimetrata:
      <br>
      devi sempre centrare un punto di incontro tra linea verticale
      <br>
      e linea orizzontale per potere piazzare un punto/vertice ... se
      <br>
      lo piazzi appena un po' spostato funzionera' come una magica
      <br>
      calamita che te lo riporta automaticamente nella posizione
      "giusta")
      <br>
      <br>
      bloccare le posizioni disponibili ad una griglia fissa piu' o
      <br>
      meno densa semplifica notevolmente il compito di stabilire se
      <br>
      due segmenti presi a caso sono realmente un'unica cosa oppure
      <br>
      due cose distinte, e quindi in ultima analisi semplifica il
      <br>
      compito di assicurare che due poligoni adiacenti "si tocchino"
      <br>
      in modo topologico corretto (cioe' senza sovrapposizioni e
      <br>
      senza neppure lasciare antipatiche striscioline "terra di
      <br>
      nessuno").
      <br>
      <br>
      il modello concettuale "simil topologia via griglia" e' stato
      <br>
      inizialmente introdotto da ESRI ArcGIS sui suoi GeoDatabase.
      <br>
      ha il vantaggio che e' certamente meno "esoterico" dell'altro
      <br>
      modello node-edge-face, e sostanzialmente consente di continuare
      <br>
      ad utilizzare praticamente invariati quei concetti di layer
      <br>
      point/linestring/polygon cosi' rassicurantemente familiari
      <br>
      per tantissimi utenti.
      <br>
      naturalmente nella vita non esistono pasti gratis; qualsiasi
      <br>
      compromesso richiede inevitabilmente un qualche prezzo da pagare.
      <br>
      <br>
      in questo caso quel che si guadagna in termini di apparente
      <br>
      semplicita' e facilita' d'uso lo si perde simmetricamente in
      <br>
      termini di robustezza e rigorosa consistenza.
      <br>
      e soprattutto lo si perde in termini di interscambio dati;
      <br>
      finira' inevitabilmente che ciascun utente/ente usera' le
      <br>
      proprie griglie definite a suo gusto personale, che mal si
      <br>
      adatteranno alle altre gliglie con passo diverso utilizzate
      <br>
      da altri utenti/enti.
      <br>
      <br>
      <br>
      un abbozzo di conclusione
      <br>
      -------------------------
      <br>
      non e' certo per caso se negli ambienti professionali high-end
      <br>
      si e' sempre preferito utilizzare un ben noto (e costoso)
      <br>
      Spatial DBMS  proprietario basato su ISO 13249-3 per fare
      <br>
      topologia "seria".
      <br>
      oggi finalmente anche il sw GFOSS inizia ad essere in grado
      <br>
      di supportare decentemente bene ISO 13249-3; lo fa gia' oggi
      <br>
      PostGIS e lo fara' molto presto anche SpatiaLite, e tutto
      <br>
      sommato lo fa fin dalla notte dei tempi pure GRASS GIS che
      <br>
      comunque adotta un modello conforme Node-Edge-Face pur essendo
      <br>
      nato ben prima che vedesse la luce la specifica ISO 13249-3
      <br>
      tutti e tre assieme possoono utilmente cooperare e fare
      <br>
      intelligentemente qualche tipo di cross-impollinazione
      <br>
      spalleggiandosi a vicenda, visto che il modello concettuale
      <br>
      di riferimento e' sempre il solito.
      <br>
      <br>
      proprio per questo pare decisamente in controtendenza andare
      <br>
      invece a cercare di recuperare l'altro approccio "via griglia"
      <br>
      che e' oggettivamente inferiore sotto un profilo puramente
      <br>
      tecnico e che oltre tutto non e' neppure supportato da uno
      <br>
      straccio di standard formale.
      <br>
      <br>
      una volta tanto e' il sw FLOSS/GFOSS che guida saldamente la
      <br>
      corsa ben piazzato nel ristrettissimo plotoncino di testa;
      <br>
      noi siamo in grado di offrire fin da oggi la soluzione piu'
      <br>
      robusta e completa, quella che poggia su solide basi matematiche
      <br>
      e che e' rigorosamente conforme agli standard internazionali.
      <br>
      il nostro principale competitor proprietario oggi come oggi
      <br>
      non dispone di nessuna alternativa valida da mettere in campo;
      <br>
      ce l'aveva in anni passati, ma per sua libera scelta ha
      <br>
      preferito rottamarla (lasciandosi cosi' alle spalle non pochi
      <br>
      orfani e vedovi inconsolabili)
      <br>
      sarebbe veramente un grosso abbaglio cercare di inseguirlo sul
      <br>
      suo stesso terreno quando invece abbiamo tutto quel che serve
      <br>
      per sorpassarlo a pieni giri :-D
      <br>
      <br>
      ciao Sandro
      <br>
      <br>
      _______________________________________________
      <br>
      <a class="moz-txt-link-abbreviated" href="mailto:Gfoss@lists.gfoss.it">Gfoss@lists.gfoss.it</a>
      <br>
      <a class="moz-txt-link-freetext" href="http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss">http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss</a>
      <br>
      Questa e' una lista di discussione pubblica aperta a tutti.
      <br>
      I messaggi di questa lista non hanno relazione diretta con le
      posizioni dell'Associazione GFOSS.it.
      <br>
      786 iscritti al 30.9.2015<br>
    </blockquote>
    <br>
    <div class="moz-signature">
      <font face="courier,verdana,arial,sans-serif" size="2"
        color="grey"> --
        <p>Alessandro Sarretta</p>
        <p>
          skype/twitter: alesarrett<br>
          Web: <a href="http://ilsarrett.wordpress.com">ilsarrett.wordpress.com</a>
        </p>
        <p>Research information:<br>
        </p>
        <ul>
          <li><a
              href="http://scholar.google.it/citations?user=IsyXargAAAAJ&hl=it">Google
              scholar profile</a></li>
          <li><a href="http://orcid.org/0000-0002-1475-8686">ORCID</a></li>
          <li><a
              href="https://www.researchgate.net/profile/Alessandro_Sarretta">Research
              Gate</a></li>
          <!-- <li><a href="https://impactstory.org/AlessandroSarretta">Impactstory</a></li> -->
          <li><a href="https://impactstory.org/AlessandroSarretta"><img
                src="cid:part5.06090904.09000207@gmail.com" width="80"></a></li>
        </ul>
      </font>
    </div>
  </body>
</html>