Italy/Howto/Estrarre renderizzare

From OpenStreetMap Wiki
< Italy‎ | Howto
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