Nominatim/Installation

2023-11-14

原文地址:http://wiki.openstreetmap.org/wiki/Nominatim/Installation
本文介绍的是针对Nominatim 2.5.x版本的安装方法。
软件下载地址:http://www.nominatim.org/release/Nominatim-2.5.1.tar.bz2
本文介绍的是针对Nominatim 2.5.x版本的安装方法。
软件下载地址:http://www.nominatim.org/release/Nominatim-2.5.1.tar.bz2

预装软件:
GCC compiler http://gcc.gnu.org/
PostgreSQL http://www.postgresql.org/ (9.0 or later)
Proj4 http://trac.osgeo.org/proj/
GEOS http://trac.osgeo.org/geos/
PostGIS http://postgis.refractions.net/ (1.5 or later)
PHP5 http://php.net/ (both apache and command line)
PHP-pgsql
PEAR::DB http://pear.php.net/package/DB
wget
boost http://www.boost.org (1.48 or later)
osmosis http://wiki.openstreetmap.org/wiki/Osmosis

Ubuntu/Debian系统安装

在标准的Debian/Ubuntu发行版系统中,所有的依赖软件都有安装包.

##Ubuntu / Debian 7下系统安装依赖软件:

sudo apt-get install build-essential libxml2-dev libpq-dev libbz2-dev libtool automake libproj-dev libboost-dev libboost-system-dev libboost-filesystem-dev libboost-thread-dev libexpat-dev gcc proj-bin libgeos-c1 libgeos+±dev libexpat-dev php5 php-pear php5-pgsql php5-json php-db libapache2-mod-php5 postgresql postgis postgresql-contrib postgresql-9.3-postgis-2.1 postgresql-server-dev-9.3 wget

##Debian 8下系统安装依赖软件:

sudo apt-get install build-essential libxml2-dev libpq-dev libbz2-dev libtool automake libproj-dev libboost-dev libboost-system-dev libboost-filesystem-dev libboost-thread-dev libexpat-dev gcc proj-bin libgeos-c1 libgeos+±dev libexpat-dev php5 php-pear php5-pgsql php5-json php-db libapache2-mod-php5 postgresql postgis postgresql-contrib postgresql-9.4-postgis-2.1 postgresql-server-dev-9.4 wget

注意:只能安装php5,php7无法正常使用.

可能每个人电脑上的postgres软件版本会有所不同,根据需求选择合适的安装包即可.

##CentOS下系统安装依赖软件:

按照Nominatim / Installation / CentOS提供的详细步骤在CentOS安装。

PostgreSQL优化
您可能需要调整PostgreSQL配置,以便后面的步骤可以充分利用您的硬件。您应该在postgresql.conf文件中调整以下参数。

Ubuntu位置:/etc/postgresql/9.x/main/postgresql.conf
CentOS位置:/var/lib/pgsql/data/postgresql.conf

shared_buffers(2GB)
maintenance_work_mem(10GB)
work_mem(50MB)
effective_cache_size(24GB)
synchronous_commit = off
checkpoint_segments = 100(仅适用于PostgreSQL <= 9.4)
checkpoint_timeout = 10min
checkpoint_completion_target = 0.9

在一些括号中的参数值为32GB,对于机器似乎工作性能更佳。调整到您认为合适的设置。

对于初次导入,您还应该设置:

fsync = off
full_page_writes =off

不要忘记在初次导入后重新启用它们,否则可能会导致数据库损坏。

不能关闭自动清理,因为它确保自动分析表格。

###硬件
至少需要2GB的RAM,否则安装将失败。对于导入整个地球地图数据,建议使用的内存容量不少于32GB。

对于整个地球离线地图数据的导入,您将需要大约800GB的硬盘空间(截至2016年1月,考虑到OSM数据库正在快速增长)。 SSD磁盘将大大有助于加快导入和查询速度。

pummelzacken机器上,实现全球地图数据的导入需要大约2天。在具有32GB内存和标准SATA磁盘的12核机器上,初始导入(osm2pgsql)大约需要20个小时,而索引处理又需要250个小时。只有8个并行线程用于此设置,因为I / O速度是限制因素。同样的一台机器能够在大约4个小时内导入德国地图。

###第一次安装
以正常(非root)用户身份运行安装步骤非常重要。即使在大量数据库数据处理的情况下,我们也需要创建一个普通的用户,并使用它。这里列出的PostgreSQL命令将不起作用。

###下载Nominatim
下载最新的稳定版本并解压缩它:

wget http://www.nominatim.org/release/Nominatim-2.5.1.tar.bz2
tar xvf Nominatim-2.5.1.tar.bz2

###编制Nominatim
编译源代码,运行

cd Nominatim-2.5.1
./configure

关于丢失lua库文件的警告可以忽略。 Nominatim不使用osm2pgsql的lua扩展。

###定制安装
您可以通过创建本地配置文件settings/local.php来自定义Nominatim。看看settings/settings.php中的可用配置设置。

这是一个local.php的例子:

<?PHP
//Paths
@define('CONST_Postgresql_Version','9.3');
@define('CONST_Postgis_Version','2.1');

// Website settings
@define('CONST_Website_BaseURL','http://mysite/nominatim/');

网站设置应该适应您的主机。如果您计划导入大型数据集(例如欧洲,北美,地球),则还应启用节点位置的平面节点存储。这将节点坐标保存在一个简单的文件而不是数据库中,并保存在导入时间和磁盘存储上,添加到你的设置/local.php:

@define('CONST_Osm2pgsql_Flatnode_File','/path/to/flatnode.file');

##下载(可选)地图数据
###维基百科排名
维基百科可以作为一个可选的辅助数据源来帮助指出osm功能的重要性。 Nominatim将在没有这些信息的情况下工作,但是如果安装了这些信息,将会提高结果运行效率。这些数据是以二进制下载形式提供的。

wget --output-document = data / wikipedia_article.sql.bin http://www.nominatim.org/data/wikipedia_article.sql.bin
wget --output-document = data / wikipedia_redirect.sql.bin http://www.nominatim.org/data/wikipedia_redirect.sql.bin

结合2个文件大约1.5GB,并增加约30GB到nominatim的安装大小。他们也增加了一个小时左右的安装时间。

###UK 邮政编码
Nominatim可以使用来自外部来源的邮编来改善涉及英国邮政编码的搜索。这些数据可以选择性地下载:

wget --output-document = data / gb_postcode_data.sql.gz http://www.nominatim.org/data/gb_postcode_data.sql.gz

##创建postgres帐户
###创建导入数据账户
导入需要使用与导入帐户同名的postgres超级用户来完成。您可以运行以下命令来创建这样一个postgres超级用户帐户:

sudo -u postgres createuser -s <您的用户名>
其中<您的用户名>是将用于执行安装的帐户的名称。您应该确保该用户可以不需要密码就登录到数据库(例如使用ident身份验证)。这是大多数发行版的默认设置。请参阅信任认证以获取更多信息.

注意:您不得以用户www-data或root身份运行导入。

###创建网站用户
创建网站用户www-data作为PostgreSQL数据库角色
createuser -SDR www-data
对于安装过程,您必须拥有此用户。如果您想在其他用户下运行该网站,请参阅安装Nominatim安装内容.
###Nominatim模块读取权限
一些Nominatim Postgres函数是在nominatim.so C模块中实现的,这个模块是在之前的一个步骤中编译的。为了成功创建这些函数,PostgreSQL服务器进程必须能够读取模块文件。确保目录和文件权限允许读取文件。例如,如果您在主目录中下载并编译了Nominatim,则需要执行以下命令:

chmod +x 〜/src
chmod +x 〜/src/Nominatim
chmod +x 〜/src/Nominatim/module

导入和索引OSM数据
首先从Geofabrik下载一个planet文件或一个planet扩展文件。建议使用PBF格式的文件。

导入可能需要很长时间,所以您可能希望在屏幕会话中进行导入。现在开始导入:

./utils/setup.php --osm-file <你的星球文件> --all [--osm2pgsql-cache 18000] 2>&1 | tee setup.log

–osm2pgsql-cache参数是可选的,但强烈推荐用于planet文件的导入。它为osm2pgsql导入部分设置节点缓存大小(请参阅osm2pgsql帮助中的-C参数)。 建议使用不少于24GB的RAM空间的电脑进行数据的导入。适应你的可用内存,以避免交换。

一个小国的planet文件将需要一个小时的时间导入,整个地球的数据导入则需要十天的时间。它产生了很多日志消息,你应该仔细检查。该命令的最后一部分确保所有输出都被记录到一个文件中。请求支持安装时,请确保准备好此日志文件。

我们建议运行一个小一点的osm / pdf文件(例如卢森堡)的导入,然后再尝试进行全面的星球导入,以确认一切正常。

如果出现问题,则可能需要通过删除数据库来进行清理,因为在尝试重新创建现有数据库时脚本将失败。使用这个命令来做到这一点:sudo -u postgres dropdb nominatim

###添加特殊的短语
将国家代码和国家/地区名称添加到搜索索引中:

./utils/specialphrases.php --countries> data / specialphrases_countries.sql
psql -d nominatim -f data / specialphrases_countries.sql

如果你想能够搜索像都柏林酒吧的特殊设施,你需要从这个维基导入特殊的短语,如下所示:

./utils/specialphrases.php --wiki-import> data / specialphrases.sql
psql -d nominatim -f data / specialphrases.sql

当wiki有变化时,可能会不时重复。每次更新后都不需要重复。

如果您不需要所有语言的短语,请编辑settings / phrase_settings.php并在文件的开头删除不需要的语言。

##建立网站
以下说明将使http://localhost/nominatim
为网站创建目录,并确保它可以被安装用户写入,并且可以被Apache读取:

sudo mkdir -m 755 <Apache文件根目录> / nominatim
sudo chown <您的用户名> <Apache文档根目录> / nominatim

使用必要的符号链接填充网站目录:
./utils/setup.php --create-website <Apache文档根目录> / nominatim
你需要确保CONST_Website_BaseURL的settings / local.php配置了正确的值。往上看。

###配置使用Apache
确保您的Apache配置包含以下目录的设置:

<Directory "/var/www/nominatim/">
    Options FollowSymLinks MultiViews
    AddType text/html   .php     
</Directory>

/var/www/nominatim /应该被替换为你在上面设置Nominatim网站的目录.remove

在修改apache配置之后,您需要重新启动apache。

##配置使用Nginx
安装nginx和php-fpm作为服务器端,HTML嵌入式脚本语言(FPM-CGI二进制),作为守护程序运行并接收从nginx传递的快速/ CGI请求。

Ubuntu# apt-get install nginx php5-fpm
CentOS# yum install nginx php-fpm

如果你想更改守护进程来监听unix套接字,而不是配置池侦听器(在标准的Ubuntu / Debian安装中的/etc/php5/fpm/pool.d/www.conf)

;注释掉tcp监听器并添加unix套接字
;listen = 127.0.0.1:9000
listen = /var/run/php5-fpm.sock
:确保守护程序以正确的用户身份运行
listen.owner = www-data
listen.group = www-data
listen.mode = 0666

通过将位置定义添加到默认配置,告诉nginx php文件是特殊的,并将fastcgi_pass传递到php-fpm unix套接字。(标准Ubuntu/Debian安装中的/etc/nginx/sites-available/default)

location ~ [^/]\.php(/|$) {
    fastcgi_split_path_info ^(.+?\.php)(/.*)$;
    if (!-f $document_root$fastcgi_script_name) {
        return 404;
    }
    fastcgi_pass unix:/var/run/php5-fpm.sock;
    fastcgi_index index.php;
    include fastcgi_params;
}

注意:如果您使用的是Debian 8.1 / Jesse或更新版本,则必须更改include fastcgi_params;在上面的配置代码中包含fastcgi.conf;请参考[1]了解更多细节。

重新启动nginx和php5-fpm服务,并使用您最喜爱的浏览器查看您的家庭Nominatim索引OpenStreetMap。

#更新
有很多不同的可能性来更新您的Nominatim数据库。以下部分介绍如何使渗透保持最新状态。有关其他方法的列表,请参阅./utils/update.php --help的输出。

##安装最新版本的渗透
###获取最新版本的渗透

然后通过将以下行添加到您的settings / local.php来告诉Nominatim使用此版本:

@define('CONST_Osmosis_Binary','/ usr / local / bin / osmosis');
设置更新过程
接下来更新需要被初始化。默认情况下,nominatim被配置为使用全局微小差异进行更新。

如果你想要一个不同的更新源,你将需要添加一些设置settings/local.php。例如,要使用日常国家/地区从geofabrik中为爱尔兰提取差异,请添加以下内容:

 @define('CONST_Replication_Url','http://download.geofabrik.de/europe/ireland-and-northern-ireland-updates');
 @define('CONST_Replication_MaxInterval','40000'); //分别处理每个更新,渗透不能合并多个更新
 @define('CONST_Replication_Update_Interval','86400'); //上游发布差异的频率
 @define('CONST_Replication_Recheck_Interval','900'); //如果没有发现更新,需要多长时间睡觉

首先,您必须删除现有的“configuration.txt”,然后运行以下命令来创建osmosis配置文件:

./utils/setup.php --osmosis-init
###启用分层更新
在数据库中更新地点时,需要更新地址中包含此地点的所有地点。这些分层更新在默认情况下是禁用的,因为它们减慢了初始导入。使用以下命令启用它们:

./utils/setup.php --create-functions --enable-diff-updates
###更新Nominatim
以下命令将保持您的数据库不断更新:

./utils/update.php --import-osmosis-all --no-npi
如果您导入了多个国家/地区摘录并希望保持最新状态,请查看此问题的脚本。

##安装美国房屋标记数据
在美国,Nominatim的OSM实例使用TIGER地址数据来补充仍然稀疏的OSM门牌号码数据。您可以通过以下步骤将TIGER数据添加到您自己的Nominatim实例中:

###安装GDAL库和python绑定

Ubuntu:apt-get install python-gdal
CentOS:yum install gdal-python

获取TIGER 2015年的数据。您将需要EDGES文件(3,234个zip文件,总共11GB)

 wget -r ftp://mirror1.shellbot.com/census/geo/tiger/TIGER2015/EDGES/
 (1gb/s preferred mirror) [MIRROR HOSTED BY SHELLBOT, LTD](https://www.shellbot.com/).

或者:

wget -r ftp://ftp2.census.gov/geo/tiger/TIGER2015/EDGES/
 (500kb/s original source) [HOSTED BY THE US CENSUS BUREAU](https://www.census.gov/)

将数据转换成SQL语句(存储在data/tiger中):
./utils/imports.php --parse-tiger <虎头数据目录>
将数据导入您的Nominatim数据库:
./utils/setup.php --import-tiger-data
警告:数据的导入可能需要很长时间,特别是如果你正在导入所有的美国地图数据。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Nominatim/Installation 的相关文章

  • 为什么C++内置类型的局部变量不能默认初始化

    C 有个人所共知的特性 就是它的内置类型是无法在局部区域内默认初始化的 如下所示 int k int main int m cout lt
  • 对象中BigDecimal值转换为JSON中精度丢失(出错)的问题解决方法

    代码如下 1 定义一个包含BigDecimal类型的类 Data public class User private String name private BigDecimal salary 2 分别使用两种方法将对象转换为字符串 pub
  • Linux安装python3

    一 卸载python命令 rpm qa grep python xargs rpm ev allmatches nodeps 强制删除已安装程序及其关联 whereis python xargs rm frv 删除所有残余文件 xargs
  • Opencv寻找轮廓的最小外接矩形,并获取矩形的中心点,旋转角度

    本代码可用于获取物体的坐标偏移量 旋转角度 if thresholdValue Mat src Mat imHeight imWidth CV 8U pImageBuffer Mat mat src copyTo mat threshold
  • springboot 普通类自动注入mapper

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 解决方法 解决方法 普通类使用 Component注解修饰 添加本类型静态属性 所需mapper属性 添加init方法 用 PostConstruct注解修饰 方法
  • vue +element实现图片上传加展示

    一 声明变量 我们在这里声明了两个qrcodeaddress 分别是绑定表单的字段和作为展示图片的字段 二 编写html部分 在这里img标签是我们上传之后 展示的地方 action是上传路径 on success是上传成功后的方法 三编写
  • Vue之路由

    Vue之路由 今天来看看vue怎么实现路由功能 我们在vue cil脚手架搭建好的基础上来实现路由功能 如果搭建完初始化项目时没有路由功能则需在npm安装路由 命令 npm install vue router 然后在main js中引用路
  • 【Python】os.path.exists()的含义 及文件存在但os.path.exists()返回False的原因

    os path exists 函数的功能是查看给定的文件 目录是否存在 存在返回True 不存在返回False 如果给定的文件只有文件名 会在当前文件的目录下索引 给定的文件 目录可以是绝对索引 文件存在但os path exists 返回
  • Nacos 注册中心的设计原理:让你的应用轻松实现高效注册与发现!

    当应用开始脱离单机运行和访问时 服务发现就诞生了 目前的网络架构是每个主机都有 个独立的 IP 地址 服务发现基本都是通过某种方式获取到服务所部署的 IP 地址 DNS 协议是最早将 个网络名称翻译为网络 IP 的协议 在最初的架构选型中
  • cenos自动启动tomcat

    首先创建一个脚本 关闭tomcat 等待2分钟 启动tomcat 并且把日志输出在 usr local tomcat tomcatchognqi log bin bash export JAVA HOME usr local jdk jdk
  • 创建Unity项目

    1 点击 新项目 2 根据实际所需选择对应模板 3 等待创建项目完成 4 点击项目即会在新窗口打开项目
  • 如何自动更新-CMD

    不打算讲得很细 我本人能看懂就行 现在客户端自动更新 一般要用到更新程序 这样就是两个项目 两个exe了 所以对我这来说比较反感 所以就选择了另外一种方法 cmd 由于是自动更新客户端 且是内置的 所以要关闭自身 但是cmd在process
  • VScode远程服务器docker环境

    经常会遇到需要对docker容器中的代码调试的问题 远程使用IDE是很好的选择 具体操作 1 在VScode中下载Remote SSH 2 创建一个ssh连接服务器 3 启动一个docker并注明服务器端口与docker端口的映射关系 Ti
  • 使用 RestSharp访问接口返回 空 数据原因(ssl加密)解决方法

    例子 var client new RestClient https wwwcie ups com rest Track var request new RestRequest Method POST request AddHeader p
  • QT中实现应用程序的单例化

    一介绍 通过编写一个QSingleApplication类 来实现Qt程序的单例化 原文的作者是在Windows Vista Qt4 4 下实现的 不过应用在其他平台上是没问题的 本文是我在http www qtcentre org wik

随机推荐

  • 女程序员的转型

    女 30 做了开发6年 各种语言都多少有点用 但以前都是野路子开发 两个人 一个人做pc端 一个人做web端 或者一个人做app 一个人做web 没有ui 没有前段 所有的人都是你 虽然之前也算是项目经理 但没有一个规范的流程 甚至连流程图
  • OpenCV中imread/imwrite与imdecode/imencode的异同

    OpenCV中的cv imdecode函数是从指定的内存缓存中读一幅图像 而cv imencode是将一幅图像写进内存缓存中 cv imread是从指定文件载入一幅图像 cv imwrite是保存一幅图像到指定的文件中 cv imread和
  • 如何阅读大型程序

    近期想读下程序 但发现非常难 比如一个网络程序模块 有6个cpp源程序 共5916行源代码 不包括头文件中引用的别的地方的代码 1 我对业务还算熟悉 但是看到那么多变量定义时还是感到理解起来很吃力 因为有些变量根本就是过程变量 2 函数层层
  • rust安装link.exe报错

    rust安装link exe报错 今天安装rust完成之后 直接cargo new一个hello world程序 等到cargo run代码的时候发现报错 linking with link exe failed exit code 113
  • PLC-串口通信实例

    随着微电子及控制技术的不断发展 PLC已逐渐成为一种智能型 综合型控制器 由PLC构成的集散控制是现代工业控制的一个重要组成部分 PLC具有使用简单方便 故障率低 抗干扰能力强等优点 但同时 数据的计算处理与管理能力较弱 且无法提供良好的人
  • 使用清华镜像编译aosp

    基础环境编译 与上一篇mac 编译 aosp 一样 http blog csdn net karts article details 54971227 只是 可以在 https mirrors tuna tsinghua edu cn he
  • 【第三阶段 day24】Axios的补充 IDEA自动注入mapper异常说明 Ajax的简化操作

    文章目录 1 Axios的补充 1 1 Axios Post请求 1 2 控制层 2 IDEA自动注入mapper异常说明 3 Ajax的简化操作 3 1 简化axios请求的前缀 3 2 关于promise对象的说明 3 3 Ajax 回
  • 让我们彻底了解Maven(二)--- Maven私服的搭建

    首先我们为什么需要搭建Maven私服 一切技术来源于解决需求 因为我们在实际开发中 当我们研发出来一个公共组件 为了能让别的业务开发组用上 则搭建一个远程仓库很有必要 写完公用组件后 直接发布到远程仓库 别人需要用到时 直接从远程仓库拉取即
  • 共享单车项目数据可视化+需求策略分析

    一 项目背景 自行车共享系统是一种租赁自行车的方式 其中获得会员资格 租赁和归还自行车的过程是通过遍布城市的站点网络自动完成的 使用这些系统 人们可以从一个地方租用自行车 并根据需要将其归还到另一个地方 共享单车是近年来流行起来的新兴产业
  • MOS管参数每一个参数详解-收藏版

    MOS管参数 在使用MOS管设计开关电源或者马达驱动的时候 一般都要考虑MOS的导通电阻 最大电压等 最大电流等因素 MOSFET是电压型驱动器材 驱动的进程即是栅极电压的建立进程 这是经过对栅源及栅漏之间的电容充电来完成的 下面将有此方面
  • PCB铜箔厚度单位盎司(OZ)的具体信息

    盎司 OZ 本身是一个重量单位 盎司和克 g 的换算公式为 1OZ 28 35g 在PCB行业中 1OZ意思是重量1OZ的铜均匀平铺在1平方英尺 FT2 的面积上所达到的厚度 它是用单位面积的重量来表示铜箔的平均厚度 用公式来表示即 1OZ
  • Java基础篇——面向对象编程

    活动地址 CSDN21天学习挑战赛 学习的最大理由是想摆脱平庸 早一天就多一份人生的精彩 迟一天就多一天平庸的困扰 各位小伙伴 如果您 想系统 深入学习某技术知识点 一个人摸索学习很难坚持 想组团高效学习 想写博客但无从下手 急需写作干货注
  • npm 切换源_nrm:npm包管理工具

    一 简介 nrm npm registry manager 是npm的镜像源管理工具 可以方便的更换npm的包源 可解决问题 1 更换国内镜像包源 如淘宝npm镜像 解决国内npm国外包慢的问题 2 更换某些内网独立包源 实现安装内网独立的
  • 「技术综述」人脸妆造迁移核心技术总结

    2020 07 10 12 02 36 美颜和美妆是人脸中很常见的技术 在网络直播以及平常的社交生活中都有很多应用场景 常见的如磨皮 美白 塑形等美颜技术我们已经比较熟悉了 而本文重点介绍的是人脸妆造迁移的核心技术及其相关资源 作者 编辑
  • Spring框架详解(二)

    一 IOC基本原理 1 什么是IOC容器 容器 容器是一种为特定组件的运行提供必要支持的一个软件环境 例如Tomcat就是一个Servlet容器 它可以为Servlet的运行提供运行环境 类似Docker这样的软件也是一个容器 它提供了必要
  • 由于找不到msvcp120.dll无法执行此代码的解决方法

    电脑系统中的msvcp120 dll文件如果丢失或者损坏 那么会有很多游戏跟软件就会出现无法打开运行的情况 msvcp120 dll是Windows系统动态连接组件中非常重要的文件 小编今天就把修复教程分享给大家 修复方法如下 首先是打开电
  • gradle 查看依赖类库版本_如何查找第三方库(Gradle引用)的依赖?

    答 三种方法查找 1 执行 Gradle Task androidDependencies 可以直接执行 gradle androidDependencies 执行结果将在控制台直接输出 可以在控制台直接查看 但是如果依赖很多的时候 控制无
  • BeanUtils.copyProperties()和JSONObject.parseObject()分别是哪种拷贝类型(浅拷贝 or 深拷贝)

    目录 一 结论 二 证明BeanUtils copyProperties 是浅拷贝 三 证明JSONObject parseObject 是深拷贝 四 总结 一 结论 BeanUtils copyProperties 浅拷贝 JSONObj
  • Python爬虫之Js逆向案例(17)- Scrapy JD版店铺详情|问答

    本案例是案例 16 的Scrapy版本 一次运行程序 同时获取内容 获取商店详情 商品问题 商品答案 效果如下图 一 Scrapy框架从安装到运行的过程 1 安装scrapy框架 控制台输入 pip3 install scrapy 2 验证
  • Nominatim/Installation

    原文地址 http wiki openstreetmap org wiki Nominatim Installation 本文介绍的是针对Nominatim 2 5 x版本的安装方法 软件下载地址 http www nominatim or