Italy/Howto/Estrarre renderizzare
Jump to navigation
Jump to search
Istruzioni per ottenere una gif animata con i cambiamenti in una certa zona.
Preparativi
- Installare planetdiff
- Installare Inkscape, Subversion e Xmlstarlet (su Ubuntu ci sono i pacchetti "inkscape", "subversion" e "xmlstarlet")
- Ottenere Osmosis:
wget http://gweb.bretth.com/osmosis-latest.tar.gz tar xvfz osmosis-latest.tar.gz cd osmosis-0.29 bin/osmosis
- Scaricare un file del planet (con estensione .osm.bz2) ad una certa data (d'ora in poi lo chiameremo A.osm.bz2) da https://planet.openstreetmap.org/
- Spostare il planet nella cartella in cui si trova Osmosis. Per comodità, possiamo spostare Osmosis nella cartella in cui si trova il file del planet. L'importante è che i due componenti si trovino nella stessa cartella.
- Estrarre un'area dal planet utilizzando Osmosis: è possibile scegliere se estrarre un'area rettangolare (bounding box o BB) oppure un'area delimitata da un poligono (per esempio un confine amministrativo (comunale, regionale, nazionale).
Estrarre una bounding box
L'area viene individuata tramite i 4 valori della Bounding Box, reperibili altrimenti dalla tab Esporta della pagina principale di OpenStreetMap.
bin/osmosis --read-xml file=A.osm.bz2 --bounding-box top="41.148" bottom="41.0795" left="16.8071" right="16.9315" --write-xml file=data.osm
Estrarre un poligono
- Seguire l'apposita guida per ottenere un file di confine in formato .txt;
- Usare il seguente comando per estrapolare tutti i dati presenti entro il confine fornito:
bin/osmosis --read-xml file="nome_planet.osm.bz2" --bounding-polygon file="confine_comune.txt" --write-xml file="dati_comune.osm"
- Se con il comando precedente si ottengono molte strade tagliate, è possibile conservarle intatte fino alla fine, aggiungendo l'opzione completeWays=yes:
bin/osmosis --read-xml file="italy-08-luglio-09.osm.bz2" --bounding-polygon completeWays=yes file="Terlizzi.txt" --write-xml file="dati_terlizzi.osm"
Rendering
- Per renderizzare una mappa a partire dal dato ricavato al punto precedente (io uso xmlstarlet, ma xsltproc e xalan sono equivalenti), prima scarichiamo lo stylesheet di Osmarender dall'svn di OSM; utilizzeremo il foglio di stile per lo zoom 13, ma a seconda delle esigenze basta scegliere il foglio di stile apposito tra quelli che scaricheremo di seguito:
svn co http://svn.openstreetmap.org/applications/rendering/osmarender/stylesheets/
- Andiamo nella cartella stylesheets, selezioniamo i file dello zoom che ci interessa (nel nostro caso osm-map-features-z13.xml) e copiamolo nella cartella superiore, in cui abbiamo il nostro file dei dati (data.osm). Quindi, apriamolo con un editor di testo qualsiasi e modifichiamolo, sostituendo alla voce "scale=1" alla riga 10, un valore compreso tra 2 e 3 ("scale=2.5").
- Adesso serve un altro file: osmarender.xsl, che può essere scaricato nella nostra cartella principale:
wget http://svn.openstreetmap.org/applications/rendering/osmarender/xslt/osmarender.xsl
- Ora creiamo una cartella in cui muoveremo 3 file: osmarender.xsl, data.osm e il file del foglio di stile (osm-map-features-z13.xml):
mkdir cartella_rendering mv osmarender.xsl cartella_rendering/ mv data.osm cartella_rendering mv osm-map-features-z13.xml cartella_rendering/
- Adesso siamo pronti ad avviare il rendering, dopo esserci posizionati in cartella_rendering:
cd cartella_rendering/ xmlstarlet tr osmarender.xsl osm-map-features-z13.xml > mappa.svg
- Si converte poi in formato PNG usando inkscape
inkscape -D -e mappa.png mappa.svg