gis - Osmosis - 从 OSM 数据中删除业务以供地理编码使用

标签 gis geocoding openstreetmap nominatim osmosis

我正在尝试设置 Nominatim 数据库以进行地址地理编码。数据库将由 komoot 的 Photon 使用,但我想这不是那么重要的信息。

问题是我的 osm xml/pbf 文件不仅包含地址,还包含我试图删除的所有其他内容,例如酒吧、各种办公室等。

这个想法是采用这样的方法,直到获得所需的结果集:

osmosis  --read-xml us-northeast-latest.osm.bz2 \
    --tf reject-nodes landuse=* \
    --tf reject-nodes amenity=* \
    --tf reject-nodes office=*  \
    --tf reject-nodes shop=* \
    --tf reject-nodes place=house  \
    --write-xml output.osm

但是,导入结果文件后,我仍然在搜索结果中得到这些节点(应该被排除):

{
    properties: {
        osm_key: "office",
        osm_value: "ngo",
        extent: [
            -73.9494926,
            40.6998938,
            -73.9482012,
            40.6994192
        ],
        street: "Flushing Avenue",
        name: "Public Lab NYC",
        state: "New York",
        osm_id: 250328718,
        osm_type: "W",
        housenumber: "630",
        postcode: "11206",
        city: "New York City",
        country: "United States of America"
    },
    type: "Feature",
    geometry: {
        type: "Point",
        coordinates: [
            -73.9490215989286,
            40.699639649999995
        ]
    }
}

记下 osm_key 和值。

我不确定我在这里做错了什么。任何帮助将不胜感激。

最佳答案

我认为您对 OSM 的 elements 不够熟悉和 tags还没有。

删除包含特定标签节点(或方式关系)绝对不是您想要的。相反,您想要删除特定的标签或仅保留特定的标签并删除其他所有内容 - 而不是删除完整的对象。

为了理解这两者之间的区别,您必须知道 addresses in OSM以两种不同的方式建模。它们要么由单独的地址节点建模,要么附加到现有的功能,例如建筑物、商店、餐厅等。第二种方法是此处的重要部分,您的方法将删除所有这些地址。

因此,即使元素“只是”一家商店或一家餐馆,您也希望保留这些元素,因为它们仍然可以包含地址。但是您可以自由地删除这些元素中的所有非地址标记,以及删除根本不包含任何地址标记的所有元素。这应该可以通过渗透实现,但是我对渗透还不够熟悉,无法为您提供所需的参数。

但是我不确定这是否真的是一个好主意,因为多个对象可以共享相同的名称。想象一条河流、一座山峰、一个小村庄和一个大村庄都同名。如果您决定删除区分河流与山峰、小村庄与大村庄所需的所有附加标签,那么在尝试决定从搜索结果列表中选择哪个名称时,您将会遇到麻烦。

关于gis - Osmosis - 从 OSM 数据中删除业务以供地理编码使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30479090/

相关文章:

mysql - 检查 mysql 中格式正确和/或有效的几何图形

r - 如何反转 R Tmap 中发散的调色板?

google-maps - 用于地理编码的 map API key 不起作用

numpy - 二维网格中 scipy 标记区域周围的轮廓

google-maps - 谷歌地理编码 API 不如使用地址的谷歌地图准确

geocoding - 有人知道进行离线反向地理编码的好方法吗?

ios - 使用Mapkit框架加载openstreetmap

file - GTFS 有哪些问题?

android - 无法解析符号 'BoundingBoxE6'

python - 将包含 GEOMETRY 列的表加载到 Pandas DataFrame