4

我正在尝试为地址地理编码设置 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 和 value。

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

4

1 回答 1

4

我认为您对 OSM 的元素标签还不够熟悉。

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

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

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

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

于 2015-05-27T13:37:41.023 回答