Nominatim欧洲地图索引/导入

时间:2015-10-19 11:19:34

标签: postgresql nominatim

我在我的本地centOS 6.6机器上安装了nominatim,遵循wiki.guide http://wiki.openstreetmap.org/wiki/Nominatim/Installation 我按照说明进行操作,我设法导入一个小地图(monaco-latest.osm.pbf),一切都很顺利。现在我尝试导入欧洲地图(15.8 gb),我按照相同的步骤,启动命令

 ./utils/setup.php --osm-file european.latest.osm.pbf --all --osm2pgsql-cache 2048 2>&1 | tee setup.log

5天前,如果我启动命令 ps -aux |更多我看到nominatim / postgres进程的以下输出:

500      25306  0.0  0.0 230024   528 ?        S    Oct14   0:00 /usr/bin/php -C
q ./utils/setup.php --osm-file /srv/mappe/europe-latest.osm.pbf --all --osm2pgsq l-cache 2048
postgres 25310  0.0  0.0 509284  2792 ?        Ss   Oct14   0:00 postgres: mapserver nominatim [local] idle
500      25336  2.6 51.3 3908808 2015768 ?     R    Oct14 182:24 /srv/Nominatim-2.3.1/osm2pgsql/osm2pgsql -lsc -O gazetteer --hstore -C 2048 -P 5432 -d nominatim /srv/mappe/europe-latest.osm.pbf
postgres 25338  0.7  3.6 352208 142580 ?       Ss   Oct14  49:17 postgres: mapserver nominatim [local] COPY
postgres 25339 39.3  3.5 325964 141056 ?       Rs   Oct14 2726:28 postgres: mapserver nominatim [local] idle in transaction
postgres 25340  0.2  3.5 326520 141116 ?       Ss   Oct14  16:17 postgres: mapserver nominatim [local] COPY
postgres 25341  0.0  0.0 325808  3156 ?        Ss   Oct14   0:00 postgres: mapserver nominatim [local] COPY

如果,我启动命令:

psql -d postgres -c "select * from pg_stat_activity where datname = 'nominatim'"

我看到了一些日志,但是,如果我写下面的代码,那会让我很担心:

su - postgres
\connect nominatim
\dt

我只看到9张桌子......

我该怎么办?这个过程还在运行?被困了??

我正在尝试使用centOS 6.7和250gb磁盘空间4gb ram的机器安装欧洲地图

请帮帮我。 非常感谢

嗨Artur非常感谢您的回复。 现在,阅读你的帖子我很确定这个过程很忙,因为setup.log从4天开始就是一样的.. 一个重要的问题:即使我的机器RAM是4GB,我可以将osm2pgsql -cache设置为18000吗?我已经读过缓存应该是机器RAM的一半,比如果我有4GB的RAM缓存应该是2048.它是否正确? 比现在我试图在另一台机器上安装地图,500 gb HD和16GB RAM(是一个centos 6.6虚拟机)。 当我启动地图导入时,我将标准输出和错误重定向到两个不同的文件: 在setup.log中我可以看到一些create table和一些insert(文件大约是100行),在文件的底部我看到了IMPORT 比我读错误.log文件,我看到这样的输出:

NOTICE:  table "place" does not exist, skipping
NOTICE:  type "keyvalue" does not exist, skipping
NOTICE:  type "wordscore" does not exist, skipping
NOTICE:  type "stringlanguagetype" does not exist, skipping
NOTICE:  type "keyvaluetype" does not exist, skipping
NOTICE:  function get_connected_ways(pg_catalog.int4[]) does not exist, skipping
Allocating memory for dense node cache
Allocating dense node cache in one big chunk
Allocating memory for sparse node cache
Sharing dense sparse Node-cache: cache=2048MB, maxblocks=262144*8192, allocation method=11 Mid: pgsql, scale=10000000 cache=2048
Setting up table: planet_osm_nodes
NOTICE:  table "planet_osm_nodes" does not exist, skipping
Setting up table: planet_osm_ways
NOTICE:  table "planet_osm_ways" does not exist, skipping
Setting up table: planet_osm_rels
NOTICE:  table "planet_osm_rels" does not exist, skipping
Reading in file: /srv/mappe/europe-latest.osm.pbf
Processing: Node(10k 10.0k/s) Way(0k 0.00k/s) Relation(0 0.00/s)
Processing: Node(20k 20.0k/s) Way(0k 0.00k/s) Relation(0 0.00/s)
...

等等..是我第三次尝试安装这个该死的地图,这是该过程第三次停止:

Processing: Node(1561860k 141.1k/s) Way(6002k 0.04k/s) Relation(0 0.00/s)

正是在这一点上,该过程停止了,两次我看到类似于'gazzetter error exectuing external command'的错误,另一次没有出现错误,并且该过程刚刚停止。 为什么这个场景?为什么这个过程在那时完全停止了? 请帮我搜索很多,但我什么都没发现。 谢谢

1 个答案:

答案 0 :(得分:1)

如果 setup.log 的内容类似于:

,则应检查 setup.log
In [25]: df1.equals(df3.reset_index(drop=True))
Out[25]: True

这意味着,导入任务在17491秒内处理了930027个元素,每秒产生约53.171745个对象,因此估计时间为1053255秒。

你有30个等级,据我记得第26和第30是最大的。

如果您想加快速度,可以尝试使用Nominatim installation guide PG Tuning section中写的PG性能设置。

我看到你给 osm2pgsql 进程的缓存非常低。尝试使用 Done 930027 in 17491 @ 53.171745 per second - Rank 30 ETA (seconds): 1053255.375000

您还可以通过添加18000选项来并行化此操作。其中 n 是线程数量。默认值为 CPU数量 - 1

如果每个思维工作正常但速度很慢,那么你可能会遇到瓶颈(磁盘IO操作,内存不足或者CPU可能会变慢)。

我最后一次进口欧洲在i7 / 32GB RAM / 7200 HDD上花了大约10天,所以不要指望它能立即发挥作用。