数据是一切应用的基础。最近为了折腾一些好看的地图,想下载中国区域的OpenStreetMap(简称OSM)的地图数据。找了一些资料,在CentOS Linux服务器上搞起,作为技术小白,得记录下以备后面不时之需。
OpenStreetMap
OpenStreetMap是一个世界地图,由全世界的人们所构筑,可依据开放许可协议自由使用。直白的讲,就是一个开放街道数据(不仅仅是街道数据,还包括行政区划、自然要素等数据)的众包平台,所有人都可以免费得到这份全球的数据。其目标是创造一个内容自由且所有人可编辑的世界地图。
去哪里下载?
这么好的免费资源,直接访问OpenStreetMap官网可查看详细信息。
- 区域地图,可以从这里下载:http://download.geofabrik.de/
- 全球地图,可以从这里下载:http://ftp.heanet.ie/mirrors/openstreetmap.org/planet/planet-latest.osm.bz2
由于全球数据太大,只下载Asia区域的数据,获取pbf文件下载地址。(由于pbf格式较小,约5GB)直接在CentOS服务器上用WGET下载,发现速度巨慢,只有几十KB的速度。这样得吓倒猴年马月去啊,搞个多线程下载提速吧。发现Axel比WGET采用多线程下载可以提升80%的效率。
Axel is an awesome command line download manager with many futures. It's very light and smooth and easy to install. Axel tries to accelerate HTTP/FTP downloading process by using multiple connections for one file. It can use multiple mirrors for a download.
我菜,这么牛逼的工具,必须用之。
安装Axel
由于俺们服务器是CentOS 7.2,对于CenOS 6/7 需要添加EPEL repository:
# yum install epel-release
# yum install axel
或者可以直接通过RPM包进行安装:
# rpm -ivh ftp://fr2.rpmfind.net/linux/dag/redhat/el6/en/x86_64/dag/RPMS/axel-2.4-1.el6.rf.x86_64.rpm
对于采用Debian或者Ubuntu Linux的童鞋,可以通过以下命令直接安装:
# apt-get install axel
使用Axel多线下载
直接使用Axel命令下载:
# axel -n 10 http://download.geofabrik.de/asia-latest.osm.pbf
其中:-n 10指定下载线程数,-o x可以指定另存目录,-q静默模式,无任何输出信息。
还可根据需要,添加更多选项:
# axel --help
Usage: axel [options] url1 [url2] [url...]
--max-speed=x -s x Specify maximum speed (bytes per second)
--num-connections=x -n x Specify maximum number of connections
--output=f -o f Specify local output file
--search[=x] -S [x] Search for mirrors and download from x servers
--header=x -H x Add header string
--user-agent=x -U x Set user agent
--no-proxy -N Just don't use any proxy server
--quiet -q Leave stdout alone
--verbose -v More status information
--alternate -a Alternate progress indicator
--help -h This information
--version -V Version information
当然,下载过程中如果中断,或者通过Ctrl+C认为中断下载后,在原来的目录重新执行相同命令,则可以恢复下载进度,而不会从头开始下载。
下载速度真心不错,刚开始一度达到1Mb/s.
最后花了4个小时,下完了这份数据。
[ 99%] .......... .......... .......... .......... .......... [ 353.7KB/s]
[ 99%] .......... .......... .......... .......... .......... [ 353.6KB/s]
[ 99%] .......... .......... .......... .......... .......... [ 353.6KB/s]
[ 99%] .......... .......... .......... .......... .......... [ 353.5KB/s]
[100%] .......... .......... .......... .......... .......... [ 353.5KB/s]
[100%] ..
Downloaded 5621.5 megabytes in 4:31:23 seconds. (353.52 KB/s)
可选配置
既然axel用着顺手,考虑到之前wget命令用习惯了,可以给其指定别名为wget。