16. datasource-settings.xml.inc
• 這個檔案記錄資料庫的基本資訊
• 如果rendering跟資料庫在同⼀一台機器上,可
以直接把 “password”,“host” and “port” 註解
掉(HTML的註解⽅方法)
• 這樣mapnik就會默認主機的使⽤用者帳號為管
理者帳號
<!--
Settings for your postgres setup.
Note: feel free to leave password, host, port, or use blank
-->
<Parameter name="type">postgis</Parameter>
<!-- <Parameter name="password">%(password)s</Parameter> -->
<!-- <Parameter name="host">%(host)s</Parameter> -->
<!-- <Parameter name="port">%(port)s</Parameter> -->
<!-- <Parameter name="user">%(user)s</Parameter> -->
17. • 設定“dbname”,把 “%(dbname)s” 改
成“gis”,“estimate_extent”設
為“false”,“extent”設為
“-20037508,-19929239,20037508,19929239”
<Parameter name="dbname">gis</Parameter>
<!-- this should be 'false' if you are manually providing
the 'extent' -->
<Parameter name="estimate_extent">false</Parameter>
<!-- manually provided extent in epsg 900913 for whole
globe -->
<!-- providing this speeds up Mapnik database queries -->
<Parameter
name="extent">-20037508,-19929239,20037508,19929239</
Parameter>
20. 設置 mod_tile
• 接下來要建⽴立⼀一個⽂文件來告訴Apache
mod_tile的設置
• 新建的⽂文件是空⽩白的,在裡⾯面加上這⾏行即可
LoadModule tile_module /usr/lib/apache2/modules/mod_tile.so
$ sudo touch /etc/apache2/conf.d/mod_tile
$ sudo vim /etc/apache2/conf.d/mod_tile #I use vim
21. Apache基本設置
• Apache的基本設置⽂文件中要加⼊入mod_tile的相關設置資
訊
• 把以下幾⾏行加在admin e-mail address這⾏行之後
• (這⾏行看起來像:ServerAdmin webmaster@localhost)
LoadTileConfigFile /usr/local/etc/renderd.conf
ModTileRenderdSocketName /var/run/renderd/renderd.sock
# Timeout before giving up for a tile to be rendered
ModTileRequestTimeout 0
# Timeout before giving up for a tile to be rendered that is
otherwise missing
ModTileMissingRequestTimeout 30
$ sudo vim /etc/apache2/sites-available/default
28. Pre-render tiles
• 你可以使⽤用render_list預先render tiles
Usage: render_list [OPTION] ...
-a, --all render all tiles in given zoom level range instead of reading from
STDIN
-f, --force render tiles even if they seem current
-m, --map=MAP render tiles in this map (defaults to 'default')
-l, --max-load=LOAD sleep if load is this high (defaults to 5)
-s, --socket=SOCKET unix domain socket name for contacting renderd
-n, --num-threads=N the number of parallel request threads (default 1)
-t, --tile-dir tile cache directory (defaults to '/var/lib/mod_tile')
-z, --min-zoom=ZOOM filter input to only render tiles greater or equal to this
zoom level (default is 0)
-Z, --max-zoom=ZOOM filter input to only render tiles less than or equal to this
zoom level (default is 18)
• 如果⽤用-a後⾯面可以指定範圍
• 在http://tools.geofabrik.de/map/可以查詢地圖對應的坐標
範圍
-x, --min-x=X minimum X tile coordinate
-X, --max-x=X maximum X tile coordinate
-y, --min-y=Y minimum Y tile coordinate
-Y, --max-y=Y maximum Y tile coordinate
29. Pre-render 範例
• 如果我要預先render地圖等級0-5的tiles
• 注意socket要設置為: --socket=/var/run/
renderd/renderd.sock
$ sudo render_list -a -f -z 0 -Z 5 --socket=/var/run/
renderd/renderd.sock
• 或是我想render地圖等級7的台灣地圖
$ sudo render_list -a -f -z 7 -Z 7 x 106 X 107 y 54 Y
56 --socket=/var/run/renderd/renderd.sock
30. 更新 OSM 資料跟Tiles
• ⾸首先從前⾯面提到的網址下載最新的OSM資料
• 接下來⽤用osm2pgsql的append mode把資料轉⼊入資料庫
• 最後移除過期tiles並重新啓動renderd
$ cd ~/planet
$ wget http://planet.openstreetmap.org/pbf/planet-
latest.osm.pbf #make sure you have deleted the old one
$ osm2pgsql --slim -a -d gis -C 16000 --number-
processes 3 ~/planet/planet-latest.osm.pbf
$ sudo rm -R /var/lib/mod_tile/default/
$ sudo /etc/init.d/renderd restart