SpatiaLite e polygonize

Non tutti sanno che SpatiaLite è un ottimo Spatial DBMS che permette di risolvere qualsiasi problema di spatial processing.

Vediamo come risolvere il seguente problema:

dato uno shapefile lineare (con determinate caratteristiche), trasformarlo in poligono:

linee
shapefile linestring XY

 

  1. importo lo SHP “siciliano” nella tavola “ambiti_reg”;
  2. eseguo la Polygonize in forma aggregata:


CREATE TABLE aggr_polyg (id INTEGER PRIMARY KEY);
SELECT AddGeometryColumn('aggr_polyg', 'geom', 3004, 'MULTIPOLYGON', 'XY');
INSERT INTO aggr_polyg
SELECT NULL, ST_Polygonize(geometry) FROM ambiti_reg;

view raw

poligonize.sql

hosted with ❤ by GitHub

ultimo passaggio: ho usato la ElementaryGeometries    per “sciogliere” tutti i poligoni elementari.

linee2
poligoni

FAVOLOSO!!!


Note finali: l’uso di un database, con la relativa estensione spaziale, semplifica di molto alcuni processi, come quello esposto sopra, ma occorrono basi SOLIDE di SQL!!!

segnalo per chi non segue la mailing list ufficiale:

– https://groups.google.com/d/msg/spatialite-users/RZPDuFfPhzs/nl0C0xzwAgAJ
– https://groups.google.com/d/msg/spatialite-users/OsaY7kJTLw4/zolyjMgPAwAJ

Mi sembra di grande interesse, a breve ci sarà il rilascio di spatialite_gui NEXT GENERATION cioè la versione 5, nel frattempo è possibile fare dei test.


 

shapefile

Buon lavoro e grazie  A. Furieri

Pubblicità

2 pensieri su “SpatiaLite e polygonize

  1. Grazie totò,
    Un chiarimento forse un po’ off topic:
    Come fare per salvare le relazioni tra tabelle di vettori Spatialite?
    Parto da vettori spatialite, costruisco relazioni nel ‘ layers pannel’, ma poi non le trovo più chiudendo e riaprendo lo spatialite.
    Grazie
    Cr

    Piace a 1 persona

    1. Le relazioni tra tabelle di un database spatialite vanno definite a livello di ‘creazione’ delle tabelle, cioè quando definisci le tabelle con CREATE TABLE ….
      FOREIGN KEY (“pk_uid”) REFERENCES “nomeTabella” (“pk_uid”)

      "Mi piace"

Rispondi

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

Logo di WordPress.com

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

Foto di Facebook

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

Connessione a %s...

Questo sito utilizza Akismet per ridurre lo spam. Scopri come vengono elaborati i dati derivati dai commenti.