3 ottobre, 2013 | di

MySQL è uno dei più diffusi database server, e non deve stupire che abbia un’estensione spaziale (peraltro attiva di default). Mi stupisce però che le funzioni per testare le relazioni spaziali tra oggetti siano limitate.

Mi spiego con un esempio classico: selezionare tutti i punti di un layer che cadono all’interno del perimetro di un poligono presente in un altro layer. E’ un’operazione tipica dei GIS, e presente in tutti database con estensione spaziale.

In MySQL basta lanciare una query spaziale di questo tipo:

SELECT * FROM poligoni as g1, punti as g2 WHERE Contains(g1.geometry,g2.geometry) = 1

Purtroppo però l’output non è costituito da tutti i punti contenuti nel perimetro di mio interesse, ma da tutti quelli contenuti nel rettangolo che lo include. Quest’ultimo è il classico Bounding Box, o come si definisce in ambiente MySQL Minimal Bounding Rectangles (MBR). Nel manuale online è riportato:

The OpenGIS specification defines the following functions. They test the relationship between two geometry values g1 and g2.

Questo dovrebbe garantire che l’output della funzione Contains() sia relativo al perimetro dell’oggetto “target”, ma poco più avanti si legge:

Currently, MySQL does not implement these functions according to the specification. Those that are implemented return the same result as the corresponding MBR-based functions.

Immagino che i GeoSpatial Developers abbiano diverse frecce al loro arco per superare questo problema, così come ne esisteranno diverse lato utente. Una potrebbe essere quella di non usare questo database server e fare tutto con PostGISOracle Spatial, Spatialite, ecc., ma è troppo facile e non sempre si può scegliere.

Io ho pensato a GDAL/OGR ed alle sue utility per oggetti vettoriali, ed alla possibilità (che esiste dalla versione 1.10 della libreria) di usare il dialetto SQLite/Spatialite. Questo dialetto estende di molto quello che queste utility fanno (egregiamente) di default, ovvero eseguire delle query sql all’interno di un comando; ad esempio:

ogrinfo province.shp province -sql "SELECT nome FROM province WHERE ID_PRO = 2"

Con il dialetto SQLite/Spatialite ho a disposizione anche le funzioni per verificare relazioni spaziali tra oggetti, anche per quelle basi dati che non prevedono intrinsecamente la possibilità di farlo, proprio come MySQL spatial.

Andando nel concreto dovrei scrivere una cosa di questo tipo:

ogrinfo MYSQL:"mydb,user=myuse,password=mypwd,port=3306" -dialect sqlite -sql "SELECT *FROM poligoni as g1, punti as g2 WHERE Contains(g1.geometry,g2.geometry) = 1"

La sorpresa è che, nonostante si dichiari nella stringa il “dialetto” sqlite, si ottiene sempre come output quello relativo ai punti contenuti nel bounding box del perimetro di interesse. E’ un baco? Nella documentazione di OGR si legge:

All OGR drivers for database systems: MySQL, PostgreSQL and PostGIS (PG), Oracle (OCI), SQLite, ODBC, ESRI Personal Geodatabase (PGeo) and MS SQL Spatial (MSSQLSpatial), override the OGRDataSource::ExecuteSQL() function with dedicated implementation and, by default, pass the SQL statements directly to the underlying RDBMS. In these cases the SQL syntax varies in some particulars from OGR SQL. Also, anything possible in SQL can then be accomplished for these particular databases. Only the result of SQL WHERE statements will be returned as layers.

Ma si legge anche:

The SQLite dialect may be used with any OGR datasource, like the OGR SQL dialect. It is available through the OGRDataSource::ExecuteSQL() method by specifying the pszDialect to “SQLITE”. For the ogrinfo or ogr2ogr utility, you must specify the “-dialect SQLITE” option.

La soluzione l’ho trovata in un test stupido che ho voluto fare: accedere alla fonte MySQL non direttamente, ma tramite il Virtual Format di OGR, che in qualche modo astrae l’accesso al formato di input.

A partire quindi da una fonte MySQL costruita secondo le specifiche del Virtual Format e salvata come “test.vrt”:

<ogrvrtdatasource>
<ogrvrtlayer name="poligoni">
<srcdatasource>MYSQL:mydb,user=myuser,
password=mypwd,port=3306,host=127.0.0.1
</srcdatasource>
<srclayer>poligoni</srclayer>
<geometrytype>wkbPolygon</geometrytype>
<layersrs>epsg:4326</layersrs>
</ogrvrtlayer>
<ogrvrtlayer name="punti">
<srcdatasource>MYSQL:mydb,user=myuser,
password=mypwd,port=3306,host=127.0.0.1
</srcdatasource>
<srclayer>punti</srclayer>
<geometrytype>wkbPoint</geometrytype>
<layersrs>epsg:4326</layersrs>
</ogrvrtlayer>
</ogrvrtdatasource>

Posso ad esempio lanciare:

ogrinfo test.vrt -dialect sqlite -sql "SELECT *FROM poligoni as g1, punti as g2 WHERE Contains(g1.geometry,g2.geometry) = 1"

Il risultato ottenuto sarà così quello desiderato e l’output corrisponderà a tutti i punti che ricadono nel perimetro di interesse. Nell’immagine di sotto, ho raccontato il tutto in modo visuale.

Concludo sottolineando  quanto siano interessanti, utili, belle e di alto livello professionale alcune delle dinamiche delle comunità open source. Ho segnalato quello che a me sembrava un baco alla lista GDAL – DEV. Non solo ho ottenuto subito delle risposte che mi hanno consentito di capirne molto di più, ma si sono messi già al lavoro sia in termini di codice che di documentazione. Un semplice “grazie” sembra veramente poco.

sqlite dialect vs MySQL source

Questo post è dedicato a Flaviano, un mio amico che grazie anche ad alcuni tips & tricks su GDAL/OGR ha trovato un bel posto di lavoro in Qatar :)

NDR: Jukka Rahkonen, uno sviluppatore di GDAL/OGR, mi fa notare che dalla release in trunk r26506 di GDAL e a partire dalle future release stabili ufficiali, non sarà necessario creare alcun file virtuale. Si potrà accedere direttamente alla sorgente MySQL e impostare la proprietà “-dialect” al valore “SQLITE”.

12 luglio, 2012 | di

Finalmente il DdL “Norme sul software libero, accessibilità di dati e documenti ed hardware documentato” è stato approvato per essere convertito in legge nella seduta del Consiglio della Regione Puglia di ieri. A questo link è possibile accedere all’iter di approvazione e i relativi documenti, tra i quali il testo dell’articolato privo degli emendamenti approvati in Consiglio Regionale.

E’ un provvedimento che seguiamo da tempo, del quale esattamente un anno fa avevamo già fatto una analisi tesa a metterne in evidenza i punti di forza, e qualche debolezza, e per il quale ci eravamo auspicati miglioramenti soprattutto per il riuso aperto e libero dei dati pubblici. Del resto in un altro precedente articolo a commento di uno degli altri due DdL su software e dati aperti, avevamo addirittura proposto degli emendamenti, che definivano con maggiore precisione proprio il concetto di open data e relativo riuso, auspicando l’adozione di linked open data, dato che parlavamo di rintracciabilità dei dati da parte dei motori di ricerca su internet e lo scaricamento dai siti web istituzionali delle Pubbliche Amministrazioni.

In tal senso possiamo comunque ritenerci soddisfatti, poiché nel testo approvato definitivamente in Consiglio ieri è stato inserito l’articolo 6 “Riutilizzo dei documenti e dei dati pubblici”, nel quale si fa riferimento al D.Lgs. 36/2006 di recepimento della Direttiva 2003/98/CE relativa al riutilizzo di documenti nel settore pubblico (c.d. Direttiva PSI). In fondo all’articolo trovate alcuni utili riferimenti per approfondire il tema.

L’impianto del DdL nella versione della quale avevamo parlato un anno fa è stato arricchito e potenziato dal nuovo articolo 17, che istituisce una “Comunità di pratica”, aperta alle Università e al partenariato economico e sociale, e che si pone obiettivi estremamente ambiziosi:

  1. promuovere lo scambio, la diffusione e il riuso di esperienze, progetti e soluzioni relativi al software libero nella PA e nelle imprese;
  2. creare ed aggiornare una mappa delle richieste, delle competenze e delle esperienze disponibili sul territorio codificandole in specie digitali (?);
  3. promuovere attività di informazione dirette alle amministrazioni locali ed alle piccole e medie imprese del territorio regionale, sostenendo modalità di collaborazione tra Università, associazioni ed imprese;
  4. creare una rete di soggetti, informatici ed utenti impiegati nella PA, utilizzatori privati, sviluppatori, PMI, studenti, collegata agli obiettivi ed alle strategie del Centro di competenza sull’open source (NdR – nel DdL per la verità tale Centro non viene istituito, forse derivato dal testo della L.R. 11/2006 della Regione Umbria che in effetti ha istituito un CCOS);
  5. contribuire alla individuazione di un adeguato percorso formativo ed universitario, per la preparazione professionale di esperti in software libero, e diretto alle scuole primarie e secondarie per la diffusione di una cultura del software libero;
  6. confrontare tecnicamente fra loro le architetture dei differenti progetti di sviluppo software per contribuire affinché siano comunque sempre conseguiti gli obiettivi generali di interoperabilità, uso di standard aperti, scalabilità nel tempo e semplicità di riuso da parte delle Pubbliche Amministrazioni;
  7. promuovere lo studio di fattibilità di sistemi Cloud Computing per la Pubblica Amministrazione tali da poter permettere la distribuzione di risorse di calcolo, archiviazione, software e umane per diversi utilizzatori e scopi.

Gli emendamenti approvati in Consiglio

Durante i lavori della seduta consiliare sono stati inoltre approvati cinque emendamenti, che di fatto vanno a rafforzare l’impianto del testo. Tra i più significativi, il primo fa esplicito riferimento all’open government, come forma di partecipazione attiva dei cittadini al processo decisionale attraverso l’adozione e diffusione degli open data. Il terzo emendamento entra nel merito del Piano d’informatizzazione, con alcuni ulteriori commi inseriti nell’articolo 9 (prima presenti nell’articolo 10, soppressi da un altro emendamento) che opportunamente definiscono in dettaglio i criteri che devono caratterizzare la valutazione tecnica-economica riguardante l’adozione da parte della PA regionale di soluzioni basate su software libero e il loro riuso.

In conclusione, non possiamo che congratularci con la Regione Puglia per l’adozione di questa Legge, che la pone davvero all’avanguardia nella valorizzazione e promozione sia del software libero che degli open data. Il prossimo importante passo sarà la rapida adozione Piano d’informatizzazione, il vero strumento di attuazione della nuova Legge Regionale.

Infine, speriamo ora che il SIT Puglia adegui al più presto le licenze di uso dei dati geografici, rendendoli realmente riusabili in maniera aperta e libera a tutti.

 

Approfondimenti sul riuso dei dati pubblici

  1. Comunicazione CE “Dati aperti - Un motore per l’innovazione, la crescita e una governance trasparente” (link)
  2. EPSIplatform, la piattaforma europea sull’informazione nel settore pubblico (link)

25 ottobre, 2011 | di

Il melting pot su #opendata, #opendataitaly#opengov ribolle sempre più anche qui in Italia, lo confermano le numerose Pubbliche Amministrazioni che stanno progressivamente mettendo in piedi portali che consentono l’accesso ai propri dati (con i dovuti distinguo riguardo le licenze adottate), un trend culminato con il recente lancio di dati.gov.it

Gli Stati Generali dell’Innovazione (@SGInnovazione) sono un movimento di associazioni, cittadini e aziende che, rimestando nel melting pot, contribuiscono a creare massa critica attorno ad alcuni degli argomenti che sono alla base di ciò che ci interessa maggiormente: “l’innovazione nel governo dell’Italia”.

L’appuntamento odierno di Bari, tenutosi al Cineporto presso la Fiera del Levante, prevedeva una sessione mattutina con una prima tavola rotonda dal titolo “Open source, software libero e formati aperti per i dati pubblici: esperienze, criticità, prospettive”, alla quale hanno partecipato l’Assessore regionale all’Innovazione Nicola Fratoianni, Davide Pellegrino – Dirigente Servizio Innovazione della Regione Puglia, Marco Curci – Direttore Divisione IT di Innovapuglia, Giuseppe Santo Barile (@realforense) del LUG Bari e Giuseppe Nicosia – Circolo dei Giuristi Telematici Gur@work, in collegamento Skype è stata con noi anche Flavia Marzano (@flavia_marzano) di Stati Generali dell’Innovazione, moderava Morena Ragone (@morenaragone) di Puglia Creativa.

La seconda sessione intitolata “I diritti dei cittadini e delle imprese nel Codice dell’Amministrazione Digitale” ha visto come relatori Ernesto Belisario (@diritto2punto0) – Circolo Giuristi Telematici, Andrea Lisi – ANORC Associazione Nazionale per Operatori e Responsabili della Conservazione Sostitutiva, Morena Ragone – Puglia Creativa e Giovanna Brunetti – CSIG Bari, moderava Ennio del Turco – CSIG Bari.

Numerosi e di notevole spessore sono stati gli interventi del pubblico, che hanno contribuito a rendere l’appuntamento particolarmente ricco di spunti, idee, confronti e anche scontri costruttivi. Io ho dovuto lasciare i lavori alla conclusione della mattinata, che comunque proseguivano con due ulteriori interessanti sessioni pomeridiane “Presentazione degli Stati Generali dell’Innovazione di Roma del 25-26 novembre 2011″ e la tavola rotonda “Pensare l’innovazione, realizzare l’innovazione: dalle parole ai fatti, idee e problematiche aperte”.

Vi invito a scorrere il succedersi degli eventi qui sotto, nella timeline dell’hashtag dedicato all’evento #SGIBari



23 settembre, 2011 | di Nelle giornate del 24 e 25 novembre l’Università degli Studi di Foggia ospiterà il GFOSS DAY 2011. Si tratta del quarto appuntamento in assoluto, organizzato come di consueto da GFOSS.it, l’Associazione Italiana per l’Informazione Geografica Libera. La call for presentation -  raggiungibile qui - scade il 25 ottobre, e per il 5 novembre daranno notifica dell’accettazione. Secondo alcuni rumors, tra gli eventi di dibattito complementari alle presentazioni ve ne sarà uno particolarmente interessante, dedicato agli open data, durante il quale si potrà discutere anche dei provvedimenti che la Giunta regionale pugliese ha in cantiere a tale riguardo e dei quali abbiamo già parlato qui su TANTO.
21 luglio, 2011 | di

Lo scorso giugno è stato approvato dalla Giunta Regionale pugliese un terzo disegno di legge sull’open source, dal titolo “Norme sul software libero, accessibilità di dati e documenti ed hardware documentato”, che va ad affiancarne altri due, uno a firma di alcuni consiglieri datato 16/02/2011 e l’altro del 11/02/2011 sempre proposto dalla G.R. e del quale avevo parlato in un precedente articolo, tentando di suggerire alcune modifiche volte ad integrare il provvedimento con il concetto di “dati aperti” e la loro conseguente valorizzazione e sostegno da parte della amministrazione regionale. Ad oggi, nonostante siano stati contattati tutti i consiglieri e lo stesso Presidente Vendola, non abbiamo ricevuto alcun cenno di riscontro.

Arriva ora questo terzo DdL (scaricabile da qui), abbastanza differente nella sua impostazione rispetto ai due precedenti, e sotto molti aspetti migliore. Provo a spiegare brevemente perché.

L’articolo 4 definisce come “archivi elettronici” tutti i dati digitali della PA regionale, la quale deve permetterne l’accesso gratuito mediante protocolli e formati aperti e specifiche libere, così come l’estrazione di dati e il relativo riuso (questione sollevata da Lorenzo Benussi in un suo precedente commento). Interessante poi l’ultimo comma, che esclude la possibilità di avvalersi di soluzioni di “cloud computing” se non sotto il diretto controllo della stessa PA. E in un momento come questo, nel quale i dubbi proprio sui servizi “in the cloud” sono parecchi, è una decisione comprensibile.

Nell’articolo 5 viene espressamente definita la “esclusività” dell’utilizzo da parte della PA di formati aperti e liberi così come la promozione dell’impiego di software open source. A tale proposito, al successivo articolo 7 vengono esplicitamente adottate le licenze GPLv3 e AGPLv3. Sebbene per quanto riguarda i dati, non ci sia ancora una licenza aperta accettata universalmente, nella proposta di legge non si fa alcun riferimento alla controversa IODL, sostenuta anche se non con specifici provvedimenti legislativi dal Governo italiano.

Secondo l’articolo 8 la Regione predispone un “Piano triennale di informatizzazione” che definisca le strategie dell’Ente in ambito informatico e individua una struttura di progetto (con tutta probabilità la società in-house Innova Puglia SpA) che si occuperà dell’attuazione del piano, come pure del rispetto degli obblighi previsti dalla stessa legge.

Altro strumento interessante previsto dall’articolo 11 è il Programma triennale promosso dalla Regione, finalizzato alla promozione di progetti di ricerca, sviluppo e produzione relativi al software libero e all’hardware documentato (singolare concetto introdotto con l’art. 14 e del quale francamente non mi è chiaro il significato) coinvolgendo il mondo delle imprese e della ricerca.

E con l’articolo 12 la Regione vuole favorire, promuovere e incentivare, nei limiti delle proprie competenze, i principi stessi della Legge Regionale e la promozione del software libero, la formazione al suo utilizzo e la diffusione dei valori etici e culturali ad esso legati. Azioni che vanno a supportare il concetto di “cittadinanza attiva”, che secondo il successivo articolo 13 la Regione Puglia intende sostenere proprio mediante l’uso di software libero e accesso ai dati.

In conclusione, mi pare di poter dire che questo terzo DdL sia di gran lunga migliore rispetto ai due precedenti, e che abbia di fatto recepito il concetto di dato aperto e libero, costituito nell’articolo 3 dall’insieme delle tre definizioni “specifica libera”, “protocollo libero” e “formato libero”. Allo stesso modo, il principio di “riuso” – sebbene tra le definizioni dell’art. 3 sia riferito al solo software – come ho già accennato prima riguardo l’articolo 4 viene chiaramente esteso anche ai dati.

Ciò che possiamo ora augurarci è che questo DdL possa superare il vaglio delle Commissioni Consiliari, giungere in Consiglio Regionale e venire approvato e convertito in legge nel più breve tempo.

Ovviamente il DdL è perfettibile, e ci piacerebbe che TANTO possa diventare un luogo di discussione nel quale poter raccogliere eventuali suggerimenti utili al suo miglioramento, magari da poter poi sottoporre all’attenzione della stessa Giunta Regionale pugliese con una audizione in Commissione Consiliare. Per chi fosse interessato, è possibile seguire l’iter del provvedimento sulla specifica pagina del Consiglio Regionale pugliese.


TANTO non rappresenta una testata giornalistica ai sensi della legge n. 62 del 7.03.2001, in quanto non viene aggiornato con una precisa e determinata periodicita'. Pertanto, in alcun modo puo' considerarsi un prodotto editoriale.