又到了新年伊始,下载OpenStreetMap全球数据的时候了。结果惊奇的发现,主站已经无法打开。仔细了解了原委,表示理解。好在PBF数据依旧可以获取,只是瓦片服务已经关停。
1.OpenStreetMap的主要问题
OpenStreetMap之所以被Blocked,主要原因有以下几个。首先是违反测绘相关的法律法规,对重要地理坐标造成侵害。随便一个人就可以上去标记,给别有用心的非法测绘提供了便利。其次,对有争议的地理划定、用词等,不符合我们的规定。尤其是岛屿、边界,乱七八糟,被改的不堪入目。
通过Block主站,确实提高了非法测绘的成本,守法公民应该完全支持。考虑OpenStreetMap所包含的全球数据,依旧具有很高的学习价值。在主站已经无法访问的情况下,我们可以以研究用途从其他的离线镜像,下载PBF数据。只要不要作为瓦片服务对外发布,就不会有问题。
2.PBF数据获取
主站无法下载PBF文件。通过朋友公司的流量付费VPN也无法下载。PBF动辄几十GB,流量开销太大了,会耗尽费用。不要自己通过搭梯子下载镜像甚至标图,可能面临追溯,引来麻烦,提醒程序猿们注意。目前,可以选择镜像地址,进行常规访问。只有几个欧洲镜像还有fullplanet的导出可以访问。但是如果你的网速超级慢,69GB的文件只有几十KB的下载速度,在weekly的更新速率下,还没下完文件名就换了。
- 可以从 https://download.geofabrik.de/ 获得一些区域的数据,比如
$ wget https://download.geofabrik.de/asia-latest.osm.pbf
可以下载亚洲的数据。
- 从欧洲镜像 BBBike下载城市或者全球镜像
https://download.bbbike.org/osm/
最好使用某雷下载,速度很快。
3.ArchLinux瓦片服务变化
OpenStreetMap的瓦片服务是靠 mod_tile工程实现的。2023年,ArchLinux系列的AUR库里,是有mod_tile.git包的,不过已经过时了。最简单的方法是安装好依赖后,从git 仓库签出源码后编译。
$ git clone https://github.com/openstreetmap/mod_tile.git
$ cd mod_tile*
$ ./autogen.sh
$ ./configure
$ make
$ sudo make install
$ sudo cp src/.libs/mod_tile.so /usr/lib/httpd/modules/mod_tile.so
$ ls /usr/local/bin/renderd
只要存在src/.libs/mod_tile.so和/usr/local/bin/renderd,那大概就木有问题。
具体的配置可以参考专栏的其他文章。有两个重要的配置文件,一个是 mod_tile在apache2里的配置,另一个是renderd的配置。
- httpd.conf
Include conf/extra/mod_tile.conf
- mod_tile.conf
LoadModule tile_module modules/mod_tile.so
<VirtualHost *:80>
ServerName archosm
ServerAlias a.archosm b.archosm c.archosm d.archosm
DocumentRoot /srv/http
ModTileTileDir /var/lib/mod_tile
LoadTileConfigFile /etc/renderd.conf
ModTileEnableStats On
ModTileBulkMode Off
ModTileRequestTimeout 3
#...
</VirtualHost>
- renderd.conf
[renderd]
socketname=/var/run/renderd/renderd.sock
num_threads=4
tile_dir=/var/lib/mod_tile
stats_file=/var/run/renderd/renderd.stats
[mapnik]
plugins_dir=/usr/lib/mapnik/input
font_dir=/usr/share/fonts/
font_dir_recurse=1
[default]
URI=/osm_tiles/
TILEDIR=/var/lib/mod_tile
XML=/home/archosm/osmstyle/openstreetmap-carto/mapnik.xml
HOST=tile.archosm.org
TILESIZE=256
MINZOOM=0
MAXZOOM=20
[contour]
URI=/contour/
TILEDIR=/var/lib/mod_tile
TILESIZE=256
XML=/home/archosm/osmstyle/contour-carto/contour.xml
HOST=dem.archosm.org
相关的参数配置要根据具体的情况进行修改。其余的步骤和专栏内的其他文章所述改动不大。提醒! 由于主站已经被Block,提供OpenStreetMap 相关的瓦片托管服务绕不开法律法规问题,如果需要OpenStreetMap本地瓦片,可以继续访问我专栏里的虚拟机云盘链接,获取虚拟机供研究所用,但千万不要自己公开发布OSM数据。
4. 发行版为什么依旧选择Manjaro
使用manjaro作为OpenStreetMap服务器,当然还是考虑到软件很新。Manjaro软件更新超级快,又比ArchLinux方便,简直了,超级棒!
ArchOSM在虚拟机里不需要更新,因此无需考虑PostgreSQL等关键基础设施升级后趴窝的问题。当然,万一PostgreSQL更新了大版本,对不起,又要重新导入一遍数据备份了。此种特点,建议需要考虑稳定的用户还是选择Debain系(UbuntuLTS)。
5. 对OpenStreetMap的评价
- 一款真正意义的开放地图。真的是任何人都可以编辑。当然,肯定有大量不准确的,比如“外婆家的鱼塘” 这样的地名也常会出现。也有别有用心的标记,很是讨厌,搞得访问不了了。
- 数据模型、工具链、服务器、数据、应用,完全开源。这一点很厉害了,包括谷歌、BING也做不到。不知道开发这样的标准需要多少人力和资源,公开数据结构、算法与数据,盈利从何谈起?
- 不管是pgRoutings还是图层,确实不如BING,Google,甚至国内的地图做得漂亮,配色也是乏善可陈。尤其是算法这一块,没有动态交通数据的支持,不可能做得好。所以,OSM主要是给很多行业软件作为免费的瓦片底图来用,在Matlab或者什么软件里,让背景不是纯灰色的。