IT:Mapnik

From OpenStreetMap Wiki
Jump to: navigation, search
Lingue disponibili — Mapnik
· Afrikaans · Alemannisch · aragonés · asturianu · azərbaycanca · Bahasa Indonesia · Bahasa Melayu · Bân-lâm-gú · Basa Jawa · Basa Sunda · Baso Minangkabau · bosanski · brezhoneg · català · čeština · corsu · dansk · Deutsch · eesti · English · español · Esperanto · estremeñu · euskara · français · Frysk · Gaeilge · Gàidhlig · galego · Hausa · hrvatski · Igbo · interlingua · Interlingue · isiXhosa · isiZulu · íslenska · italiano · Kiswahili · Kreyòl ayisyen · kréyòl gwadloupéyen · Kurdî · latviešu · Lëtzebuergesch · lietuvių · magyar · Malagasy · Malti · Nederlands · Nedersaksies · norsk bokmål · norsk nynorsk · occitan · Oromoo · oʻzbekcha/ўзбекча · Plattdüütsch · polski · português · română · shqip · slovenčina · slovenščina · Soomaaliga · suomi · svenska · Tiếng Việt · Türkçe · Vahcuengh · vèneto · Wolof · Yorùbá · Zazaki · српски / srpski · беларуская · български · қазақша · македонски · монгол · русский · тоҷикӣ · українська · Ελληνικά · Հայերեն · ქართული · नेपाली · मराठी · हिन्दी · भोजपुरी · অসমীয়া · বাংলা · ਪੰਜਾਬੀ · ગુજરાતી · ଓଡ଼ିଆ · தமிழ் · తెలుగు · ಕನ್ನಡ · മലയാളം · සිංහල · བོད་ཡིག · ไทย · မြန်မာဘာသာ · ລາວ · ភាសាខ្មែរ · ⵜⴰⵎⴰⵣⵉⵖⵜ ⵜⴰⵏⴰⵡⴰⵢⵜ‎ · አማርኛ · 한국어 · 日本語 · 中文(简体)‎ · 中文(繁體)‎ · 吴语 · 粵語 · ייִדיש · עברית · اردو · العربية · پښتو · سنڌي · فارسی · ދިވެހިބަސް
Mapnik
Screenshot of Mapnik
Piattaforma: Windows, macOS e Linux
Versione: 2.2.0 (2013-06-03)
Linguaggi: inglese
Licenza: GNU Lesser General Public License
Sito web: http://mapnik.org
Linguaggi di programmazione: C++ e Python

Mapnik è il software che utilizziamo per presentare il layer principale di Slippy Map per OSM insieme agli altri livelli come il livello cycle map e il livello noname. E' anche il nome dato al la livello principale, così le cose sono un po' confuse a volte.

Mapnik è un toolkit open source per la presentazione di mappe. E' scritto in C++ e include associazioni di alto livello in Python. Usa la libreria AGG e offre rendering anti-aliasing con accuratezza al sottopixel. Può leggere i file di forme ESRI, PostGIS, raster TIFF, file .osm, ogni formato supportato da GDAL o OGR. I pacchetti sono disponibili per molte distribuzioni Linux e i binari sono disponibili per Mac OS X e Windows.

La homepage ufficiale è mapnik.org, e i nuovi utenti possono imparare di più sull'uso di Mapnik sul The Mapnik Wiki e sottoscrivendo il canale #mapnik su freenode

Errori e suggerimenti sul rendering

Si prega di segnalare tutti gli errori, suggerimenti grafici, e richieste per caratteristiche non rappresentate sulla mappa mapnik di OSM su OSM trac sotto il componente "mapnik". Si prega di verificare se il ticket è stato depositato prima: tracciare i tickets con "mapnik" come componente.

Riportare problemi, idee, miglioramenti riguardanti il programma Mapnik in generale (non il livello principale della mappa OSM) sul progetto mapnik all'indirizzo http://trac.mapnik.org

Panoramica

OSM usa Mapnik per renderizzare tasselli di 256 × 256 pixels, che vengono forniti dal server dei tasselli (tile.openstreetmap.org). Il JavaScript di Slippy Map referenzia gli URLs come p.e. http://tile.openstreetmap.org/7/63/42.png per quest'immagine:

42.png

Vedere anche Nomi dei tasselli su Slippy Map

Sorgente dati

I dati OSM sono convertiti in un formato utilizzabile da Mapnik da osm2pgsql, che carica i dati derivati su un database PostGIS. Inoltre altri utilizzi comuni di Mapnik si basano anche sugli shapefile per renderizzare un paio di livelli aggiuntivi. Le linee costiere ,per esempio, sono create usando usando shapefiles generati dalle vie con tag natural=coastline dal Verificatore di Errori delle Linee Costiere Vedere Coastline#Main_Mapnik_Layer

Preparazione

Questo è in corso di sviluppo.

Questo processo richiederà un po' di spazio su disco se pensate di caricare l'intero mondo. Le singole nazioni possono essere gestite su una macchina normale, ma per l'intero pianeta sono richiesti questi requisiti (riferito al 4 Apr 2009). Senza considerare gli indici:

Tabella Dimensioni
strade 700 MB
line 6.25 GB
punti 469 MB
poligoni 700 MB
ways 4.87 GB
ways_nodes 16 GB

Per un totale di circa 30 GB. Se state usando la modalità-slim su osm2pgsql avrete bisogno anche di circa 20 GB per le tabelle temporanee. Se considerate che probabilmente avrete bisogno anche degli indici,che è meglio, l'intero database con gli indici ammontano a 61 GB!

Aggiornamento: ad Apr 2010, europe.osm.bz2 in modalità-slim necessità di circa 90Gb di spazio su disco

Se avete abbastanza memoria (>12 GB) potete provare ad eseguirlo in modalità normale. Su una macchina performante il processo dovrebbe finire in 3-4 ore. Se non avete abbastanza memoria allora dovrete usare la modalità-slim che lavorarerà con qualsiasi quantità di memoria avrete disponibile. Configurato su una macchina con 3 GB RAM il processo ha impiegato all'incirca 24 ore, anche se dipende fortemente dalla velocità dei dischi.

Da notare: è richiesta la modalità-slim se volete applicare i file delle differenze del pianeta (p.e., differenze di minuto in minuto).

Ecco un grafico che spiega l'uso della memoria durante l'importazione dell'intero pianeta, in modalità RAM :

RAM-usage-planet-import.png

Non dimenticatevi di contare i 6.1 GB per la compressione del dump del pianeta stesso!

Datasets

Ci sono due grandi datasets necessari per renderizzare i tasselli, così è probabilmente una buona idea inziare a scaricarli per primi.

Planet.osm

Planet.osm è un istantanea del database di OpenStreetMap. Vedere Planet.osm

$ wget http://planet.openstreetmap.org/planet-latest.osm.bz2

Da Notare: Se volete renderizzare una piccola area come test veloce potete importare un qualsiasi file .osm, non avete bisogno di renderizzare l'intero pianeta. Questa scelta è consigliata se volete velocemente provare che il rendering funziona prima di spendere diverse ore tra scaricare oltre 3 GB e importare l'intero pianeta. Potete ottenere un file .osm corretto scaricando e salvando un area su JOSM o usando uno degli estratti più piccoli del pianeta elencati su Planet.osm#Extracts.

Confini del Mondo

Mapnik usa i dati contenuti in shapefile esterni per le linee costiere a bassi livelli di zoom. Vedere Coastline#Main_Mapnik_Layer

$ wget http://tile.openstreetmap.org/world_boundaries-spherical.tgz (50 MB)
$ wget http://tile.openstreetmap.org/processed_p.tar.bz2 (357 MB)
$ wget http://tile.openstreetmap.org/shoreline_300.tar.bz2 (48 MB)

Dopo averli scaricati e aver ottenuto un risultato dagli scripts di Mapnik (vedere dettagli qui di seguito), create una cartella mapnik/world_boundaries e estrate gli archivi, ma spostate tutti i file dalle sottocartelle esistenti direttamente nella cartella world_boundaries.

Da Giugno 2010, sono necessari altri due file:

$ wget http://www.naturalearthdata.com/http//www.naturalearthdata.com/download/10m/cultural/10m-populated-places.zip (1.5 MB)
$ wget http://www.naturalearthdata.com/http//www.naturalearthdata.com/download/110m/cultural/110m-admin-0-boundary-lines.zip (38 KB)

PostgreSQL/PostGIS

Mapnik può usare PostgreSQL/PostGIS come suo database. Per istruzioni su come installare e configurare PostgreSQL/PostGIS per usarlo con Mapnik, vedere la pagina di installazione Mapnik/PostGIS.

osm2pgsql

osm2pgsql è un convertitore e caricatore di dati da Openstreetmap a PostgreSQL.

Per le informazioni di installazione, vedere osm2pgsql. Prima potete usare osm2pgsql per la prima volta con la proiezione Sferica Mercator (vedere qui di seguito), avete bisogno di inizializzare i dati di configurazione per questa proiezione. Per farlo lanciate il file .sql incluso con osm2pgsql:

[Sintassi su Windows]
$ psql -d gis -f c:\osm2pgsql\900913.sql
[Sintassi su Linux]
$ wget http://trac.openstreetmap.org/browser/applications/utils/export/osm2pgsql/900913.sql?format=raw -O 900913.sql
$ psql -d gis -f ./900913.sql

Abilitare Intarray (se pensate di usare diffs)

psql gis < /usr/share/postgresql/8.3/contrib/_int.sql

Inoltre è necessario assicurarsi che la struttura del database utilizzato da osm2pgsql è sincronizzato con quello utilizzato da Mapnik. Se non lo sono, potrebbero capitare delle cose buffe anche se non evidenti in un primo momento.

La struttura è descritta nel file default.style per osm2pgsql e osm.xml (resp. osm-template.xml) per Mapnik. Il file default.style contenuto nel tuo pacchetto osm2pgsql package è quasi sicuramente non aggiornato quando quando non compilate i sorgenti svn. Così quando recuperate i dati Mapnik OSM da svn (vedere qui) occorre inoltre aggiornare default.style p.e. via repository browser.

Installare Mapnik

Per installare Mapnik, si prega di seguire le istruzioni qui: Installazione di Mapnik.

Per una più specifica procedura di installazione su Fedora 10, vedere questa procedura: Installazione su Fedora.

Caricamento Dati

Chiamare semplicemente osm2pgsql (come l'utente che lancerà):

$ osm2pgsql -m -d gis planet-latest.osm.bz2

Questo processo richiede una significativa quantità di memoria libera (da una stima sommaria, almeno 512 MB). Se si esaurisce la memoria, può chiudersi in un modo piuttosto imprevedibile (p.e. un messaggio potrebbe suggerire che c'è un problema nel file .osm). Assicurarsi di avere sufficiente RAM libera e spazio di swap disponibili prima di eseguire osm2pgsql.

L'opzione "-m" abilita l'uso della proiezione Sferica Mercator che è quella raccomandata. Questa è quella predefinita dalla versione 0.55, SVN r8320. Alcuni vecchi strumenti possono aspettarsi ancora i dati da importare in una proiezione differente come ad esempio "latlong" o Mercator non-sferico. Sono disponibili delle opzioni a riga di comando per selezionare queste o altre proiezioni.

L'ultimo codice di osm2pgsql supporta anche una finestra di delimitazione per filtrare i dati durante l'import che renderà le cose molto più veloci se uno vuole renderizzare solo una piccola parte del pianeta. Pes esempio se volete solo importare Londra dal file estratto relativo all'UK:-

$ osm2pgsql --bbox -0.5,51.25,0.5,51.75 -m -d gis uk-080213.osm.bz2

Alcuni problemi che potrebbero verificarsi

Proiezione errata

Se i tasselli della tua mappa appaiono disallineati di 10 - 20 km in direzione Nord/Sud allora potreste aver dimenticato di aggiungere l'opzione "-m" nell'import con osm2pgsql. Dalla versione 0.55 di osm2pgsql la proiezione sferica mercator (-m) è la proiezione predefinita.

Impossibile aprire il file dati

Se state cercando di caricare un file gzip del pianeta di dimensioni superiori a 7 GB potreste incontrare un errore nell'aprire il file. Questo è dovuto ad un errore presente in alcune versioni di zlib che non riescono a fornire il parametro O_LARGEFILE al comando open(). La soluzione è quella di usare un processo esterno di gzip che non soffre di questo errore. Specificando il nome del file "-" farà leggere i dati a osm2pgsql da STDIN.

gzip -dc planet-080213.osm.gz | osm2pgsql -m -

Senza Memoria

Se i tuoi caricamenti falliscono con un errore simile a questo

Using projection SRS 900913 (Spherical Mercator)
Setting up table: planet_osm_point
Setting up table: planet_osm_line
Setting up table: planet_osm_polygon
Setting up table: planet_osm_roads
Mid: Ram, scale=100

Reading in file: -
Entity: line 1: parser error : Extra content at the end of the document

^
- : failed to parse
Error occurred, cleaning up

Probabilmente dovrete eseguire osmpg2sql in modalità slim, che salva gli oggetti intermedi su disco invece che in RAM. Per far questo eseguire osm2pgsql con il parametro '-s':

osm2pgsql -m -s -d gis planet-080213.osm.gz

Proiezione non valida su pgSQL

Potreste ricevere questo errore subito dopo l'avvio :

Using projection SRS 900913 (Spherical Mercator)
Setting up table: planet_osm_point
SELECT AddGeometryColumn('planet_osm_point', 'way', 900913, 'POINT', 2 );
  failed: ERROR:  AddGeometryColumns() - invalid SRID
CONTEXT:  SQL statement "SELECT AddGeometryColumn('','', $1 , $2 , $3 , 
$4 , $5
)"
PL/pgSQL function "addgeometrycolumn" line 4 at SQL statement

Questo significa che la proiezione non è stata inizializzata e avete bisogno di lanciare il file SQL 900913.sql nella cartella di osm2pgsql. Per far questo :

wget http://svn.openstreetmap.org/applications/utils/export/osm2pgsql/900913.sql && psql -f 900913.sql gis

per farlo funzionare dopo aver eseguito il comando sql, bisogna riavviare il demone del database :

sudo /etc/init.d/postgresql restart

Locked out

Dopo diverse ore l'import potrebbe chiudersi con un errore simile:-

ANALYZE planet_osm_line;
 failed: ERROR:  deadlock detected
DETAIL:  Process 28511 waits for AccessExclusiveLock on relation 1064115 of database 18309; blocked by process 12776.
Process 12776 waits for ShareLock on transaction 572766655; blocked by process 28511.

Error occurred, cleaning up

Questo sebra essere un difetto in alcune versione di PostgreSQL ed è causato quando viene tentanto un auto-vacuum durante ANALYZE. La soluzione è quella di disabilitare tutti gli auto-vacuums sul database. I dati non vengono aggiornati dopo l'importazione così il processo di vacuum non fa niente di utile. Nel file postgresql.conf impostare l'opzione:

autovacuum = off

Quindi riavviare il server database

sudo /etc/init.d/postgresql-8.1 restart

Da Notare: Su Debian/Ubuntu dovete anche aggiornare /etc/cron.d/postgresql-common per commentare i due processi pg_maintenance (aggiungere un carattere '#' all'inzio della riga) che altrimenti causerebbero dei vuoti ad intervalli regolari:-

# Eseguire VACUUM ANALYSE su tutti i database ogni 5 ore se pg_autovacuum non è 
# in esecuzione
# 2 0,5,10,15,20 * * 1-6 root if [ -x /usr/sbin/pg_maintenance ]; then /usr/sbin/pg_maintenance --analyze >/dev/null; fi

# Ogni domenica potreste voler lanciare un ANALISI COMPLETA dei VACUUM 
# Se non avete un sito attivo 24/7, potreste togliere il commento dalla prossima linea
# così da eseguire un VACUUM COMPLETO regolarmente.  Se avete bisogno di una connettività 24/7, risparmiatevi
# VACUUM FULL per quando pensate di averne veramente bisogno.
# 10 3 * * Sun root if [ -x /usr/sbin/pg_maintenance ]; then /usr/sbin/pg_maintenance --full --analyze >/dev/null; fi

Non dimenticatevi di riattivarli se fate qualsiasi altra cosa con postgres, o se le performance dovessero degradarsi lentamente.

Accesso Negato

Usando la proiezione SRS 900913 (Mercator Sferico)
Setting up table: planet_osm_point
SELECT AddGeometryColumn('planet_osm_point', 'way', 900913, 'POINT', 2 );
 failed: ERREUR:  droit refusé pour la relation geometry_columns
CONTEXT:  instruction SQL « DELETE FROM geometry_columns WHERE
		f_table_catalog = '' AND f_table_schema = 'public' AND f_table_name = 'planet_osm_point' AND f_geometry_column = 'way' »
PL/pgSQL function "addgeometrycolumn" line 94 at EXECUTE statement
instruction SQL « SELECT AddGeometryColumn('','', $1 , $2 , $3 , $4 , $5 ) »
PL/pgSQL function "addgeometrycolumn" line 4 at SQL statement

Error occurred, cleaning up

L'utente non ha il permesso di modificare il database gis. Dovete eseguire osm2pgql come l'utente che si è creato in fase di configurazione del database postgresql.

Autenticazione fallita

Se nono potete connettervi a postgres tramite il comando psql (questo avviene, per esempio, con Ubuntu 9.10 e postgres 8.3):

 $ psql -W gis username
 psql: FATAL:  Ident authentication failed for user "username"

Anche dopo aver impostato la password per l'utente:


 $ sudo -u postgres -s -H
 postgres@aoeu$ psql 
 Welcome to psql 8.3.5, the PostgreSQL interactive terminal.
 ALTER ROLE username PASSWORD 'mypassword';

Potrebbe essere necessario aggiungere le seguenti linee al file pg_hba.conf (che si trova p.e. in /etc/postgresql/8.3/main):

 local   all         all                               trust   
 host    all         all         127.0.0.1/32          trust
 host    all         all         ::1/128               trust

Così da poter usare l'autenticazione password da localhost.

Da Notare che potrebbe essere necessario commentare qualsiasi riga esistente che inizi con local all o host all. Ho dovuto commentare la seguente sezione su Ubuntu 8.10:

# "local" is for Unix domain socket connections only 
#local   all         all                               ident sameuser
# IPv4 local connections:
#host    all         all         127.0.0.1/32          md5
# IPv6 local connections:
#host    all         all         ::1/128               md5

Elementi Sconosciuti

Se ricevete il messaggio di errore

Unknown Element name : changeset

dovete aggiornare il vostro osm2pgsql ad una versione più recente.

Renderizzare con Mapnik

Decomprimere i dati precedentemente scaricati contenenti lo zoom a basso livello e linee costiere, da Giugno 2010 sono necessari anche i seguenti due file zip:

cd ~/mapnik
tar xzf world_boundaries-spherical.tgz
tar xjf processed_p.tar.bz2 -C world_boundaries
tar xjf shoreline_300.tar.bz2 -C world_boundaries
unzip 10m-populated-places.zip -d world_boundaries
unzip 110m-admin-0-boundary-lines.zip -d world_boundaries

Quanto sopra dovrebbe lasciarvi con tutti gli shapefile nella cartella world_boundaries.

Se non lo avete ancora fatto, esportare i dati di Mapnik dalla repository subversion di OSM:

svn export http://svn.openstreetmap.org/applications/rendering/mapnik
cd mapnik

Il file osm.xml è costruito fuori dal core di osm.xml e l'XML include i file nella cartella inc/. La cartella inc/ contiene 3 file .template, che sono usati come input per lo script generate_xml.py:

./generate_xml.py -h

Verificare se le impostazioni predefinite previste nello script sono giuste per voi. Dovrete fornire i valori dove non ci sono valori predefiniti. Per esempio:

./generate_xml.py --host localhost --user `whoami` --dbname gis --symbols ./symbols/ --world_boundaries ./world_boundaries/ --port 5432 --password 'something'

Questo comando prende i file .template dalla cartella inc/ e crea delle di questi file non-di modello, con le proprie impostazioni. Se non potete o non volete lanciare lo script, è possibile farlo anche a mano. Ora aggiornare il foglio di stile da SVN è facile come eseguire un 'svn update'. SVN non toccherà mai i file generati con le impostazioni. Se verrà mai aggiunta una nuova opzione al file di modello .template, solo allora sarà necessario eseguire nuovamente lo script generate_xml.py.

Dopo aver impostato il foglio di stile in questo modo, si può Mapnik al file osm.xml. Il file osm.xml richiama i file nella cartella inc/, attraverso l'uso di entità XML. Non avrete più bisogno di creare un altra copia del foglio di stile.

Si può decidere quali aree saranno renderizzate impostando un rettangolo di delimitazione e un livello di zoom nel file generate_(tiles|image).py

Facoltativo: Supporto ai caratteri CJK

Attualmente, mapnik include un carattere per supportare i caratteri CJK (Cinesi, Giapponesi e Koreani, et. al. o genericamente altri dell'Asia dell'Est). Per aggiungere il supporto dovete aprire il file inc/fontset-settings.xml.inc e togliere il commento dalle righe che hanno "unifont Medium".

Le vecchie versioni di mapnik non hanno incluso unifont. In questi casi è necessario:

  1. Scaricare il GNU Unifont Glyphs
  2. Scompattare e mettere il file ttf nella propria cartella /usr/local/lib/mapnik/fonts (o altra cartella appropriata) con gli altri caratteri di Mapnik.

Renderizzare i tasselli

Ora è possibile chiamare

MAPNIK_MAP_FILE="osm.xml" MAPNIK_TILE_DIR="tiles/" ./generate_tiles.py

generate_tiles.py produce i tasselli che possono essere resi disbonibile da un server adatto. (Guardare dentro il file per scoprire quale area del pianeta e a quale ingrandimento viene renderizzata. Guarda a bbox e min,max zoom. Se volete selezionare un area differente andate su openstreetmap.org e cliccate nella pagina "Esporta" ; poi "Seleziona manualmente un'area differente". Seleziona l'are che vuoi, e i quattro campi testo visualizzeranno i valori da fornire in sequenza [sinistra,basso,destra,alto]). Se avete una macchina multi-processore, per velocizzare la generazione dei tasselli, potete dividere un area p.e. in quattro quadrati ed eseguire più istanze allo stesso tempo. Ulteriori miglioramenti nella velocità sono possibili riducendo i colli di bottiglia dovuti all'I/O del disco (iowait time). Questi colli di bottiglia possono essere trovati per esempio con iofile.d; su Mac OS X this returns Spotlight, and Postgress statistics collector as parallel disk I/O consumers.

o

./generate_image.py

generate_image.py genera una singola immagine per una certa finestra di delimitazione. Cioè, essenzialmente ottiene i tasselli e li unisce in una singola immagine immensa. Questo potrebbe essere utile per le persone che vogliono gestire un'area limitata così da risparmiarsi il fastidio di dover gestire più tasselli.

Risoluzione dei problemi

Ci sono diversi possibili problemi che potreste incontrare nei vostri tasselli renderizzati o renderizzando i tasselli:

  1. Se i tasselli generati o le immagini visualizzano le linee costiere, ma mancano di strade, nome delle strade, città e altre caratteristiche, si prega di verificare se l'utente ha il diritto di loggarsi al database. Gli script e Mapnik potrebbero tranquillamente fallire nel leggere i dati e renderizzare solo le coste, ma non gli altri dati. Un altra causa è aver compilato Mapnik senza il supporto a PostGIS.
  2. Attualmente la versione degli ultimi due script su svn sono fatti per essere usati con Mapnik 0.5 e potreste ricevere alcuni errori se cercate di usarli con una versione precedente. (Questi script potrebbero cercare di invocare il programma 'convert'. Potrebbe essere necessario installare ImageMagick o scegliere di non usare 'convert'.)
  3. Se i toponimi asiastici appaiono come blocchi invece di normali caratteri, allora non avete abilitato l'uso dei caratteri unifont nel foglio di stile. Modificate inc/fontset-settings.xml.inc e togliete i commenti dalle linee con unifont. I caratteri unifont sono forniti insieme a mapnik dalla versione 0.7.0.
    Per essere sicuri, che i caratteri unifont siano propriamente configurati e nella giusta cartella, potete lanciare il comando: ls `python -c "import mapnik;print mapnik.fontscollectionpath"`. E' quindi possibile controllare i nomi dei caratteri disponibili con: > python -c "from mapnik import FontEngine as e;print '\n'.join(e.instance().face_names())"
  4. Se state usando un file system ext4 (quello predefinito nelle distribuzioni come openSUSE 11.2 e Ubuntu 9.10) e state generando diversi tasselli, potrebbe capitare che lo script si interrompa perchè non può creare nuovi file dei tasselli. Questo è un problema di file system. Cancellate quanti più file potete, forzate un controllo del file system e/o passare ad un file system più stabile.
  5. questo errore può accadere in alcune distribuzioni unix:
 untimeError: PSQL error:
 FATAL:  Ident authentication failed for user "username" (encountered during parsing of layer 'leisure')

Nella maggior parte delle installazioni Unix postgres è configurato in modo predefinito per lavorare usando l'autenticazione 'ident stesso utente'. Per usarlo rimuovere i seguenti parametri dalla configurazione: user, port, host, password. Cancellate tutti i linee di parametri per questi, per esempio:

 ./generate_xml.py --accept-none --dbname gis --symbols ./symbols/ --world_boundaries ./world_boundaries/

Così mapnik si collegherà come se aveste lanciato "psql gis" da riga di comando (senza specificare host, username or password).

Ridurre lo spazio su disco

Se state renderizzando il mondo intero (cioè, bbox = (-180.0, -90.0, 180.0, 90.0)) ci sono un po' di cose da fare per ridurre drasticamente lo spazio usato su disco.

  1. Verificate di avere solo i tasselli che userete.
    1. Per esempio, I valori massimi di x e y per lo zoom 10 sono 1023. Così, l'ultimo tassello dovrebbe essere TILEDIR/10/1023/1023.png.
    2. Tuttavia, potreste avere tasselli renderizzati con valori di x e y oltre quel valore. (Io avevo valori di y attorno al 1300)
    3. Per prima cosa cancellateli per ogni livello di zoom.
  2. Ad alti livelli di zoom (8 o simili),molti tasselli sono duplicati (p.e., oceani o laghi vuoti, e aree di terra senza caratteristiche).
    1. Su sistemi operativi che lo supportano, potete creare symbolic links ad un insieme di tasselli di acque o terre vuoti.

Esempio di risparmio (per me (athlon02)):

  1. A livello zoom 9, lo spazio disco usato era 3.8 GB (se serviva memoria). Ora è 1.4 GB.
  2. A livello zoom 10,lo spazio disco usato era 12-13 GB all'inzio. Dopo era 4.58 GB.
  3. Lo spazio da voi risparmiato potrebbe differire.

Personalizzare il rendering

Ora che avete il vostro foglio di stile per il rendering predefinito funziona potete incominciare a personalizzare la mappa.

Curve di Livello

E' possibbile aggiungere le curve di livello alle proprie mappe come ha cyclemap , le curve di livello sono basate sulle SRTM (Shuttle Radar Topograhy Mission) di pubblico dominio della NASA. E' anche possibile aggiungere Ombreggiature e colorazioni diverse in base all'elevazione alle proprie mappe basandosi sugli stessi dati.

Fogli di Stile

I fogli di stile sono documenti XML che controllano molti aspetti di come vengono renderizzate le caratteristiche, come colore e larghezza delle linee per mostrare differenti tipi di strade. Il formato non è molto compatto né facile da capire, ma permette un sacco di potenza/flessibilità. La versione che usiamo nella slippy map è probabilmente il file osm.xml su SVN head:applications/rendering/mapnik/osm.xml . Vedere Esempi con Mapnik per un esmpio di un più semplice foglio di stile.

La sintassi di un foglio di stile è specificata qui: XMLConfigReference. MinScaleDenominator e MaxScaleDenominator specifica il minimo e massimo valore di scala a cui ogni simbolo/caratteristica viene renderizzata.

Si può giocare con i fogli di stile di Mapnik direttamente online qui: http://dev.openstreetmap.nl/~panman/styledit/

Guardare Cascadenik e Spreadnik se pensate di sviluppare fogli di stile più complessi.

Renderizzazione regionalizzata dei nomi

Per renderizzare i nomi:* names invece del tag name predefinito, dove disponibile, è possibile pre-elaborare i dati o modify il database postgis dopo.

Personalizzare default.style

Se state modificando default.style, per esempio per aggiungere piste ciclabili o dati di rete al database, si noti che osm2pgsql non usa il default.style nella cartella di lavoro, ma cerca /usr/share/osm2pgsql/default.style.

Dovrete usare il parametro --style per specificare il proprio file default.style. Usare .osm2pgsql -h maggiori informazioni.