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

Ну это, если конвертер новый и нету --target-lang=ru и --default_lang=ru.

liosha
Не подскажешь почему этажность не проставляется ?

settings-navitel.yml

################################
##  Field presets
################################

--- presets
---
contacts:
    Phone: %phone
    WebPage: %website
    Email: %email
    Fax: %fax

building:
    Label: %house
    Floors: !!perl/code |-
      {
        my $tags = shift()->{tag};
        my $levels = extract_number($tags->{'building:levels'});
        return $levels  if $levels;
        $levels = int(extract_number($tags->{'building:height'} || $tags->{'height'} || 0) / 3);
        return $levels || undef;
      }

ways-areas-navitel.yml (переделал)

- condition:
    - or:
        - amenity = dormitory
        - building = apartments|detached|dormitory|house|residential|terrace
        - building:use = residential
  action:
    - action: write_polygon
      type: 0x6c
      Label: %house
      building: yes
    - action: address_poi

Спасибо!

Вместо этого нужно presets: [ building ]
И Label: можно убрать

Кто может обновить страничку в wiki? Сейчас по той инструкции конвертер даже нельзя запустить, а по форуму неудобно все выискивать :slight_smile:

Обычно всё заканчивается вот так :smiley:

liosha, пара вопросов по новому стилю конфигурации.

  1. Атрибуты MP (типа Label) теперь обязательно должны быть в секции extra_fields?
  2. Какой способ должен давать выигрыш по скорости конвертации - shop=* плюс selector по тегу shop или же перечисление shop по отдельности?

1 - пока поддерживаются оба варианта, но желательно в extra_fields
2 - селектор должен быть сильно быстрее

Еще немножко вопросов (они же хотелки):

  1. Возможны ли последовательные селекторы? Что-то типа:
- condition:
    - building = *
  action:
    - action: write_polygon
      type:
        selector: tag
        tag: 'building:use'
        residential: 0x6c
        selector: tag
        tag: shop
        mall: 0x6e
        selector: tag
        tag: building
        house: 0x6c
        residential: 0x6c
        industrial: 0x6f
        _default: 0x13
      presets: [ building ]
    - action: address_poi
  1. Если какой-то тег не встречается селектору и нет селектора _default, на выход выдается примитив с типом 0x0. Возможно ли совсем пропускать значения, отсутствующие в селекторе, ничего не выдавая на выход?

Такие - нет, но можно сделать каскад:


        selector: tag
        tag: 'building:use'
        residential: 0x6c
        _else:
          selector: tag
          tag: shop
          ...

Сейчас нет, надо будет придумать.

Не хочет :frowning:
Конструкция с _else не работает (тип результирующих полигонов в mp не определен):

- condition:
    - building = *
    - building != no
  action:
    - action: write_polygon
      type:
        selector: tag
        tag: 'building:use'
        residential: 0x6c
        _else:
          selector: tag
          tag: building
          house: 0x6c
          _default: 0x13
      presets: [ building ]
    - action: address_poi

Конструкция с _empty работает, но в ней, как я понимаю, срабатывает самое внешнее условие умолчания, чего не всегда достаточно:

- condition:
    - building = *
    - building != no
  action:
    - action: write_polygon
      type:
        selector: tag
        tag: 'building:use'
        residential: 0x6c
        _empty:
          selector: tag
          tag: building
          house: 0x6c
          _default: 0x13
        _default: 0x13
      presets: [ building ]
    - action: address_poi

Т.е. _else не включает в себя _empty?

Препутал, имелся в виду _empty/_default, разумеется

на первой странице ссылка дана http://wiki.openstreetmap.org/wiki/RU:Osm2mp
Там похоже информация устарела. В разделе “Установка программы в среде Windows” первые два пункта…

Да, давно устарела. Но исправить никто не хочет :smiley:

А где взять актуальное описание, как настроить и запустить эти скрипты?
Почему бы не положить какой-нибудь readme там же на SVN, рядом со скриптами?

evp
Чтобы положить readme - его для начала нужно написать, о чем liosha и говорит выше :slight_smile:

А ещё было бы неплохо выложить туда же и все пакеты, которых нет в свежем Перле, но которые нужны конвертеру.

Это бессмысленно, потому что а) перловые модули по-разному опакечиваются для разных систем, и б) устанавливаются простыми командами из онлайн-репозиториев.

Ну я и говорю: в базовом виде это описание очевидно (чекаут кода, установка модулей, запуск), а в расширенном - никто не хочет писать это описание :slight_smile:

При установке в списке пакетов нет Config::Std, чем его заменить можно?

Заменить нельзя. Качайте отдельно и ставьте вручную.

А лучше поставить 5.14-й перл, у него проблем с пакетами меньше