标签: osmosis

Postgres 9.6升级后极慢的查询执行速度

Postgres从9.5升级到9.6与查询Osmosis(用于处理OpenStreetMap数据的命令行Java应用程序)相关的处理时间非常慢.特别是将本地osm数据库与主osm repo同步(Postgis 2.3 from 2.2).同步过去每天都发生,平均花费大约500秒.升级后,48小时后仍然没有结束.我注意到与之前相比,对象处理时间非常慢(低于零)(下面的日志记录).我很确定问题出在Postgres更新上.无法弄清楚要解决的问题.pg_stat_activity提供以下查询(当前):

UPDATE ways w 
SET linestring = ( 
    SELECT ST_MakeLine(c.geom) AS way_line 
    FROM ( 
        SELECT n.geom AS geom 
        FROM nodes n 
        INNER JOIN way_nodes wn ON n.id = wn.node_id 
        WHERE (wn.way_id = w.id) 
        ORDER BY wn.sequence_id ) c ) 
WHERE w.id IN ( 
    SELECT w.id 
    FROM ways w 
    INNER JOIN way_nodes wn ON w.id = wn.way_id 
    WHERE wn.node_id = $1 
    GROUP BY w.id ) 
Run Code Online (Sandbox Code Playgroud)

更新后的日志记录:

Oct 31, 2017 12:23:59 PM org.openstreetmap.osmosis.core.Osmosis run
INFO: Osmosis Version 0.45 …
Run Code Online (Sandbox Code Playgroud)

postgresql postgis openstreetmap osmosis

5
推荐指数
1
解决办法
1077
查看次数

将 OpenStreetMap-Data (OSM-File) 导入 MySQL-Database / SQL-File

介绍

我下载并解压了 OpenStreetMap 源文件(见这里)。我现在有一个 400GB 的 XML 源文件,我想 (1) 将数据插入 MySQL 表(2) 将其导出到 SQL 文件,这无关紧要。

我已经做过/尝试过的

  1. 我有 XML 文件^^ 和 MySQL 服务器 (5.6.14)
  2. 我找到了Osmosis工具来转换 OSM 数据并安装它
  3. 我读了这篇文章:在没有 api 的情况下将城市和街道读入数据库
  4. 我还阅读了这篇文章:此配置是否能够导入完整的 osm Planet 文件?(这是。)
  5. 我试图用渗透插入数据,但它在几秒钟后抛出一个错误,或者几个小时什么都不做,没有插入一行。我也不明白这应该如何工作,因为我在 MySQL 中没有 OSM 表结构。

问题

通常是否可以在数据库/SQL 文件中导入整个文件,如果是,如何导入?我在哪里可以找到表/数据库结构?有没有人已经尝试过?

非常感谢!

xml mysql openstreetmap osmosis

5
推荐指数
1
解决办法
1万
查看次数

如何使用 osmfilter 过滤掉所有设施以及它们拥有的任何其他标签信息?

我设法从 OSM 下载了一个行星文件,并使用 osmconvert 将其转换为 o5m 格式,并从中删除了所有作者信息,以保持文件较小。我试图从全世界的这个数据库中获取每个 POI,所以我对城市、城镇、高速公路、道路等不感兴趣,只对便利设施感兴趣。

首先,我尝试通过使用 osmosis 来实现这一点,它似乎设法做我想做的事,只是它总是内存不足,导致文件太大而无法处理。(我可以将文件拆分成更小的文件,但如果可能的话,我想避免这种情况)。

我尝试使用 osmfilter 进行试验,在那里,我设法过滤掉了每个包含名为 amenity 的标签的节点,但是我有几个无法解决的问题:

一种。如果我使用以下命令:

osmfilter planet.o5m -v --keep-tags="amenity=" -o=amenities.osm
Run Code Online (Sandbox Code Playgroud)

它保留所有节点,并过滤掉名称中没有舒适性的每个标签。

湾 如果我使用这个命令:

osmfilter planet.o5m -v --keep-tags="all amenity=" -o=amenities.osm
Run Code Online (Sandbox Code Playgroud)

它现在过滤掉所有没有便利性标签的节点,但也过滤掉匹配节点中的所有附加标签,其中包含我需要的信息(例如,兴趣点的名称或描述)

C。如果我使用这个命令:

osmfilter planet.o5m -v --keep-tags="all amenity= all name=" -o=amenities.osm
Run Code Online (Sandbox Code Playgroud)

过滤掉标签中包含名称或便利设施的每个节点,这给我留下了几个命名的城市或高速公路(我不需要的数据)。

我也尝试用 AND 运算符将其分开,但它说,在过滤标签时我不能使用 AND 运算符。知道我怎么能达到预期的结果吗?

尾注:我运行的是 Windows 7 系统,所以没有基于 Linux 的程序可以帮助我:|

openstreetmap osmosis

2
推荐指数
1
解决办法
4688
查看次数

建设开放式街道路由机(osrm)

我正在openstreetmap上做一个项目,因此为了实现路由机制,我试图实现osrm引用1,但是当我试用时mkdir -p build; cd build; cmake ..,我得到一个错误说:

"CMake错误:源目录"/ home/user1"似乎不包含CMakeLists.txt".

我该怎么做才能解决这个问题!

routing openstreetmap ubuntu-12.04 osmosis osrm

-2
推荐指数
1
解决办法
399
查看次数