參考順序:
- CentOS7.5安裝Postgresql10.5和PostGIS(CentOS7.6安裝Postgresq11和PostGIS)
- CentOS7部署GeoServer
- CentOS7部署osm2pgsql
本文主要參考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
如果在cmake .. 配置過程中出現Could not find Postgresql (missing PostgreSQL_LIBRARY_DIRS...之類的錯誤,請嘗試使用下列命令執行後,再次cmake ..
sudo yum install postgresql95-devel
驗證安裝 osm2pgsql -version ,版本號顯示出來了,但是下面莫名奇妙的出了一個錯誤提示,貌似沒啥影響,處女座的朋友可以不驗證,哈哈...
5. 導入osm數據(不包含openstreetmap-carto樣式)
openstreetmap中國數據下載地址:http://download.geofabrik.de/asia.html
爲了postgres有訪問權限,建議將china-latest.osm.pbf下載到/tmp目錄下
如果你是看了《Centos7 安裝Postgresql10.5和PostGIS》之後再看這裏,那麼就安裝下hstore擴展,如果你沒有閱讀這篇文章,請在此先參考下如何建一個PostGis數據庫,安裝hstore擴展(有關更多hstore信息,請參見這裏和這裏):
su postgres
psql -d osm_db;
CREATE EXTENSION hstore;
\q
正式導入數據
osm2pgsql -s -U postgres -H 127.0.0.1 -P 5432 -W -d osm_db /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 postgres -H 127.0.0.1 -P 5432 -W -d osm_db /tmp/china-latest.osm.pbf --style /home/postgresql_data/openstreetmap-carto-master/openstreetmap-carto.style