使用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的导入评测: