in vista dell'open data day - napoli 2014

29
#ODDNA2014 NaLUG– Napoli, 8 Febbraio 2014 Francesco Cesareo – @aomegax Eduard Natale – @EduardNatale

Upload: eduard-natale

Post on 14-Dec-2014

360 views

Category:

Technology


1 download

DESCRIPTION

Un'introduzione ad alcune tecnologie per l'utilizzo di Open Data attraverso l'importazione di dati georeferenziati, partendo da Open Street Map per proseguire con il DBMS PostgreSQL (con estensione PostGIS), Geoserver per l'interrogazione e la manipolazione di dati geospaziali, la libreria javascript OpenLayers per la creazione di mappe lato client, un tool per l'importazione dei formati OSM in un database (IMPOSM).

TRANSCRIPT

Page 1: In vista dell'Open Data Day - Napoli 2014

#ODDNA2014NaLUG– Napoli, 8 Febbraio 2014

Francesco Cesareo – @aomegaxEduard Natale – @EduardNatale

Page 2: In vista dell'Open Data Day - Napoli 2014

Obiettivo• Open Data• Open Street Map• GeoServer• PostgreSQL / PostGIS• Open Layers

Page 3: In vista dell'Open Data Day - Napoli 2014

Open Data• Open Definition della Open Knowledge

Foundation• Un contenuto o un dato si definisce  aperto  se 

chiunque  è  in  grado  di  utilizzarlo,  ri utilizzarlo  e  ridistribuirlo,  soggetto,  al massimo, alla richiesta di attribuzione  e condivisione allo stesso modo (BY-SA).

• L’Open Data si basa sulla constatazione che il dato pubblico è stato prodotto con denaro pubblico, ossia della collettività, ed è a questa che il dato deve essere restituito

Page 4: In vista dell'Open Data Day - Napoli 2014

Open Data: caratteristiche (1/2)• Accesso

• L’opera deve essere disponibile nella sua interezza ed a un costo di riproduzione ragionevole, preferibilmente tramite il download gratuito via Internet. L’opera deve inoltre essere disponibile in un formato comodo e modificabile.

• Ridistribuzione• La licenza non deve imporre alcuna limitazione alla vendita o all’offerta gratuita

dell’opera singolarmente considerata o come parte di un pacchetto composto da opere provenienti da fonti diverse. La licenza non deve richiedere alcuna “royalty” o altra forma di pagamento per tale vendita o distribuzione.

• Riutilizzo• La licenza deve consentire la realizzazione di modifiche e di opere derivate e

deve consentire la loro distribuzione agli stessi termini dell’opera originaria.• Assenza di restrizioni tecnologiche

• L’opera deve essere fornita in un formato che non ponga ostacoli tecnologici allo svolgimento delle attività sopraelencate. Ciò può essere conseguito mediante la messa a disposizione dell’opera in un formato aperto, vale a dire un formato le cui specifiche siano pubblicamente e liberamente disponibili e che non imponga nessuna restrizione economica o di altro tipo al suo utilizzo.

• Attribuzione• La licenza può richiedere di citare i vari contributori e creatori dell’opera come

condizione per la ridistribuzione ed il riutilizzo di quest’ultima. Se imposta, questa condizione non deve essere onerosa. Per esempio, se viene richiesta la citazione, un elenco di coloro che devono essere citati deve accompagnare l’opera.

Page 5: In vista dell'Open Data Day - Napoli 2014

Open Data: caratteristiche (2/2)• Integrità

• La licenza può richiedere, come condizione perché l’opera venga distribuita in forma modificata, che l’opera derivata abbia un nome o un numero di versione diverso dall’opera originaria.

• Nessuna discriminazione di persone o gruppi• La licenza non deve discriminare alcuna persona o gruppo di persone.

• Nessuna discriminazione nei settori d’attività• La licenza non deve impedire a nessuno di utilizzare l’opera in un determinato settore

d’attività. Per esempio, la licenza non può impedire che l’opera sia utilizzata da un’azienda, o che venga utilizzata ai fini di ricerca genetica.

• Distribuzione della licenza• I diritti relativi all’opera devono valere per tutte le persone a cui il programma viene

ridistribuito senza che sia per loro necessario accettare o sottostare ad alcuna licenza aggiuntiva.

• La licenza non deve essere specifica per un pacchetto• I diritti relativi all’opera non devono dipendere dal fatto che l’opera sia parte di un particolare

pacchetto. Se l’opera viene estratta da quel pacchetto e usata o distribuita in conformità con i termini della licenza dell’opera, tutte le persone a cui il lavoro viene ridistribuito devono avere gli stessi diritti concessi in congiunzione con il pacchetto originario.

• La licenza non deve limitare la distribuzione di altre opere• La licenza non deve imporre restrizioni su altre opere distribuite insieme all’opera licenziata.

Per esempio, la licenza non deve insistere sul fatto che tutte le altre opere distribuite sullo stesso supporto siano aperte.

Page 6: In vista dell'Open Data Day - Napoli 2014

Open Data: sintesi• Devono essere indicizzati dai motori di

ricerca.• Devono essere rilasciati attraverso licenze

libere che non impediscano la diffusione e il riutilizzo da parte di tutti i soggetti interessati.

• Devono essere disponibili in un formato aperto, standardizzato e leggibile da un'applicazione informatica per facilitare la loro consultazione ed incentivare il loro riutilizzo anche in modo creativo.

Page 7: In vista dell'Open Data Day - Napoli 2014

Open Data: formati• JSON• XML• RDF – raccomandato dal W3C• Fogli di calcolo (xls…)• CSV• Documenti di testo (pdf, doc, odf…)• Testo semplice (txt)• Immagine• Formati proprietari• HTML

Page 8: In vista dell'Open Data Day - Napoli 2014

Five ★ Open Data (1/2)• Tim Berners-Lee ha suggerito uno schema di

distribuzione degli Open Data• ★ per essere open un dato deve essere disponibile

in rete in qualche formato con una licenza open.• ★★ il dato deve essere strutturato e “machine-

readable”.• ★★★ il dato deve essere in formato non

proprietario.• ★★★★ il dato deve essere in uno standard aperto

secondo W3C (RDF e SPARQL) per identificare le cose, in modo che sia possibile metterle in collegamento.

• ★★★★★ i dati devono essere messi in relazione con altri dati al fine di fornire il contesto

Page 9: In vista dell'Open Data Day - Napoli 2014

Five ★ Open Data (2/2)

Page 10: In vista dell'Open Data Day - Napoli 2014

OpenStreetMap (1/2)• Cos’è?• Progetto cartografico collaborativo ideato nel 2004

per creare mappe stradali.• Oggi è la più grande banca dati cartografica libera• Io mappo il mio quartiere, tu mappi il tuo quartiere e

insieme mappiamo il mondo.• Perché?• Quasi tutta la cartografia disponibile ha delle

restrizioni• non si può modificare e migliorare• non si può utilizzare liberamente e gratuitamente• non si può espandere con altre informazioni

• OSM è un database aperto rilasciato con licenza Open Data Commons Open Database License (ODbL).

Page 11: In vista dell'Open Data Day - Napoli 2014

OpenStreetMap (2/2)• Nessuna limitazione su cosa mappare: ogni cosa

localizzabile da coordinate geografiche è mappabile

• Filosofia Wiki: ogni oggetto mappato è sempre migliorabile

• Affidabilità dei dati?• Non per applicazioni catastali ma per applicazioni

per cui l’errore di alcuni metri è accettabile. Possibilità di aggiungere al dato la fonte.

• La precisione è eccellente dove i Comuni hanno aperto i loro dati catastali (es. Francia).

Page 12: In vista dell'Open Data Day - Napoli 2014

OSM: Casi d’uso• Nel 2009, a fronte dell'apertura di parecchi dati del

governo inglese, furono analizzate le statistiche degli incidenti con ciclisti coinvolti e visualizzate su una mappa OSM: questo contribuì ad abbassare il tasso di incidenti solamente con una piccola modifica nel percorso dei ciclisti stessi in modo da evitare gli incroci più pericolosi.

• Kibera è un'immensa baraccopoli in Kenia con una popolazione stimata tra le 700.000 e le 900.000 persone; sino al 2009 semplicemente non esisteva su nessuna mappa. Con l'aiuto di due mappatori del team H.O.T. è stata mappata l'intera area. Su quella mappa si riportano le strutture umanitarie, le segnalazioni dei cittadini ed è nato un movimento per dare una voce globale ad una realtà che la voce non l'aveva.

Page 13: In vista dell'Open Data Day - Napoli 2014

OSM: Come collaborare• Riportare errori su OSM Notes• http://www.openstreetmap.org/note/new

• Fare semplici modifiche come aggiungere nomi alle strade, aggiungere POI, etc.

• Organizzare Mapping Party.• Incontro, suddivisione delle zone, rilevamento e

post elaborazione dei dati • Mappare la zona in cui abiti.

• IMPORTANTE: Mappare solo quello che si conosce e non usare fonti coperte da copyright.

Page 14: In vista dell'Open Data Day - Napoli 2014

OSM: Intorno a noi

http://resultmaps.neis-one.org/oooc?zoom=12&lat=40.82877&lon=14.32549

Page 15: In vista dell'Open Data Day - Napoli 2014

Dalle parole ai fatti

Page 16: In vista dell'Open Data Day - Napoli 2014

Prerequisiti• Linux Ubuntu 12.04• Installare Java 7• sudo apt-get install openjdk-7-jdk

• Installare Tomcat 7• sudo apt-get install tomcat7• Modificare il file /etc/default/tomcat7 alla riga

12• JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64

• sudo service tomcat7 restart• It works!• ubuntu:8080

Page 17: In vista dell'Open Data Day - Napoli 2014

GeoServer• Scaricare il WAR di GeoServer dal seguente

link (reperibile dal sito http://geoserver.org) • http://sourceforge.net/projects/geoserver/files/

GeoServer/2.4.4/geoserver-2.4.4-war.zip

• Scompattare l’archivio in /var/lib/tomcat7/webapps

• Riavviare Tomcat• sudo service tomcat7 restart

• It works!• ubuntu:8080/geoserver• user: admin, password: geoserver

Page 18: In vista dell'Open Data Day - Napoli 2014

PostgreSQL• Installare PostgreSQL

• sudo apt-get install postgresql-9.1• Configurare PostgreSQL

• sudo -u postgres psql template1• ALTER USER postgres with encrypted password 'postgres';• Modificare il file file /etc/postgresql/9.1/main/postgresql.conf alla riga 59

• listen_address = ‘*’• Modificare il file file /etc/postgresql/9.1/main/pg_hba.conf

• riga 85: local all postgres md5 • riga 92: host all postgres all md5

• Riavviare PostgreSQL• sudo service postgresql restart

• Installare PostGIS• sudo apt-get install postgis• sudo apt-get install python-software-properties• sudo apt-add-repository ppa:sharpie/for-science• sudo apt-add-repository ppa:sharpie/postgis-stable• sudo apt-add-repository ppa:ubuntugis/ubuntugis-unstable• sudo apt-get update• sudo apt-get install postgresql-9.1-postgis2 • Eseguire PSQL (psql postgres postgres)

• CREATE EXTENSION postgis; -- Enable PostGIS (includes raster)• CREATE EXTENSION postgis_topology; -- Enable Topology

Page 19: In vista dell'Open Data Day - Napoli 2014

IMPOSM• Tool per importare dati di OpenStreetMap, effettua il parsing di

file in formati XML o PBF e memorizza in database come PostgreSQL.

• Download: http://imposm.org/docs/imposm/latest/install.html• sudo apt-get install build-essential python-dev protobuf-compiler

libprotobuf-dev libtokyocabinet-dev python-psycopg2 libgeos-c1

• Script per estrarre I POI da OpenStreetMap e memorizzarli in PostgreSQL• https://github.com/colemanm/places

• File PBF possono essere trovati su: http://geodati.fmach.it/gfoss_geodata/osm/italia_osm.html• Campania:

http://geodati.fmach.it/gfoss_geodata/osm/output_osm_regioni/campania.pbf

• Esecuzione:• imposm -U postgres -d oddna -m imposm-places.py --read

campania.pbf --write --optimize --deploy-production-tables --merge-cache --proj EPSG:4326

Page 20: In vista dell'Open Data Day - Napoli 2014

Una semplice applicazione (1/6)• Obiettivo: visualizzare su mappa tutti i POI

d’intrattenimento della Campania• TODO:• Geoserver: • creare workspace• creare store (entra in gioco PostgreSQL/PostGIS)• creare layer

• OpenLayer:• creare mappa della Campania• creare layer con i POI• sovrapporre il layer alla mappa

Page 21: In vista dell'Open Data Day - Napoli 2014

Una semplice applicazione (2/6)

Page 22: In vista dell'Open Data Day - Napoli 2014

Una semplice applicazione (3/6)

Page 23: In vista dell'Open Data Day - Napoli 2014

Una semplice applicazione (4/6)// Proiezionivar mercator = new OpenLayers.Projection("EPSG:900913"); var geographic = new OpenLayers.Projection("EPSG:4326");// Tile (Base Layer) // OpenStreetMapvar OSMTile = new OpenLayers.Layer.OSM( "OSM Map");// MapQuestvar MQTile = new OpenLayers.Layer.XYZ( "OpenStreetMap”, [ "http://otile1.mqcdn.com/tiles/1.0.0/map/${z}/${x}/${y}.png",

… ], { attribution: ”MapQuest”, transitionEffect: "resize" });

Page 24: In vista dell'Open Data Day - Napoli 2014

Una semplice applicazione (5/6)// Creo la mappavar map = new OpenLayers.Map({ div: "map", projection: "EPSG:900913", layers: [ MQTile ] // oppure OSMTile});

// Centro mappa su Napolimap.setCenter(new OpenLayers.LonLat(14.19423, 40.82292).transform(geographic, mercator), 10);

Page 25: In vista dell'Open Data Day - Napoli 2014

Una semplice applicazione (6/6)// Creo il layervar osm_entertainment = new OpenLayers.Layer.Vector("osm_entertainment", { projection: geographic, strategies: [ new OpenLayers.Strategy.BBOX() ], protocol: new OpenLayers.Protocol.WFS({ featureType: "osm_entertainment", featureNS: "oddna2014", url: GEOSERVER + "/wfs", geometryName: "geometry" })});// Aggiungo il layer alla mappamap.addLayer(osm_entertainment)

Page 26: In vista dell'Open Data Day - Napoli 2014

Complichiamo l’applicazione• Obiettivo: visualizzare su mappa solo i bar della Campania

// Creo il layervar TYPE = “bar”; // o “cinema”var osm_entertainment_2 = new

OpenLayers.Layer.Vector("osm_entertainment_2", { projection: geographic, strategies: [ new OpenLayers.Strategy.BBOX() ], protocol: new OpenLayers.Protocol.HTTP({ format: new OpenLayers.Format.GML(), url: GEOSERVER + "/oddna2014/ows?

service=WFS&version=1.0.0&request=GetFeature&viewparams=type:"+TYPE+"&typeName=oddna2014:osm_entertainment_2"

})});

Page 27: In vista dell'Open Data Day - Napoli 2014

MapQuest SDK (1/2)

• Obiettivo: realizzare una semplice mappa su Android

Page 28: In vista dell'Open Data Day - Napoli 2014

MapQuest SDK (2/2)

Page 29: In vista dell'Open Data Day - Napoli 2014

Credits• http://www.slideshare.net/AleZenaIT/

introduzione-a-openstreetmap-gter-30032012• http://www.slideshare.net/musuruan/

accademia2011• http://opendefinition.org/od/italiano/• http://5stardata.info/

• Questa presentazione è rilasciata con licenza