Всем добрый день!
Случайно натолкнулся на проблему следующего характера:
Спойлер
; WayID = 1137893376:0
; highway = primary
; lanes = 3
; maxspeed = 40
; oneway = yes
[POLYLINE]
Data0=(67.567529,33.353087),(67.5672374,33.3536716),(67.5669906,33.3541706),(67.5669522,33.3542483),(67.5668785,33.3544031)
RoadID=86
DirIndicator=1
RouteParams=2,3,1,0,0,0,0,0,0,0,0,0
Type=0x04
Label=Жемчужная улица
CityName=Апатиты
CountryName=Россия
LegalSpeed=40
RegionName=Мурманская область муниципальный округ Апатиты
StreetDesc=Жемчужная улица
TrafficLanes=2,0,0,1,0,0
TurnLanes=reverse|left|through
Nod0=0,502,0
Nod1=1,353,0
Nod2=3,82,0
Nod3=4,334,0
[END]
Если присмотреться то наверное удивит значение TrafficLanes=2,0,0,1,0,0:
по теории первая цифра - количество полос в прямом направлении,
четвёртая цифра - количество полос в обратном направлении
Всё бы ничего если бы не:
oneway = yes
RouteParams=2,3,1,0,0,0,0,0,0,0,0,0
Не знаю как конвертер формирует эти значения, однако очень похоже за это деяние отвечает запись в settings-navitel.yml:
Спойлер
TrafficLanes: !!perl/code |-
{
my $tags = shift()->{tag};
my $lt = extract_number($tags->{'lanes'}) // q{};
my $lf = extract_number($tags->{'lanes:forward'}) // q{};
my $lb = extract_number($tags->{'lanes:backward'}) // q{};
if ( $lt ) {
$lf = length $lb ? $lt-$lb : int($lt/2+0.5) if !length $lf;
$lb = length $lf ? $lt-$lf : int($lt/2) if !length $lb;
}
return undef if !length $lf || !length $lb || $lt<0 || $lb<0;
return "$lf,0,0,$lb,0,0";
}
Вопрос - это проблема? Или так и должно быть? Если проблема то может это только у меня? Если не только у меня может есть решение по исправлению этого недочета?
Спасибо!