从包中构建瓦片服务器

从包中构建瓦片服务器

如果你想建立自己的瓦片服务器,使用软件包可以节省大量的安装工作。

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

它基于OSM自己的瓦片服务器使用的相同的软件:

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

这些软件包的主要目的是通过将包装脚本尽可能多的自动化来简化安装。

安装

需要将以下命令输入终端进行设置:

如果您没有安装add-apt-repository,请将其添加到:

对于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更新

安装软件包libapache2-mod-tile及其依赖项。在配置过程中,会询问几个问题。要确保自动安装脚本可以工作,您应该保留默认值。但是,在关于数据库用户的权限的问题中,您希望在用户之后添加自己的用户名,该数据由空格分隔,以便能够在用户下导入数据。

sudo apt-get install libapache2-mod-tile

导入地图数据

下载要渲染的OpenStreetMap数据(完整的行星文件可以在planet.openstreetmap.org上找到,国家提要可以在例如download.geofabrik.de上找到)。例如:

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数据库的增长而增加)。如果您没有足够的内存量,这可能会导致您的服务器在导入期间进行交换,但在许多情况下,它仍然比为节点缓存使用较小的值更快。但是,您需要确保已配置足够的交换内存。

如果要导入完整的行星文件,您可能还需要使用-flat-nodes选项。它为某些数据而不是postgis数据库使用自定义格式文件,使其更有效率,但对区域提取效率较低。在导入期间临时更改PostgreSQL配置也可能是有意义的。(例如,增加检查点数量,减少共享缓冲区大小。)

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

mod_tile旨在始终提供最新的图块(见下文更新)。由于在更改时重新渲染所有已更改的图块通常是不可行的,因此mod_tile会在投放时启动重新渲染过时的图块。这样的mod_tile需要知道什么时候行星被导入。这是通过更改文件planet-import-complete的时间戳来完成的

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

最后,您需要重新启动渲染守护程序,之后所有应该准备好。

sudo /etc/init.d/renderd重启

如果一切正常,您应该有一个工作的tileerver,您可以通过访问http://localhost/osm/slippymap.html查看其结果

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

更新

以下命令说明如何使用最新的OSM数据来保持瓷砖服务器的最新版本。

使用上述osm2pgsql导入初始数据库之后(您将需要在初始导入中使用-slim选项以允许更新),则需要执行以下步骤

安装渗透

sudo apt-get安装渗透

授予用户www数据更新表的权限

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
“http://planet.openstreetmap.org/replication/minute/”

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

/etc/mapnik-osm-data/world_boundaries/

Troubleshooting

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

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.

FAQ

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

Acknowledgements

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/400452.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【51单片机快速入门指南】4: 软件 I2C

目录硬知识I2C 介绍I2C 物理层I2C 协议层数据有效性规定起始和停止信号应答响应总线的寻址方式数据传输示例程序Soft_I2C.cSoft_I2C.h普中51-单核-A2 STC89C52 Keil uVision V5.29.0.0 PK51 Prof.Developers Kit Version:9.60.0.0 硬知识 摘自《普中 51 单片机开发攻略》 I2…

【51单片机快速入门指南】4.1: I2C 与 AT24C02 (EEPROM) 的跨页连续读写

目录硬知识AT24Cxx 介绍引脚排列引脚说明存储结构器件寻址器件操作待机模式存储复位写操作字节写页写应答查询读操作当前地址读随机读顺序读示例程序24C02.c24C02.h测试程序main.c实验现象通讯波形写入部分读取部分普中51-单核-A2 STC89C52 Keil uVision V5.29.0.0 PK51 Prof…

iOS Application Security

文章分A,B,C,D 4个部分。 A) iOS Application Security 下面介绍iOS应用安全,如何分析和动态修改app。 1)iOS Application security Part 1 – Setting up a mobile pentesting platform Part1介绍如何在越狱的设备上搭建用来测试iOS安全的环境。 2&…

【51单片机快速入门指南】4.2: SSD1306 OLED屏(0.96寸、1.3寸)的I2C控制详解

目录硬知识SSD1306简介I2C 接口从机地址位(SA0)I2C 总线写数据命令解码器晶振电路和显示时间发生器复位图形显示数据RAM (GDDRAM)命令表基本命令表部分指令详解为 BANK0 设置对比度控制(81h)全部显示开启(A4h/A5h&…

使用GNS3和Cisco IOU搭建路由交换实验-安装篇

如何使用GNS3和Cisco IOU搭建路由交换实验-安装篇GNS3软件的安装建议大家从官网直接下载最新版本的GNS3,官网连接http://www.gns3.com/根据系统类型选择相应的版本,这里我选择的是Windwos系统的最新版本1.3.2下载好安装包后直接运行安装包,在…

1787: [Ahoi2008]Meet 紧急集合

1787: [Ahoi2008]Meet 紧急集合 Time Limit: 20 Sec Memory Limit: 162 MBSubmit: 1482 Solved: 652[Submit][Status][Discuss]Description Input Output Sample Input 6 4 1 2 2 3 2 4 4 5 5 6 4 5 6 6 3 1 2 4 4 6 6 6 Sample Output 5 2 2 5 4 1 6 0 HINT Sou…

一步一步学Vue(四)

接上篇。上篇中给出了代码框架,没有具体实现,这一篇会对上篇定义的几个组件进行分别介绍和完善: 1、TodoContainer组件 TodoContainer组件,用来组织其它组件,这是react中推荐的方式,也是redux中高阶组件一般…

【51单片机快速入门指南】4.3: I2C读取MPU6050陀螺仪的原始数据

目录硬知识特性参数MPU6050 简介模块重要寄存器简介电源管理寄存器 1陀螺仪配置寄存器加速度传感器配置寄存器FIFO 使能寄存器陀螺仪采样率分频寄存器配置寄存器电源管理寄存器 2陀螺仪数据输出寄存器加速度传感器数据输出寄存器温度传感器示例程序MPU6050.cMPU6050.hmain.c实验…

OSM数据的获取及格式转换

转自 :http://blog.sina.com.cn/s/blog_72f0b6080102w39z.html 前言:本篇博文将介绍如何对OSM数据进行获取,以及格式的转换(转为shapefile格式)。以供OSM数据获取失败、OSM editor操作失败的朋友参考。由于并不是多么高…

再读TCP/IP网络7层协议

随着工作的深入,每次读这7层协议,每次都有不同的理解。 分层名 分层号 描述 比喻 应用层Application La…

oracle复习笔记

2019独角兽企业重金招聘Python工程师标准>>> 1.oracle相关认证:OCA:Oracle认证专员,OCP:Oracle专家认证,OCM:Oracle认证大师。 2.1979年,Oracle2发布。 3.Oracle数据库特点:支持多用户,大事务量的事务处理&…

【51单片机快速入门指南】4.3.1: MPU6050调用DMP库获取四元数和欧拉角

目录相关介绍DMP库相关DMP加载步骤:DMP设置数据写入更新DMPDMP数据包结构程序实现DMP.cDMP.h测试程序四元数实验现象欧拉角的获取普中51-单核-A2 STC89C52 Keil uVision V5.29.0.0 PK51 Prof.Developers Kit Version:9.60.0.0 上位机:Vofa 1.3.10 相关…

cardsui-for-android

https://github.com/Androguide/cardsui-for-android cardsui-for-android-master.zip

spoj 2 Prime Generator

题目&#xff1a;Prime Generator 思路&#xff1a;分段筛素数 #include <cstdio> #include <iostream> #include <cmath> #include <algorithm> #include <cstring> #include <map> using namespace std; #define maxn 40000 int n_prime…

LTDC/DMA2D—液晶显示

本章参考资料&#xff1a;《STM32F4xx 参考手册 2》、《STM32F4xx 规格书》、库帮助文档《stm32f4xx_dsp_stdperiph_lib_um.chm》。关于开发板配套的液晶屏参数可查阅《5.0 寸液晶屏数据手册》配套资料获知。 显示器简介显示器属于计算机的 I/O 设备&#xff0c;即输入输出设备…

【51单片机快速入门指南】4.3.2: MPU6050:一阶互补滤波、二阶互补滤波和卡尔曼滤波获取欧拉角

目录源码MPU6050_Filter.cMPU6050_Filter.h使用方法测试程序一阶互补滤波效果二阶互补滤波效果卡尔曼滤波效果总结普中51-单核-A2 STC89C52 Keil uVision V5.29.0.0 PK51 Prof.Developers Kit Version:9.60.0.0 上位机&#xff1a;Vofa 1.3.10 参考资料&#xff1a; MPU6050…

NGUI基础-三大基础组件之Root组件

NGUI NGUI&#xff08;Next-Gen UI&#xff09;是一款用于Unity游戏引擎的UI插件&#xff0c;它提供了一套功能强大、灵活易用的界面开发工具。在NGUI中&#xff0c;Root&#xff08;根节点&#xff09;是一个重要的概念。 基础组件之Root Root是NGUI中的最高层级节点&#…

【转】android 中如何限制 EditText 最大输入字符数

原文网址&#xff1a;http://blog.csdn.net/fulinwsuafcie/article/details/7437768 方法一&#xff1a; 在 xml 文件中设置文本编辑框属性作字符数限制 如&#xff1a;android:maxLength"10" 即限制最大输入字符个数为10 方法二&#xff1a; 在代码中使用InputFilte…

【51单片机快速入门指南】4.3.3: MPU6050使用Mahony AHRS算法实现六轴姿态融合获取四元数、欧拉角

目录源码Mahony_6.cMahony_6.h使用方法测试程序main.c效果STC89C516 32MHz Keil uVision V5.29.0.0 PK51 Prof.Developers Kit Version:9.60.0.0 上位机&#xff1a;Vofa 1.3.10 移植自MPU6050姿态解算——Mahony互补滤波 —— 大写的小写字母 加入了输入数据范围的自动处理…

linux文件系统及bash基础特性

linux文件系统 一、根文件系统 linux被识别的第一个被称为根之间关联的文件系统叫做根文件系统&#xff08;rootfs&#xff09;&#xff0c;其他分区要想被读到&#xff0c;需要挂载到根目录的某个挂载点&#xff08;根的子目录&#xff09;上。根文件系统至关重要&#xff0c;…