Если хочется обработку значений типа ??:rural, то можно добавить ветку
else:
selector: if
condition: maxspeed = .*rural
then:
selector: tag
tag: maxspeed
'DE:rural': 50
...
_default: 60
Если хочется обработку значений типа ??:rural, то можно добавить ветку
else:
selector: if
condition: maxspeed = .*rural
then:
selector: tag
tag: maxspeed
'DE:rural': 50
...
_default: 60
Ещё раз о проблеме определения скорости:
http://www.openstreetmap.org/way/136321999 - за пределами НП и дополнительно maxspeed=RU:rural
Но нет, получаем 60 кмч…
Добавил:
LegalSpeed:
selector: if
condition: maxspeed = \d.*
then: %maxspeed
else:
selector: if
condition: highway = motorway
then: 110
else:
selector: if
condition:
or:
- highway = living_street
- living_street = yes
then: 20
else:
selector: if
condition: inside_city
then: 60
else:
selector: if
condition: maxspeed = .*rural
then:
selector: tag
tag: maxspeed
'RU:rural': 90
_default: 90
else: 90
Всё равно 60 кмч…
Подумал может приоритет первой записи. Изменил (отсортировал, переместил) последовательность else: в LegalSpeed:
Хоть застрели - 60 кмч. Зато http://www.openstreetmap.org/way/181735226 - получила скорость в 80 кмч?!
80 кмч нигде никоим образом не упоминал. Что откуда берется, ума не приложу.
В примере inside_city проверяется раньше, чем maxspeed = .*rural
Надо поменять местами
Я ещё раз попробую, может пальцы дрогнули, но предыдущий такой эксперимент закончился на - 80 кмч.
Существуют ли жесткие требования (ограничения) по синтаксису:
Да, требования к отступам жёсткие, это же yaml.
Then и else одного условия должны быть на одном уровне
Уже получилось. Прикручиваю RU:urban - на тесте.
Спасибо!
У меня так получилось:
LegalSpeed:
selector: if
condition: maxspeed = \d.*
then: %maxspeed
else:
selector: if
condition: highway = motorway
then: 110
else:
selector: if
condition:
or:
- highway = living_street
- living_street = yes
then: 20
else:
selector: if
condition: maxspeed = .*motorway
then:
selector: tag
tag: maxspeed
'RU:motorway': 110
_default: 110
else:
selector: if
condition: maxspeed = .*rural
then:
selector: tag
tag: maxspeed
'RU:rural': 90
_default: 90
else:
selector: if
condition: maxspeed = .*urban
then:
selector: tag
tag: maxspeed
'RU:urban': 60
_default: 60
else:
selector: if
condition: inside_city
then: 60
else: 90
Или так:
LegalSpeed:
selector: if
condition: maxspeed = \d.*
then: %maxspeed
else:
selector: if
condition: highway = motorway
then: 110
else:
selector: if
condition:
or:
- highway = living_street
- living_street = yes
then: 20
else:
selector: if
condition: maxspeed = RU.*
then:
selector: tag
tag: maxspeed
'RU:motorway': 110
'RU:rural': 90
'RU:urban': 60
_default: 90
else:
selector: if
condition: inside_city
then: 60
else: 90
Во втором случае LegalSpeed не проставляется если maxspeed не указан.
Надо бы еще service добавить, чтоб быстро не гоняли
LegalSpeed:
selector: if
condition: maxspeed = \d.*
then: %maxspeed
else:
selector: if
condition: highway = motorway
then: 110
else:
selector: if
condition: maxspeed = .*rural
then:
selector: tag
tag: maxspeed
‘RU:rural’: 90
_default: 90
else:
selector: if
condition:
or:
- highway = living_street|service
- living_street = yes
then: 20
else:
selector: if
condition: inside_city
then: 60
else:
selector: if
condition: maxspeed = .*urban
then:
selector: tag
tag: maxspeed
‘RU:urban’: 60
_default: 60
else: 90
Конвертирую Узбекистан в MP используя osm2mp 1.03
данные беру с GisLab
GPSMapEdit в MP файле (после работы постпроцессора)
22 марта - находил 242 дубликата
1-го апреля - 5962 дубликата
куда копать?
PS
нашел причину, неправильно корректировал файл настроек конвертера.
Вот что я теперь использую для rural (и иже с ними) тэгов:
LegalSpeed:
selector: if
condition: maxspeed = \d.*
then: %maxspeed
else:
selector: if
condition: maxspeed = .*motorway
then:
selector: tag
tag: maxspeed
'CZ:motorway': 130
'IT:motorway': 130
'RO:motorway': 130
'GB:motorway': 110
'DE:motorway': 110
'RU:motorway': 110
'UK:motorway': 110
_default: 110
else:
selector: if
condition: maxspeed = .*motorroad
then:
selector: tag
tag: maxspeed
'CZ:motorroad': 110
else:
selector: if
condition: maxspeed = .*rural
then:
selector: tag
tag: maxspeed
'CZ:rural': 90
'DE:rural': 100
'FR:rural': 90
'IT:rural': 90
'NO:rural': 80
'ON:rural': 80
'RO:rural': 90
'RU:rural': 90
_default: 60
else:
selector: if
condition: maxspeed = .*express
then:
selector: tag
tag: maxspeed
'JP:express': 100
_default: 60
else:
selector: if
condition: maxspeed = .*trunk
then:
selector: tag
tag: maxspeed
'RO:trunk': 100
_default: 60
else:
selector: if
condition: maxspeed = .*nsl
then:
selector: tag
tag: maxspeed
'JP:nsl': 60
_default: 60
else:
selector: if
condition: maxspeed = .*nsl_dual
then:
selector: tag
tag: maxspeed
'GB:nsl_dual': 110
'UK:nsl_dual': 110
_default: 60
else:
selector: if
condition: maxspeed = .*nsl_single
then:
selector: tag
tag: maxspeed
'UK:nsl_single': 90
'GB:nsl_single': 90
_default: 60
else:
selector: if
condition: maxspeed = .*urban
then:
selector: tag
tag: maxspeed
'CZ:urban': 50
'DE:urban': 50
'FR:urban': 50
'IT:urban': 50
'NO:urban': 50
'ON:urban': 50
'RO:urban': 50
'RU:urban': 60
_default: 60
else:
selector: if
condition: highway = motorway
then: 110
else:
selector: if
condition:
or:
- highway = living_street
- living_street = yes
then: 20
else:
selector: if
condition: inside_city
then: 60
else: 90
Всем спасибо!!!
Из наблюдений: если в значениях тегов в файле OSM есть хитрые символы, вроде перевода строки, то на выходе можно получить некорректный файл MP. Вот пример такой интересной точки http://www.openstreetmap.org/node/4010158535
Поправил
Это было быстро
Спасибо
Чуть ли не c 2010 года идет спор, а разве Онежское и Ладожское озера (и им подобные) не достойны coastline?
В результате очередной борьбы за соблюдение правил озера “утонули в островах”. Нет на карте конечного продукта привычного синего поля. Есть пустота, белая безмолвная пустота. А на таких площадях это не айс.
Как в osm2mp решается вопрос сохранения полигона, в случае если по нему проходит граница региона? Может ключик --clip-areas отключить? Как влияет этот ключик на полигон? Как сохранить озеро (обеспечить конвертацию), если по его середине проходит граница региона (в качестве исходника пробовал и регион, и Россия целиком).
P.S. Сразу извиняюсь за дилетантскую постановку вопроса. Смущает ещё и тот факт, что разные исходники выдают разные результаты. С gis-lab озера не конвертируются ни при каких обстоятельствах. С geofabrik Онежское вдруг появляется, Ладожского нет.
Помогите разобраться. Спасибо.
Ну этот геморой не только у нас, вот наследие исчо одного коректора:
Remove natural=coastline tagging from Lake Michigan according OSM policies: http://wiki.openstreetmap.org/wiki/Tag:natural%3Dcoastline#What_about_lakes.3F
Закрыто 3 месяца назад пользователем jptolosa87
Convert Lake Superior from sea to lake tagging according to http://wiki.openstreetmap.org/wiki/Tag:natural%3Dcoastline#What_about_lakes.3F
Закрыто 3 месяца назад пользователем jptolosa87
Convert Lake Huron to natural=water, it is not a sea; natural=coastline for inland waters is deprecated: http://wiki.openstreetmap.org/wiki/Tag:natural%3Dcoastline#What_about_lakes.3F
Закрыто 3 месяца назад пользователем jptolosa87
Remove natural=coastline tagging from Lake Erie according OSM policies: http://wiki.openstreetmap.org/wiki/Tag:natural%3Dcoastline#What_about_lakes.3F
Закрыто 3 месяца назад пользователем jptolosa87
по уму надо бы пропозалить изменения в костлайне в область больших внутренних вожных пространств, но кто это протянет ??
живет же Каспий с костлайном и вроде бы никто его не трогает.
А что, конвертер никак не обновить, тем более с 2010 года? “Большое” - это очень размытое понятие. В данном случае оно кажется большим только потому, что соизмеримо с размерами вырезанного участка планеты (в данном случае - размерами области). А если вырезка меньше? Если хочется синие пятна по краю карты в местах воды, то мне непонятно, чем озеро, например, 10 км в диаметре менее достойно того же Ладожского, а тем более Онежского.
хм, а если в вики костлайна прописать список озер который имеют костлайн by default интересно ситуация изменится.
к примеру взять список крупнейших озер земли и из него вытащить 20 самых больших…
dair костлайн на большие внутренние воды вешают по практической причине, с костлайном проще работать, чем обежать большой полигон воды. 10 км озеро это мелочь, вполне влезающая в нарезку даже по регионам, а вот каспий будет побольше чем большинство кавказских республик - неудобно.