如何将多个osm文件加载到Nominatim中

时间:2014-04-09 11:06:35

标签: openstreetmap nominatim osmosis

我需要弄清楚将多个OSM文件加载到Nominatim数据库的过程。我有一切设置,可以加载一个没有问题的文件。

基本上,我尝试做的只是为世界的一部分加载一些GeoFabrik OSM文件。所以我像北美和南美的OSM文件一样抓住了。或者他们网站上的任何2个。

对于第一次加载,我使用setup.php

./utils/setup.php --osm-file file.osm --all --osm2pgsql-cache 4000

我不确定我是否有另一个文件(file2.osm)如何将其加载到数据库并保留原始数据。

基本上,我只想要世界各地,我只需要每六个月左右加载一次数据。我不需要每日更新/等等......

我需要拆分文件,因为加载时间太长,我想更好地管理它。

我可以使用update.php .....但不确定参数是什么。

我考虑过使用update和no-index子句加载所有数据......然后可能构建索引??

我确实尝试为第二个文件重新运行setup.php,但它只挂了很长时间 对于第二个文件

./utils/setup.php --import-data --osm-file file2.osm --osm2pgsql-cache 4000

但这只是挂在Setting up table: planet_osm_ways上。 (我测试了非常小的OSM文件,应该在几分钟内完成,但它只是挂起)。

我使用的文件都是非交叉的,因此不是真正的更新。所以我有一个北美和南美......我如何分别加载到Nominatim。

由于

2 个答案:

答案 0 :(得分:2)

答案可以在help.openstreetmap.org找到。

首先,您需要通过更新脚本导入它:./utils/update.php --import-file <yourfile>。然后,您需要触发数据的重新索引:./utils/update.php --index

但根据lonvia(Nominatim开发人员之一),这将非常缓慢,如果先将所有文件合并,然后将其作为一个大文件导入,则会更好。

答案 1 :(得分:2)

示例合并代码,合并安道尔,马耳他和列支敦士登,

curl -L 'http://download.geofabrik.de/europe/andorra-latest.osm.pbf' --create-dirs -o /srv/nominatim/src/andorra.osm.pbf
curl -L 'http://download.geofabrik.de/europe/malta-latest.osm.pbf' --create-dirs -o /srv/nominatim/src/malta.osm.pbf
curl -L 'http://download.geofabrik.de/europe/liechtenstein-latest.osm.pbf' --create-dirs -o /srv/nominatim/src/liechtenstein.osm.pbf

osmconvert /srv/nominatim/src/andorra.osm.pbf -o=/srv/nominatim/src/andorra.o5m
osmconvert /srv/nominatim/src/malta.osm.pbf -o=/srv/nominatim/src/malta.o5m
osmconvert /srv/nominatim/src/liechtenstein.osm.pbf -o=/srv/nominatim/src/liechtenstein.o5m

osmconvert /srv/nominatim/src/andorra.o5m /srv/nominatim/src/malta.o5m /srv/nominatim/src/liechtenstein.o5m -o=/srv/nominatim/src/data.o5m

osmconvert /srv/nominatim/src/data.o5m -o=/srv/nominatim/src/data.osm.pbf;

有关OsmConvert的更多信息 - &gt; https://wiki.openstreetmap.org/wiki/Osmconvert

合并后,您可以

sudo -u nominatim /srv/Nominatim/build/utils/setup.php \
      --osm-file /srv/nominatim/src/data.osm.pbf \
      --all \
      --threads ${BUILD_THREADS} \ # 16 Threads?
      --osm2pgsql-cache ${OSM2PGSQL_CACHE}  # 24000 ?