Nominnatim 网页 http://www.nominatim.org/ 这里面包含使用、安装、数据等的网址。
Nominatim的介绍:http://wiki.openstreetmap.org/wiki/Zh-hans:Nominatim
Nominatim的安装:http://wiki.openstreetmap.org/wiki/Nominatim/Installation 这个比较不好懂。
部分国家和地区数据的下载:http://download.geofabrik.de/asia.html 本文使用.osm.pbf 格式,这也是最佳格式。
Ubuntu16.04下载https://www.ubuntu.com/download/desktop 下载时付钱的选项全部都设为0,就是免费版了。这是标准版。最好不要用优麒麟(Ubuntu Kylin)
由于在上面网址中已经介绍了需要的软件、环境等,下面就直接开始讲安装步骤,其中命令语句全部为紫色字体,需要添加或修改的文本文件内容为绿色。
注意命令语句之间的空格。
安装过程中会遇到 “您希望继续执行吗?[Y/n] ”,此处选择y,然后继续安装。
1.数据准备
从http://download.geofabrik.de/asia.html中下载需要的国家地区数据(.osm.pbf)
从 http://www.nominatim.org/release/Nominatim-2.5.1.tar.bz2中下载Nominatim
2.预装软件
sudoapt-getinstallbuild-essentialwget
sudoapt-getinstalllibxml2-devwget
sudoapt-getinstalllibpq-devwget
sudoapt-getupdate
sudoapt-getinstalllibbz2-devwget
sudoapt-getinstalllibtoolwget
sudoapt-getinstallautomakewget
sudoapt-getinstalllibproj-devwget
sudoapt-getinstalllibboost-devwget
sudoapt-getinstalllibboost-system-devwget
sudoapt-getinstalllibboost-filesystem-devwget
sudoapt-getinstalllibboost-thread-devwget
sudoapt-getinstalllibexpat-devwget
sudoapt-getinstallgccwget
sudoapt-getinstallproj-binwget
sudoapt-getinstalllibgeos-c1v5wget
sudoapt-getinstalllibgeos++-devwget
(以上共17个)
ubuntu上默认只能安装PHP7,而nominatim需要安装PHP5,所以安装破坏PHP5时需要执行多步命令。
sudoadd-apt-repositoryppa:ondrej/PHP
sudoaptupdate
sudoaptinstallPHP5.6
sudoaptinstalllibapache2-mod-PHP5.6
sudoaptinstallPHP5.6-curl
sudoaptinstallPHP5.6-gd
sudoaptinstallPHP5.6-mbstring
sudoaptinstallPHP5.6-mcrypt
sudoaptinstallPHP5.6-xml
sudoaptinstallPHP5.6-xmlrpc
sudoa2dismodPHP7.0 // 系统上如有PHP7.0,则此命令卸载7.0版本
sudoa2enmodPHP5.6
sudosystemctlrestartapache2
(以上共13个)
sudoapt-getinstallPHP-pearwget
sudoapt-getinstallPHP5.6-pgsqlwget
sudoapt-getinstallPHP5.6-jsonwget
sudoapt-getinstallPHP-dbwget
sudoapt-getinstallosmosiswget
sudoapt-getinstallpostgresql-9.5wget
sudoapt-getinstallpostgis
sudoapt-getinstallpostgresql-contrib-9.5wget
sudoapt-getinstallpostgresql-server-dev-9.5wget
sudo apt-cachesearch postgres // 获取插件列表查看postgis版本
sudoapt-getinstallpostgresql-9.5-postgis-2.2
(备注:postgresql- 9.5插件为postgis-2.2,postgresql-9.6插件为postgis-2.3。)
(以上共 11 个)
安装pbf支持软件:
sudoapt-getinstalllibprotobuf-c0-dev
sudoapt-getinstallprotobuf-c-compiler
安装postgre可视化窗口pgadmin3:
wget --quiet -O -
https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
//不要落下最后的横线,前面那个是大写字母O,而非数字0
sudo apt-get update
sudo apt-getinstall postgresql-client-9.5
sudo apt-get installpgadmin3
pgadmin3 //打开pgadmin3,以确认是否正确安装。直接关闭窗口则终端也退出。
3.配置postgresql
1) 设置postgres用户,用postgres用户登录并修改密码。
sudo -u postgres psql postgres
\password postgres
\q
pgadmin3 //以下图片中的密码即为上一张图片中设置的密码
2) 配置postgresql
sudo gedit /etc/postgresql/9.5/main/postgresql.conf //注意gedit后有空格。必须使用命令打开.conf文件,否则修改之后没有权限,不能保存。
fsync = off 173 行
full_page_writes =off 183 行
synchronous_commit= off 174 行
shared_buffers (2GB)113 行
maintenance_work_mem (10GB)123 行
work_mem (50MB)122 行
effective_cache_size (24GB)289 行
checkpoint_segments = 100 (only for Postgresql <= 9.4)
(安装的9.5版本的无此项,无须修改)
checkpoint_timeout = 10min196 行
checkpoint_completion_target = 0.9 199行
4.编译并配置Nominatim
1) 下载Nominatim
网址为 http://www.nominatim.org/release/Nominatim-2.5.1.tar.bz2 ,并提取(解压)到某一目录中(本文存放在“下载”目录中),可以使用以下命令方式,也可以直接在网页中下载然后右键解压(提取),如果在数据准备中已经下载,此处就直接解压(提取)
wget http://www.nominatim.org/release/Nominatim-2.5.1.tar.bz2 //下载Nominatim
tar xvf /home/some/下载/Nominatim-2.5.1.tar.bz2 //此后的 “/home/some/下载/” 是本文相关文件的放置地址,右键nominatim文件查看其属性中的路径。
cd /home/some/下载/Nominatim-2.5.1 //注意cd后有空格
./configure //注意最前面是“.”
2) 设置nominatim的网络位置
在Nominatim目录中的settings目录里新建local.PHP文件,告知nominatim它在网络服务器上的位置,新建文档内容如下:
<?PHP
// Paths
@define('CONST_Postgresql_Version','9.5');
@define('CONST_Postgis_Version','2.2');
//Websitesettings
@define('CONST_Website_BaseURL','http://localhost/nominatim/');
3) 创建导入账户
导入需要使用与执行导入的帐户同名的postgres超级用户来完成,通过运行以下命令来创建这样的postgres超级用户帐户:
sudo -u postgres createuser -s test //创建名为test用户(自己设定用户名),这里test用于登录postgres数据库,需要输入系统密码
sudoaddusertest //这里test同上面创建的用户,用于登录ubuntu系统的,此处设置密码为123456,一些内容自己随意填写
4) 新建网站用户
su test //密码:123456
createuser -SDRwww-data //创建后记得要打开看一下是否成功
5) 更改nominatim的读取权限
exit //退出some,而进入主系统
chmod +x /home/some/下载 //x后面有一个空格)
chmod +x /home/some/下载/Nominatim-2.5.1
chmod +x /home/some/下载/Nominatim-2.5.1/module
5.导入数据
1) 导入osm国家地区数据
osmosis--read-pbffile="/home/some/下载/areaA.osm.pbf"--read-pbffile="/home/some/下载/areaB.osm.pbf"--merge--write-pbffile="/home/some/下载/areaA-areaB.osm.pbf" //合并多个国家地区的数据,如果只有一个国家数据则跳过这一步。areaA-areaB.osm.pbf中的areaA-areaB是自己命名。
su test
下载/Nominatim-2.5.1/utils/setup.PHP--osm-file 下载/areaA-areaB.osm.pbf--all //向数据库中导入数据。此语句不能复制粘贴,只能手动输入!
如果导入过程中出现问题,可能需要通过删除数据库进行清理,因为在尝试重新创建现有数据库时脚本将失败。使用以下命令来执行此操作:
sudo -u postgresdropdb nominatim
2) 添加额外字段
下载/Nominatim-2.5.1/utils/specialphrases.PHP--countries > 下载/Nominatim-2.5.1/data/specialphrases_countries.sql
su test
psql -d nominatim -f 下载/Nominatim-2.5.1/data/specialphrases_countries.sql //此三句是在搜索索引中添加国家/地区代码和国家/地区
exit
下载/Nominatim-2.5.1/utils/specialphrases.PHP --wiki-import > 下载/Nominatim-2.5.1/data/specialphrases.sql
su test
psql -d nominatim -f 下载/Nominatim-2.5.1/data/specialphrases.sql //搜索具体或特殊设施时需要导入特殊的短语
exit
6.建立网站
1) 创建网站的目录,并确保它是可写的安装用户和可读:
sudo mkdir -m 755/var/www/html/nominatimsudochmod777/var/www/html/nominatim //注意数字之后都有一个空格
2) 使用必要的符号链接填充网站目录:
下载/Nominatim-2.5.1/utils/setup.PHP --create-website /var/www/html/nominatim
需要确保settings/local.php配置了正确的值CONST_Website_BaseURL
3) 配置apache环境
sudo gedit /etc/apache2/sites-enabled/000-default.conf //打开.conf。用命令打开才有权限保存修改后的内容
<Directory"/var/www/nominatim/">
Options FollowSymLinks MultiViews
AddType text/html .PHP
</Directory>
service apache2restart // apache配置在更改后需要重启
su test
psql template1
GRANT ALL PRIVILEGES ON DATABASE nominatim to test // 此处 test 是创建的库,注意按自己的名称\q
exit
5)运行nominatim
浏览器登陆http://localhost/nominatim/ 注意,不论是否联网,可以查到的名称地点应该全都属于你所导入的地区。当联网时会出现具体的地图,当不联网时只能看到轮廓。
打开数据库查看www-data用户有没有数据库读写权限,若没有则执行以下命令:
sudo gedit /etc/apache2/envvars
exportAPACHE_RUN_USER=test
exportAPACHE_RUN_GROUP=test
6) 局域网设置
<?PHP
//Paths
@define('CONST_Postgresql_Version','9.5');
@define('CONST_Postgis_Version','2.2');
//Websitesettings
@define('CONST_Website_BaseURL','http://000.000.000.000/nominatim/');
以上000.000.000.000为电脑IP
修改后重启Apache
service apache2 restart