近期的图表需求中强调了GIS地图的优先级,因此我们需要一个稳定且低成本的GIS地图服务器,对比高德和百度的商业合作解决方案后,我们决定使用开源地图OpenStreetMap。
需要强调的是OpenStreetMap的地图数据是免费开源的,但它的地图服务不是,因此如果想使用OpenStreetMap的地图服务,有两个选择:选择付费的服务提供商(例如mapbox)或自己搭建地图服务器,考虑到服务器响应速度和地图的功能需求,最终决定我们自己动手搭建OpenStreetMap瓦片服务器。
本文中使用的服务器操作系统为Debian8.8,部署过程需要root权限。
创建系统用户
|
|
PostgreSQL & Postgis
PostgreSQL用来存储地图数据,PostGIS是其地理空间插件,相比MySQL,PostgreSQL拥有更好的几何类型支持和空间数据库扩展。
|
|
osm2pgsql
osm2pgsql的作用是将OSM数据转换并导入PostGIS里的工具
|
|
Stylesheet
获取样式表
|
|
OSM Data
获取OSM的地图数据
http://download.geofabrik.de/index.html
http://planet.openstreetmap.org/pbf/
|
|
导入地图数据
|
|
mod_tile
mod_tile是OSM的地图瓦片服务,没有Debian8的适配版本,需要从源码进行编译
|
|
Generate Mapnik Style
服务端地图渲染
|
|
Font
安装地图渲染所需要的中文字体
|
|
renderd
配置服务端地图渲染
修改/usr/local/etc/renderd.conf
|
|
修改/home/youdata/mod_tile/debian/renderd.init
|
|
|
|
Apache2
文件服务器
|
|
编辑/etc/apache2/sites-enabled/000-default.conf
|
|
如果需要开启跨域访问的话
|
|
编辑添加:
LoadModule headers_module modules/mod_headers.so
Header set Access-Control-Allow-Origin *
|
|
启动服务
|
|
测试服务是否正常
访问http://localhost/osm/0/0/0.png
通过以下命令输出日志
使用openstreetmap重定向测试地图服务
安装chrome重定向插件”Switcheroo Redirector”
添加以下重定向:
- https://tile-a.openstreetmap.fr/hot/ => http://10.165.124.194/osm/
- https://tile-a.openstreetmap.fr/hot/ => http://10.165.124.194/osm/
- https://tile-a.openstreetmap.fr/hot/ => http://10.165.124.194/osm/
访问http://www.openstreetmap.org/
OSM中选择”Humanitarian”图层
参考资料:
https://wiki.debian.org/OSM/tileserver/jessie#Install_mod_tile
https://switch2osm.org/manually-building-a-tile-server-16-04-2-lts/