Le mappe di OpenStreetMap possono essere inserite nel proprio sito reperendole online oppure ricreando i TILE che le compongono tramite software di render per essere poi consultabili in locale senza aver la necessità di una connessione ad internet.
Mettiamo ad esempio il caso che questo servizio ci serva per la creazione di uno strumento interattivo per musei e che il museo non possegga una connessione ad internet per l'integrazione di questo servizio (faccio questo esempio perché mi è capitato), in questo caso basta fare una copia in locale della porzione di mappa che ci interessa.
Questo è quello che cercherò di mostrarvi oggi!!!
Per prima cosa è necessario scaricare e installare i seguenti software:
- Postgres con estensione Postgis (http://www.postgresql.org/download/)
molto semplice da installare per ulteriori informazioni sull'installazione consultate il seguente link:
http://database.html.it/articoli/leggi/1689/postgresql-su-windows-procedura-di-installazione/
Una volta installato andate in start - > programmi -> PostgreSQL 8.4 aprite l'applicazione "Application Stack Builder" e scaricate l'estensione Postgis che si trova sotto la voce "spatial extensions".
Ora inserite il programmino osm2pgsql.exe (http://artem.old-dev.openstreetmap.org/files/ scaricare quello non zippato)
all'interno della cartella "bin" che si trova in:
C:\Program Files\PostgreSQL\8.4\
N.B. installare Python2.5 e non versioni precedenti
- Mapnik 0.6.1 che è il nostro motore di render
http://media.mapnik.org/mapnik_0.6.1-win32_py25.zip
Ora convertiremo il file OSM (che è un file di backup del database di OpenStreetmap) in un database con estensione geografica.
Creeremo un nuovo ruolo all'interno di Postgres a cui daremo il nome dell'account windows e un nuovo database di nome 'gis'.
Quindi andremo su ruolo utente -> nuovo ruolo utente
- In proprietà metteremo come nome del ruolo il nome che abbiamo dato all'account windows
- In privilegi di ruolo spunteremo tutto
Ora creeremo il database:
Andremo su database (tasto destro) -> nuovo database
- Nome: gis
- Proprietario: nome del ruolo creato prima
- Codifica: UTF8
- Modello: template_postgis
- Tablespace: pg_default
- Aggiungeremo al database alcuni requisiti tramite una query:
GRANT ALL ON DATABASE gis TO public;
GRANT ALL ON DATABASE gis TO " account windows ";
COMMENT ON DATABASE gis IS 'OSM';
Il prossimo passo sarà quello di andare a modificare il file pg_hba.conf in modo che l'accesso al server possa essere fatto senza l'utilizzo di una password, altrimenti il programmino osm2psql non riuscirebbe ad accedervi.
File->Apertura di pg_hba.conf
Selezioniamo il file che nel mio caso ha il seguente percorso:
C:\Program Files\PostgreSQL\8.4\data
Una volta aperto modifichiamo il metodo in 'trust' e facciamo ricaricare il server.
A questo punto bisognerà scaricare il file OSM che conterrà tutte le informazioni riguardanti i nodi, le vie e le relazioni tra esse dell'intero pianeta o della sola area che si vorrà renderizzare.
Eccovi i file OSM:
http://debian.gfoss.it/maps/
http://planet.openstreetmap.org/planet-latest.osm.bz2
Scaricato il file basterà far partire il comando DOS osm2pgsql, se ad esempio il programmino si trova in:
C:\Program Files\PostgreSQL\8.4\bin
Basterà eseguire i seguenti comandi da DOS:
cd C:\Program Files\PostgreSQL\8.4\bin
osm2pgsql.exe -v E:\Openstreetmap\planet.osm
In questo modo I dati verranno caricati all'interno del database precedentemente creato.
Con l'utilizzo del database venutosi a creare sarà possibile renderizzare i TILES.
Per fare ciò è necessario installare Python2.5 e Mapnik:
- Per prima cosa si installa Python che è un eseguibile e non necessità di spiegazioni per l'installazione
- Una volta installato python si seguono i passi descritti in questa pagina per l'installazione di Mapnik:
http://trac.mapnik.org/wiki/WindowsInstallation
- A questo punto creeremo una nuova cartella all'interno di mapnik di nome 'osm' con all'interno:
Una cartella di nome boundaries che conterrà i file presenti negli archivi 'processed_p.zip' e 'world_boundaries-spherical.tgz'
Scaricabili dai seguenti siti:
http://hypercube.telascience.org/~kleptog/processed_p.zip
http://tile.openstreetmap.org/world_boundaries-spherical.tgz
Una cartella vuota di nome 'tiles' che sarà poi riempita dai tiles che si andranno a renderizzare.
Una cartella 'symbols' in cui copieremo tutti quei simboli usati durante il render per creare strade punti di interesse etc.
I simboli si trovano all'interno del sito:
http://svn.openstreetmap.org/applications/rendering/mapnik/symbols
All'interno della cartella 'osm' copieremo i file python di configurazione (generate_tiles.py, set-mapnik-env, osm-template.xml, customize-mapnik-map) scaricabili dal seguente sito:
http://svn.openstreetmap.org/applications/rendering/mapnik/
Modificheremo i file di configurazione a seconda delle nostre esigenze come descrittoci all'interno dei file readme.txt presente sul sito
Se non si dovesse riuscire a configurare i file con python basta usare uno dei tanti editor per sostituire all'interno del file osm-template.xml le variabili con i nostri dati.
Ad esempio:
SYMBOLS_DIR=C:/mapnik-0_5_1/osm/symbols
WORLD_BOUNDARIES_DIR= C:/mapnik-0_5_1/osm/boundaries
DBHOST="localhost"
DBPORT="5432"
DBNAME='gis'
DBUSER=`Sym`
DBPASS=""
PREFIX="planet_osm"
Una volta sostituite queste variabili con I vostri dati, bisognerà modificare alcune cose all'interno del file generate_tiles.py:
in fondo al file al posto di:
if __name__ == "__main__":
home = os.environ['HOME']
try:
mapfile = os.environ['MAPNIK_MAP_FILE']
except KeyError:
mapfile = home + "/osm-local.xml"
try:
tile_dir = os.environ['MAPNIK_TILE_DIR']
except KeyError:
tile_dir = home + "/osm/tiles/"
bisognerà ad esempio inserire:
if __name__ == "__main__":
home = "C:/mapnik_0_6_1/osm"
mapfile = home + "/osm-template.xml"
tile_dir = home + "/tiles/"
Dopo aver fatto tutto ciò sarà possible far partire lo script generate_tiles.py
I COMMENTI SONO BEN ACCETTI PER EVENTUALI CORREZIONI ED AGGIORNAMENTI IN MERITO A QUESTO ARGOMENTO.
PER EVENTUALI DIFFICOLTA' SARO' BEN LIETO DI AIUTARVI FIN DOVE MI SARA' POSSIBILE.



ciao ottimo tutorial!
RispondiEliminaavresti qualche suggerimento per realizzare uno stile personale della mappa renderizzata?
(come ad esempio è stato fatto qui http://wiki.openstreetmap.org/images/e/e9/Italian_wms_North_italy.png)
grazie e complimenti ancora per il tutorial