用PostgreSQL 9.5 & PostGIS 2.2驅(qū)動(dòng)全國OSM地圖數(shù)據(jù)

上周把Asia區(qū)域的OSM的地圖數(shù)據(jù)Down下來了,數(shù)據(jù)是放到服務(wù)器硬盤上了汛蝙,可是還得放到數(shù)據(jù)庫里烈涮,然后進(jìn)一步用她來制作地圖等等。由于這是一份地理空間數(shù)據(jù)患雇,所以需要支持空間存儲(chǔ)的數(shù)據(jù)庫來驅(qū)動(dòng)跃脊。首選PostgreSQL數(shù)據(jù)庫 + PostGIS的開源數(shù)據(jù)庫方案,下面就重頭開始搭建PostgreSQL數(shù)據(jù)環(huán)境苛吱,將OSM的數(shù)據(jù)導(dǎo)入數(shù)據(jù)庫中酪术。

PostgreSQL + PostGIS on CentOS 7

1.安裝yum源

采用Yum源來安裝,由于CentOS默認(rèn)Yun安裝對(duì)應(yīng)的PostgreSQL和PostGIS版本較低(貌似是9.2)翠储,這里我采用9.5的版本來進(jìn)行部署绘雁。

首先安裝添加Yum源,RPM源的地址可以從https://yum.postgresql.org/repopackages.php獲取援所。根據(jù)要部署的OS版本來選擇不同的版本庫庐舟,查看服務(wù)器操作系統(tǒng)類型和版本。

$ uname -a
Linux localhost.localdomain 3.10.0-514.21.1.el7.x86_64 #1 SMP Thu May 25 17:04:51 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

$ cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core)

根據(jù)所使用的平臺(tái)系統(tǒng)類型和版本選擇正確的安裝源住拭。

PostgreSQL 9.5版本的CentOS 7 RPM源(https://download.postgresql.org/pub/repos/yum/9.5/redhat/rhel-7-x86_64/pgdg-centos95-9.5-3.noarch.rpm

當(dāng)然現(xiàn)在最新版本為10.0挪略,也可以部署9.6的版本历帚,這里以9.5為例。

yum install https://download.postgresql.org/pub/repos/yum/9.5/redhat/rhel-7-x86_64/pgdg-centos95-9.5-3.noarch.rpm
yum update
2.安裝postgresql95-server

部署PostgreSQL 9.5客戶端:(可選項(xiàng))

sudo yum install postgresql95 postgresql95-odbc PyGreSQL

部署PostgreSQL服務(wù)端以及相關(guān)依賴包

sudo yum install postgresql95-server postgresql95-contrib postgresql95-devel
3.初始化數(shù)據(jù)
sudo /usr/pgsql-9.5/bin/postgresql95-setup initdb
4.啟動(dòng)數(shù)據(jù)庫服務(wù)
sudo systemctl start postgresql-9.5

開機(jī)自動(dòng)啟動(dòng)數(shù)據(jù)服務(wù):

sudo systemctl enable postgresql-9.5.service
5.數(shù)據(jù)庫配置

由于默認(rèn)配置不支持密碼認(rèn)證杠娱,同時(shí)僅可供本地服務(wù)器訪問挽牢,需要進(jìn)行相關(guān)配置。編輯pg_hba.conf文件摊求,設(shè)置數(shù)據(jù)庫的遠(yuǎn)程可訪問性禽拔。增加host all all 0.0.0.0/0 md5來信任遠(yuǎn)程連接。

sudo vi /var/lib/pgsql/9.5/data/pg_hba.conf
pg_hba配置

編輯配置postgresql.conf文件室叉,開啟遠(yuǎn)程訪問:

sudo vi /var/lib/pgsql/9.5/data/postgresql.conf
postgresql.conf配置

生產(chǎn)環(huán)境可根據(jù)具體的網(wǎng)絡(luò)策略來進(jìn)行設(shè)置睹栖。

重啟數(shù)據(jù)庫服務(wù)

sudo systemctl restart postgresql-9.5

設(shè)置防火墻及訪問端口

sudo firewall-cmd --zone=public --add-port=5432/tcp --permanent
sudo firewall-cmd --reload

可使用數(shù)據(jù)庫客戶端連接訪問,測試是否安裝及配置成功茧痕。

數(shù)據(jù)庫連接測試
6.安裝PostGIS
sudo yum install postgis2_95 postgis2_95-devel postgis2_95-client

其中postgis2_95-client包含PostGIS的命令行工具shp2gpsql, pgsql2shp, raster2pgsql野来,方便導(dǎo)入或?qū)С隹臻g數(shù)據(jù)。

OSM數(shù)據(jù)入庫

PostgreSQL數(shù)據(jù)庫準(zhǔn)備就緒凿渊,將下載的asia-latest.osm.pbf數(shù)據(jù)導(dǎo)入梁只。生態(tài)系統(tǒng)提供了一批免費(fèi)工具和開源組件。

  • osmosis:基于Java的處理OSM數(shù)據(jù)的命令行工具埃脏,可以從數(shù)據(jù)庫創(chuàng)建地圖Dump搪锣、加載Dump到數(shù)據(jù)庫;基于數(shù)據(jù)庫歷史表生成變更集彩掐;把變更集應(yīng)用到數(shù)據(jù)庫构舟;根據(jù)兩個(gè)地圖Dump生成變更集;重新排序Dump中的數(shù)據(jù)堵幽;根據(jù)多邊形邊界框抽取地圖等等狗超。
  • osmum:基于C++、JavaScript的處理OSM數(shù)據(jù)的框架朴下。
  • osm2pgsql:基于C++的導(dǎo)入OSM到PostgreSQL的命令行工具努咐。

直接使用osm2pgsql工具將數(shù)據(jù)導(dǎo)入數(shù)據(jù)庫中;首先使用上述sql創(chuàng)建數(shù)據(jù)庫殴胧,并且建立空間擴(kuò)展渗稍。

createdb osm
psql -d osm -c 'CREATE EXTENSION postgis; CREATE EXTENSION hstore;'

其中osm就是我的數(shù)據(jù)庫名稱。然后使用下面的命令導(dǎo)入之前下載好的數(shù)據(jù)

osm2pgsql -c -d osm --slim -C 2048 --flat-nodes /tmp/flat.files --number-processes 4 -U postgres -W -H 192.168.120.30 -P 5432 china-latest.osm.pbf

這里有幾個(gè)地方要注意团滥,一個(gè)是-C選項(xiàng)最好指定你電腦的內(nèi)存的75%竿屹,單位為 Mb,并且最大只能為30000灸姊,–flat-nodes 用來指定一個(gè)文件路徑拱燃,存放這個(gè)文件的位置至少要有20G的空閑空間(如果導(dǎo)入全球數(shù)據(jù)的話)。

導(dǎo)入全國的數(shù)據(jù)大約花了40多分鐘力惯,完成后會(huì)有一個(gè)概覽碗誉。

node cache: stored: 48136826(100.00%), storage efficiency: 50.52% (dense blocks: 427, sparse nodes: 45890166), hit rate: 100.00%

預(yù)覽地圖數(shù)據(jù)

使用QGIS工具召嘶,連接PostgreSQL數(shù)據(jù)庫,加載OSM數(shù)據(jù)預(yù)覽哮缺。


北京道路

參考:
1.http://www.postgresonline.com/journal/archives/362-An-almost-idiots-guide-to-install-PostgreSQL-9.5,-PostGIS-2.2-and-pgRouting-2.1.0-with-Yum.html
2.http://wiki.openstreetmap.org/wiki/Osm2pgsql

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末苍蔬,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子蝴蜓,更是在濱河造成了極大的恐慌,老刑警劉巖俺猿,帶你破解...
    沈念sama閱讀 206,378評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件茎匠,死亡現(xiàn)場離奇詭異,居然都是意外死亡押袍,警方通過查閱死者的電腦和手機(jī)诵冒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來谊惭,“玉大人汽馋,你說我怎么就攤上這事∪” “怎么了豹芯?”我有些...
    開封第一講書人閱讀 152,702評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長驱敲。 經(jīng)常有香客問我铁蹈,道長,這世上最難降的妖魔是什么众眨? 我笑而不...
    開封第一講書人閱讀 55,259評(píng)論 1 279
  • 正文 為了忘掉前任握牧,我火速辦了婚禮,結(jié)果婚禮上娩梨,老公的妹妹穿的比我還像新娘沿腰。我一直安慰自己,他們只是感情好狈定,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,263評(píng)論 5 371
  • 文/花漫 我一把揭開白布颂龙。 她就那樣靜靜地躺著,像睡著了一般掸冤。 火紅的嫁衣襯著肌膚如雪厘托。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,036評(píng)論 1 285
  • 那天稿湿,我揣著相機(jī)與錄音铅匹,去河邊找鬼。 笑死饺藤,一個(gè)胖子當(dāng)著我的面吹牛包斑,可吹牛的內(nèi)容都是我干的流礁。 我是一名探鬼主播,決...
    沈念sama閱讀 38,349評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼罗丰,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼神帅!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起萌抵,我...
    開封第一講書人閱讀 36,979評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤找御,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后绍填,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體霎桅,經(jīng)...
    沈念sama閱讀 43,469評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,938評(píng)論 2 323
  • 正文 我和宋清朗相戀三年讨永,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了滔驶。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,059評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡卿闹,死狀恐怖揭糕,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情锻霎,我是刑警寧澤著角,帶...
    沈念sama閱讀 33,703評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站量窘,受9級(jí)特大地震影響雇寇,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜蚌铜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,257評(píng)論 3 307
  • 文/蒙蒙 一锨侯、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧冬殃,春花似錦囚痴、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至涣觉,卻和暖如春痴荐,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背官册。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來泰國打工生兆, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人膝宁。 一個(gè)月前我還...
    沈念sama閱讀 45,501評(píng)論 2 354
  • 正文 我出身青樓鸦难,卻偏偏與公主長得像根吁,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子合蔽,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,792評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容