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

Да. Чтобы валидатор показывал ошибку типа 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

Понял, странные они, ну да ладно, воспользуйтесь тогда опцией osmconvert

--modify-tags=<tag_modification_list>

и добавьте на границы place.

Это конфиг cfg/preload-areas.yml


- condition:
    - place = *
  action:
    - action:       load_cityside_area


Это я пробовал, оказывает влияние только на адресацию.

Спасибо, обязательно попробую.

Т.е. поставив там вместо place какой-нибудь admin_level я получу искомое?
Спасибо. Стало ясно куда идти.

del

Лёша, а вот такой вопрос - а в конфиге можно ввести условие по коду страны например, и в зависимости менять - condition?
Что-то типа:

 if country = LT|PL
          then 
             - condition:
             - admin_level = 8
          else
             - condition:
             - place = *

          action:
          - action:       load_cityside_area

Чтобы не плодить кучу конфигов, ибо товарищи в европах совсем совесть потеряли, то у них город это AL=8, то AL=7, то AL=6…

Нет, такого не предусмотрено.