轉載請注明原作者(think8848)和出處(http://think8848.cnblogs.com)
部署Postgresql和部署PostGis請參考前兩篇文章
本文主要參考GitHub上osm2pgsql的說明文檔
1. 先安裝Git
sudo yum install git -y
2. 下載osm2pgsql源碼
cd ~
git clone git://github.com/openstreetmap/osm2pgsql.git
在GitHub上下載文檔實在是慢的難以忍受,建議還是使用 wget -O osm2pgsql-master.zip https://codeload.github.com/openstreetmap/osm2pgsql/zip/master 下載,或者干脆用迅雷下載好,再想辦法放到CentOS中。
如果下載的文件是zip格式,那么就需要使用unzip將文件解壓,先使用 sudo yum install unzip -y 安裝unzip,然后再使用 unzip osm2pgsql-master.zip 解壓。
3. 安裝依賴包
請確保epel-release已經安裝了
sudo yum install cmake gcc-c++ boost-devel expat-devel zlib-devel bzip2-devel postgresql-devel geos-devel proj-devel proj-epsg lua-devel -y
4. 進入osm2pgsql源碼目錄,進行配置編譯安裝
cd osm2pgsql-master mkdir build && cd build
#如果是照着前兩篇文章一直走到這里,有可能在cmake時報POSTGRESQL***目錄找不到之類的錯誤,
#解決辦法是重啟電腦,然后清除/tmp/osm2pgsql-master/build目錄下所有文件和文件夾,重新使用cmake ..命令
cmake .. make sudo make install
-------------------------2016年11月10更新-------------------------
如果在cmake .. 配置過程中出現Could not find Postgresql (missing PostgreSQL_LIBRARY_DIRS...之類的錯誤,請嘗試使用下列命令執行后,再次cmake ..
sudo yum install postgresql95-devel
-------------------------2016年11月10更新-------------------------
驗證安裝 osm2pgsql -version ,版本號顯示出來了,但是下面莫名奇妙的出了一個錯誤提示,貌似沒啥影響,處女座的朋友可以不驗證,哈哈...
5. 導入osm數據(不包含openstreetmap-carto樣式)
openstreetmap中國數據下載地址:http://download.geofabrik.de/asia.html
為了postgres有訪問權限,建議將china-latest.osm.pbf下載到/tmp目錄下
如果你是看了《CentOS7部署PostGis》之后再看這里,那么就安裝下hstore擴展,如果你沒有閱讀這篇文章,請在此先參考下如何建一個PostGis數據庫,安裝hstore擴展(有關更多hstore信息,請參見這里和這里):
su postgres psql -d chinaosmgisdb; CREATE EXTENSION hstore;
\q
正式導入數據
osm2pgsql -s -U think8848 -H 127.0.0.1 -P 5432 -W -d chinaosmgisdb /tmp/china-latest.osm.pbf
6. 導入openstreetmap-carto樣式
先下載openstreetmap-carto,然后解壓,最后復制到/home/postgresql_data中
cd /tmp wget -O openstreetmap-carto-master.zip https://codeload.github.com/gravitystorm/openstreetmap-carto/zip/master
unzip openstreetmap-carto-master.zip
mv openstreetmap-carto-master /home/postgresql_data
做好准備工作后就可以導入了
su postgres
osm2pgsql -s -U think8848 -H 127.0.0.1 -P 5432 -W -d chinaosmgisdb /tmp/china-latest.osm.pbf --style /home/postgresql_data/openstreetmap-carto-master/openstreetmap-carto.style
經過一會兒的等待,就導入OK了。