osm地图服务器搭建(二)
配置Apache
安装apache
sudo apt install apache2
创建一个模块来加载文件
sudo nano /etc/apache2/mods-available/mod_tile.load
粘贴下列代码到文件中
LoadModule tile_module /usr/lib/apache2/modules/mod_tile.so
创建一个链接
sudo ln -s /etc/apache2/mods-available/mod_tile.load /etc/apache2/mods-enabled/
编辑下列的初始配置
sudo nano /etc/apache2/sites-enabled/000-default.conf
粘贴以下代码至文件中
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
保存文件并重启Apache
sudo systemctl restart apache2
手动启动renderd
运行以下指令:启动renderd服务;运行之后,请确保不要手动关闭此命令
sudo -u 'osm' renderd -f -c /usr/local/etc/renderd.conf
在网页浏览器中打开指定路径的URL:your-server-ip/osm_tiles/0/0/0.png, 如果显示了完整的地理信息图,则表明服务器配置正确,并可以直接关闭该操作。
如果没有显示地图,则无需担心。继续执行下一步操作。
后台启动renderd service
通过拷贝mod_tile的init脚本安装renderd init脚本:
sudo cp mod_tile/debian/renderd.init /etc/init.d/renderd
赋予权限
sudo chmod a+x /etc/init.d/renderd
编辑init脚本文件
sudo vim /etc/init.d/renderd
改变下列的变量值
DAEMON=/usr/local/bin/$NAME
DAEMON_ARGS="-c /usr/local/etc/renderd.conf"
RUNASUSER=osm
保存文件。
创建下列文件,使得osm可以操作这些文件
sudo mkdir -p /var/lib/mod_tile
sudo chown osm:osm /var/lib/mod_tile
然后开始renderd service
sudo systemctl daemon-reload
sudo systemctl start renderd
sudo systemctl enable renderd
使用leaflet显示滑动地图
进入apache2目录
cd /var/www/html/
接下来,请从leftletjs.com获取JavaScript和CSS文件,并将其解压至root web folder。
wget http://cdn.leafletjs.com/leaflet/v1.3.3/leaflet.zip
解压
unzip leaflet.zip 没有unzip的话安装以下
apt install unzip
对Apache2网站进行修改,并将其中的一段特定代码替换成以下提供的代码段;将颜色较深的部分设置为对应的服务器IP地址。
sudo nano /var/www/html/index.html
<html>
<head>
<title>My first osm</title>
<link rel="stylesheet" type="text/css" href="leaflet.css"/>
<script type="text/javascript" src="leaflet.js"></script>
<style>
#map{width:100%;height:100%}
</style>
</head>
<body>
<div id="map"></div>
<script>
var map = L.map('map').setView([53.555,9.899],5);
L.tileLayer('http://your-ip/osm_tiles/{z}/{x}/{y}.png',{maxZoom:18}).addTo(map);
</script>
</body>
</html>
查看瓦片地图
操作完成后即可退出程序。目前,在浏览器中访问服务器IP地址即可查看滑动地图。
your-ip/index.html or your-ip
当第十步操作出现故障时
sudo -u 'osm' renderd -f -c /usr/local/etc/renderd.conf
预渲染地图
建议采用render_list命令以实现图形块的批量预渲染而非即时处理。这些图形块将在特定存储路径/ var/lib/mod_tile中进行缓存,并由-z和-Z参数来确定缩放比例。最大可支持18级的缩放比例,在此范围内放大级别越高,则所需计算时间相应增加。完成预渲工作则会占用较多的时间资源,并消耗大量计算资源以生成高分辨率图像库文件夹(IMAGES)。若第十步中的最后一个指令出现错误,则需手动启动图像生成服务并执行预加载操作(PRELOAD)。当发现某些组件无法正常加载时,请立即关闭当前页面并重新启动服务(RELOAD)。在决定是否继续预加载之前,请确保已关闭所有可能干扰的工作进程( background tasks)。在决定是否继续预加载之前,请确保已关闭所有可能干扰的工作进程(background tasks)。重新加载时会从上次中断的位置继续开始处理(resum)。
sudo -u 'osm' renderd -f -c /usr/local/etc/renderd.conf
render_list -m default -a -z 0 -Z 10
请移除所有的边界线设计。
接下来需要对样式表文件进行操作。
定位到对应的admin节点以及其子项 admin-outline。
设置所有边界的背景颜色为浅蓝色。
同时调整主标签区域的背景颜色为红色。
<Style name="admin" filter-mode="first">
<Rule>
<MaxScaleDenominator>200000000</MaxScaleDenominator>
<LineSymbolizer stroke="#d8c3b1" stroke-width="0.5" stroke-dasharray="20, 10, 5, 10" stroke-opacity="0.6" />
</Rule>
</Style>
<Style name="admin-outline" filter-mode="first">
<Rule>
<MaxScaleDenominator>200000000</MaxScaleDenominator>
<LineSymbolizer stroke="#ffffff" stroke-width="2.5" stroke-opacity="0.3" />
</Rule>
修改海洋颜色,修改背景色
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE Map[]>
<Map srs="+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over" font-directory="./fonts" buffer-size="256" background-color="#b3dcdb" maximum-extent="-20037508.34,-20037508.34,20037508.34,20037508.34">
以上操作 需要删除 /var/lib/mod_tile/default default文件
执行一下命令
sudo systemctl daemon-reload
sudo systemctl restart renderd
sudo -u 'osm' renderd -f -c /usr/local/etc/renderd.conf
render_list -m default -a -z 0 -Z 12
sudo systemctl restart apache2
清空浏览器缓存查看
