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  见有道笔记分享链接

你可能感兴趣的:(ubuntu16.4 基于OpenStreetMap地图搭建离线地理编码服务Nominatim)