使用osm2pgsql导入OSM数据

osm2pgsql 是openstreetmap提供的一个数据导入工具,之前我们也用过imposm导入过地理数据,但在某些未知情况下,imposm会出现进程挂死的状态,所以有时候可能我们还是使用传统的方式导入数据比较安全!

首先安装必要的依赖

yum install gcc-c++ libxml2-devel postgresql-devel bzip2-devel proj-devel protobuf-compiler postgresql-devel automake libtool geos-devel boost-devel  

为了能读取PBF格式的文件,我们还需要安装以下两个扩展

yum install protobuf-devel protobuf-c-devel  

下载源代码

git clone https://github.com/openstreetmap/osm2pgsql.git  
cd osm2pgsql  
mkdir build && cd build  
cmake ..  
make  
make install  

如果你的pg数据库用户有密码的话,需要设置环境变量来传入PG用户的密码

export PGPASS=password  

关于PG数据库导入的优化配置(postgresql.conf),autovacuum 的配置一定要特别关注一下:

- autovacuum = off

开始导入数据

nohup /usr/local/bin/osm2pgsql -G -c -d osmgis -s -C32000 --number-processes 24 -Uosmgis --hstore planet-latest.osm.pbf&  

-C 默认是800M,这个请根据实际情况分配
–number-processes CPU的核数,可以根据实际情况指定,但感觉效果影响不大

相关文档也可以参见:

http://wiki.openstreetmap.org/wiki/Osm2pgsql

关于osm2pgsql的导入评测:

http://wiki.openstreetmap.org/wiki/Osm2pgsql/benchmarks