一步步DIY: OSM-Web服务器(一) PostgreSql 配置以及osm2pgsql原始PBF数据导入
(-:<转载时请注明本文由goldenhawking在 CSDN blog 撰写,http://blog.csdn.net/goldenhawking/article/details/7952303。
2012年,Ubuntu 12.04LTS发布,又一个长效支持版,我们又该更新OpenStreetMap服务器了,这次,将详细在博客中记录配置过程。关于前面对OpenStreetMap的介绍,参考我的博文http://blog.csdn.net/goldenhawking/article/details/6402775
1、预防针
全球数据导入工作非常耗时,也很容易出错,吸取前面N次的教训,在开始之前,打好预防针,主要有:
a) 稳定的64位环境
先前的博客中,2009年的数据集合还能运行在32位虚拟机中,2012年20GB的原始数据压缩文件展开后占用200GB以上的磁盘,光是ID一列字段就盛满4G的空间,显然32位是不行了。这次采用16GBwindows Server 、16核心盘阵服务器,2TB磁盘空间,VMBox虚拟机8GB内存以期资源充足。
b) UPS电力供应+工作状态保护
由于数据导入过程可能长达1-4周,为了吸取长时间断电即使UPS也挂了的惨痛教训,本次在Windows Server 2003 64bit + Oracle VirtualBox 4.18 下进行导入工作,以便在断电时,利用UPS的有限时间进行snapshot,而后休眠,以保证导入工作不被干扰。如果不使用虚拟机,直接使用系统的休眠,osm2pgsql与postgis 的 TCP连接有可能被重置(当你使用外部地址而不是localhost时),照样会挂。
c) 质量过关的磁盘
在中等内存容量下,采用slim模式导入,将面对持续数周的密集磁盘访问,采用盘阵速度较快,且容错保护好。以前出现过使用单块硬盘,读写了4周(3周导入,1周渲染),硬盘噪音超大,没用一年就挂了的惨痛经历。
2、最终目的
完整导入全球Planet.OSM数据集,并编译、配置最新的Mapnik渲染器;采用最新的apache2+ mod_tile rended 搭建WebService;采用OpenLayers 实现 SlippyMap;利用GeoServer + OpenLayers +PostGIS叠加显示动态矢量数据。对拉丁语系、斯拉夫语系的地名进行翻译,并附带实现C-S架构的客户端
好了,下面开始第一篇,也是万事开头难,痛苦的数据导入过程。
------------------------------------------------------
本次,既然有8GB内存,就不在乎图形界面耗费的一两百MB了,使用Linux-Mint 13 64bit 作为基础平台,操作性好,利于安装eclipse、QT, code-blocks 等IDE进行开发实践。
<0>专门找一台机器,全天下载全球数据文件
这一步在国内网速不好时,太要命了。用BT也不是太好,大家酌情考虑自己的方式。
访问http://download.geofabrik.de/osm/ 下载感兴趣区域的数据,全球的直接google Planet.osm ,到wiki的链接FTP去下载(暴慢),或者去http://osm-torrent.torres.voyager.hr/files/ 去下载PBF种子(我的网速下,好不了哪去),这一步会花费好多天。osm.bz2格式的要比PBF大好多,导入的时候慢好多,建议能用就用 pbf的。如果使用PBF, 后面编译 osm2pgsql时,需要libprotobuf-c0-dev 和protobuf-c-compiler两个库,否则会不认。
我这次是先下个中国的pbf,60MB,导入供功能测试,等到后面下完了,再导入全球的。
<1>安装PostgreSQL
./osm2pgsql -dosmgis -s -S"./default.style" -C384 -Uwww-data -W -Hlocalhost -v ~/downloaded/china.osm.pbf
即可导入。china.osm.pbf 的数据导入很快。
-----------------------------------
本文就到这里,现在,我们有了基础的数据。下一篇,我们开始配置 mapnik2 渲染器,以及 apache-mod_tile + renderd 组成的WMS服务器。
- 1楼das_stanley前天 13:46
- postgreSQL 作为海量GIS数据库还是不错的。希望你能在后面的文章里写一写啊,你那些C-S模式的客户端是怎么设计的,特别是万国语的自动翻译,我想用google翻译,结果太慢了,因为地名太多了,看来必须自己来翻译成中文。
- Re: goldenhawking前天 13:50
- 回复das_stanleyn恩,这个我会在第四篇或者第五篇里涉及的。翻译地名,主要针对地级市以上,至于很多小村庄,以及非拉丁语系、斯拉夫语系的地名都不行的,因为我从网上下载的地名库也不全。