Конвертер OSM -> MP

Спасибо, попробую.

Вот сделал так:

- condition:
    - building = *
    - addr:street != *
  action:
    - action: write_polygon
      type: 0x13
      presets: [ building ]
      level_h: 1
#    - action: address_poi

- condition:
    - building = *
    - addr:street = *
  action:
    - action: write_polygon
      type: 0x13
      presets: [ building ]
      level_h: 1
    - action: address_poi

один хрен, если в осм у домика нет addr:street, то osm2mp в StreetDesc лепит название города.
Кто может помочь?

presets: [ building ] тоже надо отключить

UPD
Сорри, наврал.
Действительно, при наличии addr:housenumber адрес всегда вычисляется.
Тогда да, конфигами такое не получится

Хм… Если это тот preset для зданий, что в setting-mp.yml, то там только Label, и Floors… не считая ситигидовых фиговин.
Ладно, попробую без presets.

И что тогда делать?

И еще один вопрос:
Если у домика есть набор из addr:housenumber, addr:street и addr:suburb, то в .mp у этого домика StreetDesc получается как “addr:street (addr:suburb)”. В результате валидатор заносит этот домик в ошибки “улица не найдена”.
Это можно вылечить?

Я не совсем понимаю, чего хочется в результате получить.
Как-то отдельно выделить домики без addr:street?

А что тут не так? Зачем лечить?

Да. Чтобы валидатор показывал ошибку типа 2 “улица не задана”. http://peirce.gis-lab.info/qa/RU-MOS/addr/2

Сейчас получается такая вот фигня:
Домик http://www.openstreetmap.org/way/230836833#map=19/50.64864/136.92987&layers=D
В .mp у него получается так:
Валидатор ругается, что такой улицы нет поблизости.
Нужно убрать добавление suburb.

Конвертим под валидатор?

Можно, например, добвавить в mp дополнительный ключ


- condition:
    - building = *
  action:
    - action: write_polygon
      type: 0x13
      presets: [ building ]
      level_h: 1
      extra_fields:
        HouseWithoutAddrStreet:
          selector: if
          condition: addr:street != *
          then: Yes
          else: No

А suburb в данном случае надо убирать с объекта: он не является частью адреса

Ну почему? Ведь добавление названия города в адрес при отсутствии улицы - неправильное поведение конвертора.

А можно ли все-таки сделать так, чтобы suburb не прилеплялся к улице? Или это тоже захаркодено?

Это правильное поведение.
Адрес типа “Уездный район, деревня Гадюкино, дом 18Б” - вполне годный и часто встречающийся.
Но потребители mp-формата требуют StreetDesc, поэтому приходится там дублировать “деревня Гадюкино”.

Можно вообще убрать suburb в cfg/addressing.yml

ОК, Спасибо, Лёша.
Я еще покопаюсь в конфигах, может чего и получится.

Лёша, а как бы допилить конвертер в шейпы. Ведь совсем чуток осталось ;).

А вот еще спрошу: а как osm2mp определяет condition: inside_city?
По каким критериям?

Судя по всему, по попаданию внутрь полигона населенного пункта.

А если у населенного пункта нет полигона? А есть только релейшн с admin_level, boundary=administrative, type=boundary.
Где-то в конфигах можно задать что считать полигоном НП для inside_city?

type=boundary никакого отношения к населённым пунктам не имеет.

Ну это смотря что за страна.

Вы это литовцам расскажите :slight_smile: Я тут попытался наделать мультиполигонов с place и name, получил откат с комментарием Incorrect and duplicate info. В дальнейшей беседе мне была выдана следующая инфа:

Вопрос остается в силе - Где-то в конфигах можно задать что считать полигоном НП для inside_city?
Иначе ограничения скорости расставляются не правильно.

в addressing.yml есть

- level: city
  tags: [ city, town, hamlet ]
  area_condition: place = city|town|village|hamlet|allotments|isolated_dwelling

там же есть вариант для региона

- level: region
  tags: [ region, state ]
  area_condition:
      and:
        - type = multipolygon|boundary
        - boundary = administrative
        - admin_level = 4

вроде больше нигде не встречается

попробовать добавить по

  • admin_level = 8