Advertisement

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

清空浏览器缓存查看

全部评论 (0)

还没有任何评论哟~