这些软件包与Ubuntu Linux版本12.04 LTS(精确穿山甲)及以上版本配合使用。安装完成后,您应该使用标准的OSM Mapnik样式表使用自己的工作tileer,您可以在其中导入OSM数据的提取以进行渲染。


  • mod_tile用于服务
  • renderd作为渲染守护进程
  • mapnik为实际渲染





对于Ubuntu 12.04

sudo apt-get install python-software-properties

对于Ubuntu 12.10及更高版本

sudo apt-get安装软件属性常见
sudo add-apt-repository ppa:kakrueger / openstreetmap


sudo apt-get更新


sudo apt-get install libapache2-mod-tile



wget http://download.geofabrik.de/europe/ireland-and-northern-ireland-latest.osm.pbf

使用osm2pgsql将数据导入到postgresql数据库中。osm2pgsql可以使用许多不同的参数,这些参数取决于您可用的硬件和要导入的数据提取的大小。您需要设置的最有可能的是“-C”,“-slim”和“ - 数字处理”。-C指定Mb osm2pgsql将用于缓存数据的数量。所以这取决于你可用的RAM的数量。-slim将完整的osm数据保存在磁盘上,是更新和低内存环境所必需的。-number-processes指定用于导入过程的某些部分的并行进程数。最佳值主要取决于磁盘系统的速度和可用的处理器内核。

osm2pgsql --slim -C 1500  - 数字处理4 ireland-and-northern-ireland.osm.pbf

根据您正在导入的提取物的大小和计算机的性能,对于小型提取物,可能需要几分钟的时间才能在较慢的硬件上完成行星的几分钟。如果您正在导入完整的行星,强烈建议您设置-C 18000(18 GB的RAM缓存,并随着OSM数据库的增长而增加)。如果您没有足够的内存量,这可能会导致您的服务器在导入期间进行交换,但在许多情况下,它仍然比为节点缓存使用较小的值更快。但是,您需要确保已配置足够的交换内存。


导入时间的大部分以及数据库的大小都用于创建索引以跟踪更新。如果您不打算使数据库连续不间断地使用“差异文件”,则可能需要使用-drop选项导入数据,该  选项将在导入后删除“slim-tables”,而不需要渲染并且不创建仅需要支持差异导入的索引。一旦您每1 - 2周更频繁地更新一次,可能会更有效地每次完成重新导入,而不是使用更新。


触摸/ var / lib / mod_tile / planet-import-complete


sudo /etc/init.d/renderd重启


如果您没有在本地主机上打开slippymap.html,并且您只看到粉红色的图块,则需要编辑html页面,并将localhost替换为“new OpenLayers.Layer.Layer.SMM(”Local Tiles“...”)中正确的服务器名称,或将其更改为相对URL。





sudo apt-get安装渗透


sudo /usr/bin/install-postgis-osm-user.sh gis www-data


sudo -u www-data /usr/bin/openstreetmap-tiles-update-expire 2012-04-21

As the packaged script currently uses an outdated service to determine the correct replication start-point, you will need to manually choose and download the correct state.txt from the base_url (see below) which corresponds to slightly before the age of the extract to make sure all modifications are included in your db. This needs to be copied to /var/lib/mod_tile/.osmosis/state.txt

You will next need to update the default configuration of osmosis. In /var/lib/mod_tile/.osmosis/configuration.txt change the base_url to

Update your tileserver by up to an hour and expire the corresponding rendered tiles

sudo -u www-data /usr/bin/openstreetmap-tiles-update-expire

If your tile server is behind more than an hour you will need to call the openstreetmap-tiles-expire script multiple times. If you want to continuously keep your server up to data, you need to add the openstreetmap-tiles-expire script to your crontab.

Keeping the data up-to-date can be resource intense, in particular because after the import you may already be multiple days behind. Consider changing maxInterval in /var/lib/mod_tile/.osmosis/configuration.txt to 21600 (six hours) till you have caught up. Further, add “–number-processes 2” to the osm2pgsql command in /usr/bin/openstreetmap-tiles-update-expire or a higher number if this is appropriate for your hardware.

The initial install installed pre-processed coastlines, from time to time it may make sense to replace the files with new versions:

wget http://tile.openstreetmap.org/processed_p.tar.bz2

and extract it to



There are a number of things that can go wrong. Here are a few of the common problems and there solutions:

Connection to database failed in osm2pgsql

If you are getting the following error message when importing data with osm2pgsql, you have probably forgotten to add your username in the allowed users section during the configuration. Connection to database Failed: FATAL: Ident authentication failed for user “xyz”

You can fix this in one of two ways:

Either you reconfigure the package, this time including both www-data and your own user name in a space separated list,

sudo dpkg-reconfigure openstreetmap-postgis-db-setup

Or, you manually grant permissions to your user account with the following command:

sudo /usr/bin/install-postgis-osm-user.sh gis xyz


Hardware requirements can be quite demanding if you want to render larger areas, but aren’t too bad if you are only interested in smaller regions. For a standard desktop (approximately 4 GB of ram, standard harddisk, dual – quad core CPU) probably an extract size of about 100 – 300 Mb is reasonable (import time of the order of an hour).

If you want to import and render the whole world, you will need a considerably beefier server than a typical desktop. E.g. starting from about 24Gb of RAM upwards. It is also strongly recomend to use an SSD for the database or at least a fast RAID array. The full planet import is currently around about 256GB, so to store all of the DB on an SSD, you will likely need a 512GB SSD. An import that is not updated and uses the –drop option on the otherhand likely still fits on a 256GB SSD. You can also selectively put the most important parts of the database on an SSD and the rest on slower disks. Osm2pgsql supports using separate tablespaces for different parts of the database for this purpose.


Where are the various files (DB / Tiles, etc.) ?

  • Style sheets and coastlines are in /etc/mapnik-osm-data
  • Tiles are in /var/lib/mod_tile
  • Renderd configuration in /etc/renderd.conf
  • mod_tile configuration in /etc/apache2/sites-available/tileserver_site
  • Scripts are in /usr/bin
  • Database configuration is in /etc/postgresql/X.X/main (where X.X is the PostgreSQL version, for example 9.1)
  • osm2pgsql configuration and state.txt is in /var/lib/mod_tile/.osmosis

How do I pre-render tiles ?

You can use render_list to pre-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)

If you are using –all, you can restrict the tile range by adding these options:

 -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

Without –all, send a list of tiles to be rendered from STDIN in the format X Y Z, e.g.

0 0 1
0 1 1
1 0 1
1 1 1

The above would cause all 4 tiles at zoom 1 to be rendered

Note that you have to set –socket=/var/run/renderd/renderd.sock


感谢Kai Krueger维护包装和准备文件。


  • 广告
  • 抄袭
  • 版权
  • 政治
  • 色情
  • 无意义
  • 其他