ubuntu16.04下的OpenStreetMap离线地理编码服务器的搭建(Nominatim)

OpenSteetMap官网 http://www.openstreetmap.org/#map=2/39.8/129.0

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-mysql

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.2postgresql-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文件,否则修改之后没有权限,不能保存。

在打开的.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 //注意最前面是“.”

make //最后三句话用于编译nominatim,此步骤若出现错误,根据错误提示重新安装错误软件,根据步骤2重新安装之后再尝试此步骤,直到没有报错为止。lua libraries的报错和警告不用管,nominatim不需要它。



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/nominatim

sudochmod777/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配置在更改后需要重启

4) 增加test对数据库nominatim的权限

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) 局域网设置

按如下内容修改local.php

<?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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


文章浏览阅读2.3k次,点赞4次,收藏22次。最近安装了CARLA预编译版,总体过程感觉还是挺简单的,但是由于在网上找的参考资料并没有和自己遇到的情况完全一样的,所以把自己的安装过程记录下来,方便和自己一样的后来人进行安装,同时也自己作个记录留作备忘。其实预编译版的CARLA本身几乎不用什么命令行进行安装,主要步骤只有解压缩和拷贝文件,和极少的命令行安装操作。但是相关依赖以及其它的CARLA所使用的一些工具需要一起安装好,下面一起来看看安装步骤吧。_ubuntu22.04安装carla
文章浏览阅读6.3k次,点赞5次,收藏15次。在清华镜像中下载Ubuntu 20 安装包_ubuntu20下载
文章浏览阅读5k次。linux环境, python3.7.问题描述: 安装rally, pip3 install -r requirements.txt 时提示如下: 说明openssl 已安装。解决:1. pip3 install --upgrade pip , 结果输出如下 ..._error: command '/usr/bin/gcc' failed with exit code 1
文章浏览阅读1.1k次。自己刚踩坑装好的W11 WSL2 miniconda_wsl2 cuda
文章浏览阅读4.2k次,点赞4次,收藏17次。要安装这个 standalone的,会有一点区别(不识别 下面的 -localhost no)上面的命令会在~/.vnc/目录下生成一个 passwd文件。具体端口号,可以查看vncserver -list返回结果中的RFB PROT。作用是vncserver启动的时候运行这些命令,把桌面程序启动起来。如果希望用某个用户比如 demo登录,就用su切换到这个用户。桌面版默认就已安装,服务器版需要手动安装,并启动。关闭某个会话可以用下面的命令。远程地址输入ip:port。查看全部的vnc会话。_ubuntu vncserver
文章浏览阅读894次,点赞51次,收藏31次。在安卓使用vscode主要是连接一个远程的code-server服务,code-server服务安装在什么系统,调用的就是什么系统的环境,如这里使用ubuntu进行安装code-server,那使用的就是ubuntu环境,如需要go,python,java开发,需要在Ubuntu安装相关环境,创建的文件夹和项目也是在Ubuntu里面.这种方式其实在访问vscode的时候利于可以随时随地进行连接使用,且不受设备影响。
安装Ubuntu上超好用的终端Terminator。通过添加软件源、更新源、安装Terminator等步骤完成。
文章浏览阅读1.1k次,点赞83次,收藏74次。不要嫌弃Ubuntu的单调的终端界面啦,快来试试这些有意思的命令_ubuntu系统有趣的玩法
文章浏览阅读2.5k次。在ubuntu系统中,swap空间就是虚拟内存,所以考虑在磁盘空间富余的目录下设置虚拟内存swap文件,用来缓解内存不足的问题。通过上面的信息可以看到,/dev/vda2 目录下还剩余45G,那么就可以把swap文件生成在/dev/vda2目录下。在系统监控中发现,当数据库服务程序启动后,占用了大量内存空间,导致系统的剩余的内存往往只有几十MB。# bs 为块的大小,count 创建多少个块。# 执行命令后,删除创建的swap目录即可。#把生成的文件转换成 Swap 文件。2、创建一个swap文件。_ubuntu20修改swap大小
文章浏览阅读2.9k次,点赞2次,收藏10次。记录RV1126的SDK编译错误,以及解决处理_command exited with non-zero status 1
文章浏览阅读1.1w次,点赞22次,收藏101次。【记录】ubuntu20.04安装nvidia显卡驱动_ubuntu20.04安装nvidia显卡驱动
文章浏览阅读727次,点赞6次,收藏27次。在嵌入式Linux开发过程中,可能遇到uboot无法通过nfs服务从Ubuntu下载系统镜像(TTTTTT)的问题。如果你使用的是较新版本的Ubuntu,那么其**默认内核将不支持nfs2**!而**uboot仅支持到nfs2**,因此我们需要修改系统内核以及nfs配置文件,开启nfs2服务。**此问题非常棘手**,因为问题出现的时间太近,并且使用的人少。由于是2023年后才出现的问题,**chatgpt也无法解答**!本文参考网络上多篇博客资料,是解决此问题的最新办法。
ubuntu系统下安装软件的方法有多种,包括使用apt工具、deb软件包安装、源码编译安装以及通过软件中心安装。还有一种以 .run 后缀的软件包也可以在ubuntu系统下安装。具体的安装方法可以通过百度搜索来获取。
文章浏览阅读814次。本篇目的:Xubuntu如何安装pkg-configpkg-config是一个计算机软件包,用于帮助开发人员查找、定位和使用依赖库。它通常用于构建软件时,开发人员需要指定程序所依赖的外部库的位置和版本信息。使用pkg-config,开发人员可以很容易地查找、检索和导出这些依赖库的信息,从而简化了软件的构建过程。_ubuntu中怎么下载pkg-config
文章浏览阅读2k次。ubuntu创建共享文件夹_ubuntu20.04共享文件夹
文章浏览阅读2.9k次,点赞74次,收藏73次。对于有长期远程桌面需求的用户,建议将cpolar套餐升级到专业套餐,支持配置固定的公网TCP端口,且带宽也会相应的增大,支持更高效便捷的远程桌面连接Ubuntu系统。【cpolar内网穿透支持http/https/tcp协议,支持永久免费使用,不限制流量,无需公网IP,也不用进入路由器设置,操作简单。隧道创建成功后,点击左侧仪表盘的状态——在线隧道列表,查看xrdp隧道的所生成的公网TCP端口地址,复制下来。,使用cpolar内网穿透映射3389端口,生成公网TCP端口地址,实现在公网环境下,_ubuntu 局域网桌面
文章浏览阅读3.2k次。而在linux的ubuntu版本中,又多出两类用户:安装ubuntu系统的源用户xxx,其与root具有相同权限,仅在执行命令时,前面加sudo。在ubuntu中,用命令deluser username可以直接删除用户账号及家目录,而用centos7中的命令userdel -r username才能达到同样目的。在ubuntu中,没有moduser命令,centos7中的usermod修改用户信息的命令,同样可以用在ubuntu中。在系统中,创建新的用户或称为账号,一般需要多步操作。_ubuntu创建一个新用户
文章浏览阅读1.6w次,点赞4次,收藏23次。系统的许多日志文件都存储在 /var/log 目录中。你可以使用 ls /var/log 命令来列出可用的日志文件。/var/log/Xorg.0.log:包含 X 服务器的日志信息(图形界面)。打开DASH,搜索日志或者log,打开app,这个是/var/log的界面版。这将显示系统日志的末尾,并提供有关系统崩溃和错误的信息。/var/log/kern.log:包含内核日志信息。/var/log/dmesg:包含开机时的日志信息。/var/log/syslog:包含系统日志信息。_ubuntu查看系统日志
文章浏览阅读857次。首先将source.list复制为source.list.bak备份,然后将source.list内容改为需要的镜像源列表即可。Ubuntu采用apt作为软件安装工具,其镜像源列表记录在/etc/apt/source.list文件中。本节均为 Ubuntu 20.04 的镜像源列表。若为其他版本,将所有focal更改为其他版本代号即可。_apt 国内源