ubuntu16.4 基于OpenStreetMap地圖搭建離線地理編碼服務Nominatim

問題十:Nominatim安裝

openstreetmap地圖的地理編碼服務Nominatim

本文有道筆記鏈接:http://note.youdao.com/noteshare?id=488a724840948f5d9b0e857ec9e7b3a2 ?————可以直接打開這里看圖片、附件

參考網址http://wiki.openstreetmap.org/wiki/Nominatim/Installation

參考網址2:https://github.com/twain47/Nominatim/blob/master/docs/install-on-ubuntu-16.md

https://github.com/twain47/Nominatim/blob/master/docs/Import_and_update.md

10.1預先安裝

sudo?apt-get?install?build-essential?wget

sudo?apt-get?install?libxml2-dev?wget

sudo?apt-get?install?libpq-dev?wget

sudo?apt-get?update

sudo?apt-get?install?libbz2-dev?wget

sudo?apt-get?install?libtool?wget

sudo?apt-get?install?automake?wget

sudo?apt-get?install?libproj-dev?wget

sudo?apt-get?install?libboost-dev?wget

sudo?apt-get?install?libboost-system-dev?wget

sudo?apt-get?install?libboost-filesystem-dev?wget

sudo?apt-get?install?libboost-thread-dev?wget

sudo?apt-get?install?libexpat-dev?wget

sudo?apt-get?install?gcc?wget

sudo?apt-get?install??proj-bin?wget

sudo?apt-get?install?libgeos-c1?wget---有問題,用 sudo?apt-get?install?libgeos-c1v5?wget 替換

sudo?apt-get?install?libgeos++-dev?wget

ubuntu上默認只能安裝php7了,如果想要安裝php5,可以按照如下命令——此處必須安裝php5,php7沒有用

sudo?add-apt-repository?ppa:ondrej/php

sudo?apt?update

sudo?apt?install?php5.6

sudo?apt?install?libapache2-mod-php5.6

sudo?apt?install?php5.6-curl

sudo?apt?install?php5.6-gd

sudo?apt?install?php5.6-mbstring

sudo?apt?install?php5.6-mcrypt

sudo?apt?install?php5.6-mysql

sudo?apt?install?php5.6-xml

sudo?apt?install?php5.6-xmlrpc

sudo?a2dismod?php7.0

sudo?a2enmod?php5.6

sudo?systemctl?restart?apache2

sudo?apt-get?install?php-pear?wget

sudo?apt-get?install?php5.6-pgsql?wget

sudo?apt-get?install?php5-json?wget

sudo?apt-get?install?php-db?wget

sudo?apt-get?install?postgresql-server-dev-9.5?wget

sudo?apt-get?install??postgresql-contrib-9.5?wget

因為sudo?apt-get?update導致postgresql9.5升級到9.6了

sudo?apt-get?install?postgresql-contrib-9.6?wget

sudo?apt-get?install?postgresql-server-dev-9.6?wget

apt-get?install?postgresql-9.6-postgis

由于導入的地理數據格式為pbf,所以需要安裝pbf支持軟件

sudo?apt-get?install?libprotobuf-c0-dev

sudo?apt-get?installprotobuf-c-compiler

10.2 postgresql配置

打開/etc/postgresql/9.3/main中的postgresql.conf文件,設置如下屬性:

fsync = off

full_page_writes = off

synchronous_commit = off

具體命令為:

sudo gedit /etc/postgresql/9.5/main/postgresql.conf

10.3 下載Nominatim-2.5.1.tar.bz2

wgethttp://www.nominatim.org/release/Nominatim-2.5.1.tar.bz2tar xvf Nominatim-2.5.1.tar.bz2

10.4編譯Nominatim

cd Nominatim-2.5.1

./configure

make

備注:The warning about missing lua libraries can be ignored. Nominatim does not make use of osm2pgsql's lua extension.

10.5 自定義安裝

您可以通過創建本地配置文件設置/ local.php來自定義Nominatim。 看看settings / settings.php可用的配置設置。


您需要創建一個最小的配置文件,告知nominatim它在網絡服務器上的位置:

tee settings/local.php << EOF


//?Paths

@define('CONST_Postgresql_Version',?'9.5');

@define('CONST_Postgis_Version',?'2.3');

@define('CONST_Website_BaseURL',?'http://localhost/nominatim/');

EOF

具體如下:


//?Paths

@define('CONST_Postgresql_Version',?'9.5');

@define('CONST_Postgis_Version',?'2.3');

//?Website?settings

@define('CONST_Website_BaseURL',?'http://localhost/nominatim/');

?>

bak兩個命令,無需執行

sudo?cp?-r?/etc/postgresql/9.6 ?/home/zhanggeoo7/document

sudo?cp?-r?/usr/lib/postgresql/9.6?/home/zhanggeoo7/document/usr

10.6 創建導入賬戶

導入需要使用與執行導入的帳戶同名的postgres超級用戶來完成。 您可以通過運行以下命令來創建這樣的postgres超級用戶帳戶:

sudo -u postgres createuser -s test這里test用于登錄postgres數據庫

sudo?adduser?test這里test用于登錄ubuntu系統的,密碼為luomouren

其中test是將用于執行安裝的帳戶的名稱。 您應該確保此用戶可以登錄到數據庫,而不需要密碼(例如,使用ident身份驗證)。 這是大多數發行版的默認值。 有關詳細信息,請參閱信任身份驗證。

您不能以用戶www-data或root運行導入。

創建網站用戶

將網站用戶www-data創建為PostgreSQL數據庫角色

10.7 新建網站用戶

su - postgres

createuser -SDR www-data

對于安裝過程,您必須具有此用戶。如果要在其他用戶下運行網站,請參閱設置網站一節中的注釋。

10.8 更改nominatim的讀取權限

sudo chmod +x -R /home/zhanggeoo7

sudo chmod +x -R/home/zhanggeoo7/Nominatim-2.5.1

sudo chmod +x -R/home/zhanggeoo7/Nominatim-2.5.1/module

10.9下載pdf 格式的osm數據

http://download.bbbike.org/osm/

http://download.bbbike.org/osm/bbbike/Beijing/

10.10導入pdf數據

su - test

/home/zhanggeoo7/Nominatim-2.5.1/utils/setup.php?--osm-file?/home/zhanggeoo7/Beijing.osm.pbf?--all

或者是下面的命令

/home/zhanggeoo7/Nominatim-2.5.1/utils/setup.php --osm-file /home/zhanggeoo7/Beijing.osm.pbf--all --osm2pgsql-cache 400] 2>&1 | tee setup.log

如果出現問題,您可能需要通過刪除數據庫進行清理,因為在嘗試重新創建現有數據庫時腳本將失敗。使用此命令來執行此操作:sudo -u postgres dropdb nominatim

出現錯誤及解決方案如下

error.txt ?見有道筆記分項鏈接


10.11 添加額外字段

sudo?chmod?777/home/zhanggeoo7/Nominatim-2.5.1/data-R

su - test

Add country codes and country names to the search index:

/home/zhanggeoo7/Nominatim-2.5.1/utils/specialphrases.php --countries >/home/zhanggeoo7/Nominatim-2.5.1/data/specialphrases_countries.sql

psql -d nominatim -f/home/zhanggeoo7/Nominatim-2.5.1/data/specialphrases_countries.sql

If you want to be able to search for special amenities likepubs in Dublin, you need to import special phrases from this wiki like this:

/home/zhanggeoo7/Nominatim-2.5.1/utils/specialphrases.php --wiki-import >/home/zhanggeoo7/Nominatim-2.5.1/data/specialphrases.sql

psql -d nominatim -f/home/zhanggeoo7/Nominatim-2.5.1/data/specialphrases.sql

This may be repeated from time to time when there are changes in the wiki. There is no need to repeat it after each update.

If you do not need phrases for all languages, editsettings/phrase_settings.phpand delete unneeded languages at the beginning of the file.

10.12 建立網站

Create the directory for the website and make sure it is writable by the install user and readable by Apache:

sudo mkdir -m 755/var/www/html/nominatim

sudo?chmod?777/var/www/html/nominatim-R

Populate the website directory with the necessary symlinks:

/home/zhanggeoo7/Nominatim-2.5.1/utils/setup.php --create-website /var/www/html/nominatim

You will need to make sure settings/local.php is configured with correct values forCONST_Website_BaseURL. see above.

10.13 配置apache環境

打開/etc/apache2/sites-enabled/000-default.conf,在最后添加如下內容:

Options FollowSymLinks MultiViews

AddType text/html .php

重啟apache

service apache2 restart

10.14 增加test對數據庫nominatim的權限

su – postgres

psql template1

GRANT ALL PRIVILEGES ON DATABASE nominatim to test

\q

10.15 運行nominatim

瀏覽器登陸http://localhost/nominatim/

看www-data用戶有沒有數據庫讀寫權限,若沒有,則打開/etc/apache2/envvars,修改

export APACHE_RUN_USER=test

export APACHE_RUN_GROUP=test

如果想要局域網都可以訪問

local.php為


//?Paths

@define('CONST_Postgresql_Version',?'9.5');

@define('CONST_Postgis_Version',?'2.3');

//?Website?settings

@define('CONST_Website_BaseURL',?'http://172.16.0.14/nominatim/');

?>

修改后重啟Apache

service apache2 restart

使用參數說明:http://wiki.openstreetmap.org/wiki/Nominatim#Reverse_Geocoding_.2F_Address_lookup

在線服務:http://nominatim.openstreetmap.org/

demo測試html ?見有道筆記分享鏈接

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容