Осмос - удаление бизнеса из данных OSM для использования геокодирования

Я пытаюсь настроить базу данных Nominatim для геокодирования адресов. База данных будет использоваться 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 и значение.

Я не уверен, что я делаю не так здесь. Любая помощь будет оценена.

1 ответ

Я не думаю, что вы достаточно знакомы с элементами и тегами OSM.

Удаление узлов (или путей или отношений), которые содержат определенные теги, определенно не то, что вы хотите. Вместо этого вы хотите либо удалить определенные теги, либо оставить только определенные теги и удалить все остальное - вместо того, чтобы удалять полные объекты.

Чтобы понять разницу между этими двумя, вы должны знать, что адреса в OSM моделируются двумя различными способами. Либо они смоделированы отдельным адресным узлом, либо они прикреплены к уже существующей функции, такой как здание, магазин, ресторан и т. Д. Второй способ - это важная часть, где ваш подход отбрасывает все эти адреса.

Поэтому вы хотите сохранить элементы, даже если они "просто" магазин или ресторан, потому что они все еще могут содержать адрес. Но вы можете удалить все неадресные теги из этих элементов и все элементы, которые вообще не содержат адресных тегов. Это должно быть возможно при осмосе, однако я недостаточно знаком с осмосом, чтобы предоставить вам необходимые параметры.

Тем не менее, я не уверен, что это действительно хорошая идея, потому что несколько объектов могут иметь одно и то же имя. Представьте себе реку, горную вершину, маленькую деревню и большую деревню под одним и тем же названием. Если вы решите отбросить все дополнительные теги, необходимые для различения реки от вершины и маленькой деревни от большой, тогда у вас возникнут проблемы при попытке решить, какое имя выбрать из списка результатов поиска.

Другие вопросы по тегам