在Ubuntu 1604上构建自己的OpenStreetMap互动程序服务器

OpenStreetMap,又名OSM,是一个用户贡献的世界地图,可以自由编辑。你可以把它看作是谷歌地图的开源和自托管替代品。本教程将向您展示如何在Ubuntu 16.04上构建自己的OpenStreetMap tile服务器,这样您就不必使用专有的地图服务。

注意:本教程有点过时。请阅读我更新的教程:如何在Ubuntu 18.04上设置OpenStreetMap tile服务器。

OpenStreetMap的数据覆盖了全世界,因此可以方便地支持任何国家或每个国家的用户。

OpenStreetMap每天每小时每分钟都会更新,您可以实时获得这些更新。

OpenStreetMap数据是免费和开放的,不收取订阅费和页面浏览费。

OpenStreetMap数据丰富而详细,包含大量与地面人员相关的数据——收集数据的人员。

如果要在web浏览器中预渲染分幅以加速地图加载,则需要更多磁盘空间,这是强烈建议的。查看此页面以查看预渲染磁贴需要多少磁盘空间。另外需要注意的是,将大型地图数据(如整个地球)导入PostgreSQL数据库需要很长时间。考虑添加更多的RAM,特别是使用SSD,而不是旋转硬盘来加速导入过程。

我们将使用PostgreSQL存储地图数据。PostGIS是PostgreSQL的地理空间扩展。运行以下命令来安装它们。

安装过程中将在操作系统上创建postgres用户。它是PostgreSQL数据库服务器的超级用户。默认情况下,该用户没有密码,无需设置密码,因为您可以使用sudo切换到postgres用户:

创建一个名为gis的数据库,同时让osm成为数据库的所有者-UTF8指定数据库中使用的字符编码方案为UTF8。

接下来,将地图数据下载到osm用户的主目录。使用下面的命令下载整个星球的地图数据(32G)。

如果您想要一张各个国家或州的地图,请访问还有,自行车。org以不同的格式提供了全球200多个城市和地区的摘录。

导入地图数据需要大量内存。如果物理内存很小,可以轻松添加交换文件。首先,我们使用fallocate命令创建一个文件。例如,在根文件系统中创建一个名为swapfile、容量为2G的文件:

导入过程可能需要一些时间。建议配置SSH keepalive,以免丢失SSH连接。这很容易做到。只需在本地Linux机器上打开SSH客户端配置文件。

运行以下命令将地图样式表和地图数据加载到gis数据库中。最新取代英国。奥斯曼。pbf与您自己的地图数据文件。

osm2gpsql将以超薄模式运行,这是推荐的正常模式-d代表——数据库-C标志指定缓存大小(MB)。缓存大小越大,导入速度越快,但需要有足够的RAM才能使用缓存-S标志指定样式文件。最后,您需要指定地图数据文件。

mod_tile是一个Apache模块,需要它来提供tile服务。目前Ubuntu没有二进制软件包。我们可以从Github存储库编译它。

你应该看到世界地图的瓷砖。恭喜!您刚刚成功构建了自己的OSM磁贴服务器。

平铺网络地图在OpenStreetMap术语中也称为slippy地图。有两个免费的开源JavaScript地图库可用于tile服务器:OpenLayer和传单。传单的优点是使用简单,而且地图便于移动。

在文件中粘贴以下HTML代码。替换红色文本,并根据需要调整经度、纬度和缩放级别。

保存并关闭文件。现在,您可以通过在浏览器中键入服务器IP地址来查看拖沓的地图。

在文件中粘贴以下HTML代码。替换红色文本,并根据需要调整经度、纬度和缩放级别。

保存并关闭文件。现在,您可以通过在浏览器中键入服务器IP地址来查看拖沓的地图。

要预渲染平铺而不是动态渲染,请使用render_list命令。预渲染的磁贴将缓存在/var/lib/mod_tile目录中-z和-z标志指定缩放级别。