5. Creazione di servizi tiles utilizzando Mapproxy¶
Requisiti¶
Installazione Mapproxy¶
Il metodo più semplice di installare Mapproxy è di utilizzare uno tra PIP o easy_install perciò da utente amministratore digitate
pip install mapproxy
o
easy_install mapproxy
Verra installato Mapproxy con tutte le sue dipendenze e così sarai pronto ad iniziare in pochissimo tempo.
Configurazione Mapproxy¶
Innanzitutto creiamo una cartella dove andare ad inserire i servizi forniti da Mapproxy, è consigliabile inserirla in una directory accessibile dal server web che andrete ad usare, lavoreremo in $HOME/mapproxy, perciò bisognerà assegnargli i permessi corretti e poi entratevi.
A questo punto andiamo a creare la configurazione base eseguendo
mapproxy-util create -t base-config osm
questo creerà una directory osm con all’interno due file:
- mapproxy.yaml: questo è il file di configurazione di Mapproxy che serve per definire le sorgenti dei dati, i sistemi di riferimento e le cache
- seed.yaml: serve per definire le zone dove verranno pre renderizzate le tiles
A questo punto potete controllare se l’installazione è andata a buon fine lanciando il server locale per la fase di sviluppo
mapproxy-util serve-develop mapproxy.yaml
Potrete verificare che il tutto funzioni correttamente visitando la pagina internet 127.0.0.1:8080/demo potendo accedere al servizio WMS e TMW di prova. Passiamo ora alla configurazione del servizio utilizzando Mapnik.
mapproxy.yaml¶
#opzioni dei servizi
services:
demo:
kml:
tms:
# needs no arguments
wmts:
wms:
srs: ['EPSG:4326', 'EPSG:900913']
# image_formats: ['image/jpeg', 'image/png']
md:
# metadata used in capabilities documents
title: OSM Mapnik
abstract: OSM rendering from Mapnik.
online_resource: http://vostramacchina.o.ip
contact:
person: Voi
position:
organization:
address:
city:
postcode:
country: Italy
phone:
fax:
email: your@contant.it
access_constraints:
test di prova
fees: 'None'
# opzioni dei layer
layers:
- name: osm
title: OSM rendering
sources: [osm_cache]
# opzione delle cache
caches:
osm_cache:
grids: [italy_osm_grid]
sources: [osm_mapnik]
# impostazioni delle sorgenti
# se ne possono mettere più di una
sources:
osm_mapnik:
type: mapnik
mapfile: $HOME/osm/openstreetmap_main/$USER.xml
use_mapnik2: true
# opzioni delle griglie su cui creare le tiles
grids:
italy_osm_grid:
base: GLOBAL_GEODETIC
res_factor: 'sqrt2'
srs: 'EPSG:900913'
bbox: [6.6, 35.4, 18.6, 47.1]
bbox_srs: 'EPSG:4326'
res: [
# res level scale @90.7 DPI
280.0000000000, # 0 1000000.00000000
140.0000000000, # 1 500000.00000000
70.0000000000, # 2 250000.00000000
35.0000000000, # 3 125000.00000000
17.5000000000, # 4 62500.00000000
8.7500000000, # 5 31250.00000000
4.3750000000, # 6 15625.00000000
2.1875000000, # 7 7812.50000000
1.0937500000, # 8 3906.25000000
0.5468750000, # 9 1953.12500000
]
num_levels: 10
# opzioni globali
globals:
# opzioni della cache
cache:
# where to store the cached images
base_dir: './cache_data'
# where to store lockfiles
lock_dir: './cache_data/locks'
# opzioni per il formato delle immagini
image:
resampling_method: nearest
# resampling_method: bilinear
# resampling_method: bicubic
format: image/jpeg
jpeg_quality: 90
Avvertimento
$HOME e $USER vanno sostituiti con i relativi parametri
Questo è il file di configurazione per attivare i servizi WMS e TMS tramite Mapproxy utilizzando come motore di rendering Mapnik e come file dello stile quello creato in precendenza dallo stile principale del portale di OpenStreetMap. Per maggiori informazioni potete fare riferimento alla documentazione online di Mapproxy
seed.yaml¶
seeds:
myseed1:
caches: [osm_cache]
grids: [italy_osm_grid]
#views: [italy]
coverages: [italy]
levels:
to: 5
#refresh_before:
#time: 2010-10-21T12:35:00
coverages:
italy:
bbox: [6.6, 35.4, 18.6, 47.1]
bbox_srs: "EPSG:4326"
res: [
# res level scale @90.7 DPI
280.0000000000, # 0 1000000.00000000
140.0000000000, # 1 500000.00000000
70.0000000000, # 2 250000.00000000
35.0000000000, # 3 125000.00000000
17.5000000000, # 4 62500.00000000
8.7500000000, # 5 31250.00000000
4.3750000000, # 6 15625.00000000
2.1875000000, # 7 7812.50000000
1.0937500000, # 8 3906.25000000
0.5468750000, # 9 1953.12500000
]
# italy:
# ogr_datasource: 'shps/world_boundaries_m.shp'
# ogr_where: 'CNTRY_NAME = "Italy"'
# ogr_srs: 'EPSG:900913'
I seeds sono le aree delle quali volete prerenderizzare le tiles, in questo caso una unica di tutta l’Italia ma potrebbero essere più aree o regioni. È possibile ricreare solo le tiles più vecchie di una certa data ed anche seguire i confini di una zona utilizzando dei semplici file
Creazione Tiles¶
Una volta configurato i due file spiegati sopra potete avviare la creazione delle tiles. Questo è un processo lungo e che richiede oltre al tempo, RAM e spazio del disco. Una volta controllato di avere sufficiente spazio per salvare il numero di tiles che andrete a creare potete lanciare
mapproxy-seed -s seed.yaml -f mapproxy.yaml -c 2
L’opzione -c serve dividere il lavoro su più core e di velocizzare il processo di creazione delle tiles. Finito questa operazione potrete finalmente testare le vostre tile rilanciando il server di produzione e controllando sul browser internet che queste siano state prodotte.
Messa in produzione¶
Una volta verificato il corretto funzionamento delle tile dovete provvedere a mettere il sistema online, per questo ci viene di nuovo in aiuto il programma mapproxy-util . Prima creiamo il file lo script del server
mapproxy-util create -t wsgi-app -f mapproxy.yaml config.py
e questo sarà il risultato
# WSGI module for use with Apache mod_wsgi or gunicorn
# # uncomment the following lines for logging
# # create a log.ini with `mapproxy-util create -t log-ini`
# from logging.config import fileConfig
# import os.path
# fileConfig(r'$USER/mapproxy/osm/log.ini', {'here': os.path.dirname(__file__)})
from mapproxy.wsgiapp import make_wsgi_app
application = make_wsgi_app(r'$USER/mapproxy/osm/mapproxy.yaml')
Avvertimento
Anche in questo caso dovrete modifare i percorsi ai file
Prima di andare a modificare la configurazione del nostro server web è possibile creare il file di log tramite
mapproxy-util create -t log-ini log.ini
Avvertimento
Se attivate il logger ricordatevi di decommentare le linee nel file config.py
Apache Ambedded¶
Questo è probavilmente il più semplice delle configurazioni, basta modificare il file default nella cartella sites-avalaible nella configurazione di Apache e aggiungere queste righe
WSGIScriptAlias /mapproxy_osm $HOME/mapproxy/osm/config.py
<Directory $HOME/mapproxy/osm/>
Order deny,allow
Allow from all
</Directory>
Avvertimento
Anche in questo caso dovrete modifare i percorsi ai file
Adesso basta riavvare apache (da amministratore)
/etc/init.d/apache restart
e poi visualizzare su un browser l’indirizzo http://127.0.0.1/mapproxy_osm