<< Оглавление >> Пикетаж. Описание явления сбивки |
|
Пикетаж - это по сути характерная для трасс специализированная система координат. В связи с тем, что реально после его первоначальной разбивки с трассой всегда происходят изменения – врезки более коротких (реже – более длинных, например: 55+548) участков, а пикетаж требуется максимально не изменять, то пикетаж "сбивается". Поэтому в общем случае, говоря о пикетаже имеют в виду и практически всегда имеющее место явление сбивки, "резанности" (для автодорог "рубленности") пикетажа. - Нормативно процесс не расписан. Цель - однозначная идентификация точки!
Почему требуется максимально не изменять? Есть бумажные документы (паспорта сооружений), пикеты обозначены на чертежах, на пикеты завязаны данные и т.п.
Есть два практически равноправных способа описания пикетажа (каждый, однако, со своими соглашениями, ограничениями и возможностями):
• принятый в отечественной практике способ маркирования "особых интервалов" (далее способ "резаных пикетов") и
• принятый за рубежом способ маркирования "особых точек" (далее способ скачков).
Система работает с трассой (упорядоченная совокупность определенных геометрических элементов). У трассы есть:
• начальное значение пикета, обычно нуль (вообще-то, можно было бы ввести понятие точки привязки пикетажа, то есть указание произвольной точки на трассе и ее пикетажного значения, от которой пикетаж разбивается в двух направлениях. Это хорошо соответствует практике, однако создает массу проблем при редактировании трассы, если точка жестко не привязана к началу или концу.)
• направление пикетажа (по возрастанию – обычно, по убыванию – редко). Чтоб на одной трассе было и то, и другое – невозможно. Далее без потери общности можно считать, что пикетаж монотонно возрастает (бывает, убывает). В зависимости от этого используется тот или иной знак (+ или -) в качестве разделителя ПП.
• шаг, интервал пикетажа. Если специально не указано, расстояние между пикетами с двумя последовательными целыми числами – 100 м (например, 22 и 23) или 1 км, или сколько угодно – интервал пикетажа. Резаный пикет – это такой пикет, длина до которого от предыдущего не равна (больше или меньше) интервала пикетажа или если нарушена последовательность номеров (даже если интервал 100). (Т.о. пикетаж тесно связан с интервалом пикетажа: при изменении последнего все пикеты становятся резаными.) На трассе выделяются точки (пикеты), имеющие номера. Эти номера уникальны и возрастают, их тип – целое число, возможно, и отрицательное. (Вообще, следует понимать, что уникальность ID – единственное объективное требование для пикетажа, упорядоченность же – искусственное требование, введенное в целях упрощения алгоритмов, времени конвертации и в силу достаточности для практического применения.)
Первый способ – способ "резаных пикетов".
По причине изменения трассы – врезки более коротких или более длинных (очень редко) участков и желания не изменять уже имеющиеся пикеты возникает явление "сбивки" пикетажа – резанности. Пикет – это интервал между двумя соседними пикетами. В обычном варианте от 0 до 1 – это интервал 1 пикета. Соответственно, и резаный пикет имеет номер его конца. В случае врезки более коротких участков длина может быть меньше интервала пикетажа (обычно, ста метров). А при врезке более длинных участков длина может быть больше интервала. (Обычно происходит переразбивка пикетажа на врезаемом участке. Тогда большая длина получается между двумя СОСЕДНИМИ в ряду номерами. Но могут быть и другие варианты.)
Пикет является резаным в трех случаях: если номера отличаются больше чем на 1 (даже если длина = шагу), если длина меньше шага, если длина двух между двумя соседними номерами больше шага.
Т.е. мы имеем дело с трассой, уложенной на ось Х, – направленной линией, расположенной в конкретном месте оси в МСК, сжатой в одних местах, вплоть до ликвидации промежуточных точек, и растянутой в других.
Это ПСК трассы. В МСК ее начало, как отмечалось, может быть не в 0, а направление – быть одним из двух (возрастать или убывать).
Имеется таблица резаных (в общем случае) пикетов трассы.
Таблица состоит из четырех столбцов:
- номер пикета в начале резаного пикета (интервала),
- длина от начала до этого пикета,
- номер пикета в конце резаного пикета (интервала),
- длина от начала до этого пикета.
Таблица подчиняется определенным ограничениям – при вводе.
Можно сказать, что это "интервальный" способ описания явления сбивки, "резанности" (для АД "рубленности").
Примечание. Эту таблицу можно представить и в альтернативном варианте:
- номер пикета в начале или конце резаного пикета (интервала),
- длина от начала до этого пикета,
- признак 1-0: следующая часть трассы входит в резаный пикет.
===================
Данная информация необходима и достаточна для нахождения так называемого внешнего представления (или по другому – пикетажного положения – ПП) любой точки на трассе. При этом неоднозначности = неопределенности исключены (в отличие от способа скачков – см. ниже). В связи с однозначностью функций можно говорить о дополнительной ПСК для трассы – пикетажной.
Так, например, если на трассе нет сбивки (резаных пикетов), то все номера возрастают, и для любой точки ПП может быть представлено с "плюсом", например, 22+55, что соответствует длине от начала 2250 м. Минуса быть не может: всегда идет прибавка в направлении возрастания пикетажа, это просто разделитель.
Уже первый резаный пикет вносит в алгоритм значительные изменения. Например, номер начальной точки резаного пикета 22. ПП точек внутри интервала: 22+55, 22+99, 22+140, 22+450....
Номер конечной точки резаного пикета, например, 35.
После него ПП 35+30, 35+99.9
=====
Итак, есть:
• длина от начала до каждой точки, естественно, однозначна. Длина – абсолютная величина, начиная с 0 от начала трассы и по возрастанию.
• ПП (внешнее представление) = пикет. Есть каноническое ПП: берется ближайший предыдущий пикет и от него плюс.
Для отрицательных номеров пикетов принято считать в другую сторону. Тогда придется писать -0+15, -1+15. Достоинством этого способа является то, что при отсутствии резаных пикетов ПП совпадает с координатой = внутренним пикетом: -1+50 то же, что и -150. Достоинство: похоже на числовую ось.
Все хорошо и справа от 0, и слева от 0, и даже при переходе через 0 – но если он есть.
В случае, если 0 нет вообще (пропал внутри резаного):
-2 1 ...
100 200 ...
как вариант по умолчанию вводится искусственный пикет с номером 0 на минимальном положительном пикете (вырожденный резаный пикет с длиной 0 – аналог скачка, излома трассы).
Итак, имеются две функции (и еще одна дополнительная).
Первая функция по длине (координата X в криволинейной ПСК) находит ПП.
Вторая функция по числу с плюсами находит длину или делает вывод, что данному ПП не соответствует ни одна точка на трассе с данной таблицей резаных пикетов.
Внутри алгоритма удобно оперировать координатой X в МСК – так называемый внутренний пикет.
Например, 22+101, если на трассе номера 22, 23 и 22-23, – не резаный пикет.
Т.е. существует проблема форматирования ввода для «длинных» резаных пикетов (длина которых превышает стандартную длину интервала), и то только для тех ПП, значения плюса в которых превышают стандартную длину интервала, то есть редко.
Для этих случаев можно предусмотреть специальный лидирующий символ, например, «P», можно сделать его и настраиваемым, ведь есть же специальный символ для ввода относительных координат. Система будет знать, что следующее за этим символом число должно быть целым, и трактовать его следует как номер пикета (километра), далее можно либо дополнительно запросить размер «плюса», либо плюс так же можно отделять разделителем.
=====
Третья функция – калькулятор – автоматическое преобразование
пары: пикет из списка имеющихся +- длина >
к нормальному виду – ПП.
Например, нормальное представление (направление пикетажа по возрастанию, резаные пикеты отсутствуют) 5+60, ему соответствуют, и в него при вводе должны быть преобразованы пары 4+160, 6-40, 1+460, пр. Естественно, при наличии резанных пикетов все их нужно учесть в пределах расчетного промежутка.
Этот калькулятор без резанных пикетов особого смысла не имеет, а при их наличии может быть довольно удобно.
Пример. Есть трасса с двумя резаными пикетами:
1,100-2,900 и 5,1200-6,1800.
(Для ясности пусть пикет начала=0, а трасса достаточно длинная. Резаные пикеты здесь заданы корректно.)
Нормализованным называется пикетажное положение с наименьшим возможным значением плюса или наименьшим по модулю значением минуса. Это и есть ПП.
К 1+700 должны быть преобразованы, например, введенные значения пар 1+700, 0+800, 4-300, 7-1100.
Пара 5+200 соответствует длине 1400.
6+100 соответствует длине 1900, и если оно будет введено, то должно быть преобразовано к нормализованному значению 7+00.
К 7+00 должны быть преобразованы также введенные значения 0+1900, 8-100, 4+800.
Если не считать длиной, может быть противоречие ??? при отрицательных номерах.
=====
Можно рассмотреть еще задачи.
Например, подписать пикетаж через 100 м по всей трассе. Т.е. создать полную базу пикетажа.
Пользователю дается возможность вводить резаные пикеты.
Для большей наглядности строки пикетажа нужно выделять, например, бледно-зеленым цветом.
Второй способ описания сбивок (способ скачков, это точечный способ, в отличие от описанного выше интервального) – является ли эквивалентным вышеизложенному, есть ли у него достоинства и недостатки?
Если не врезать более длинных участков, дублирования номеров не будет.
Но если таковое сделать, возникнет дублирование.
Для первого пикета длина которого не совпадает, указывается
• длина,
• его ПП.
ПП точек при таком варианте всегда ДО 100 м (по определению).
В принципе такой вариант описания сбивок позволяет по длине однозначно определить ПП,
но по ПП при возникновении дубляжа (когда были врезки более длинного участка) пикеты выводятся для уточнения (выбора) с длиной. Т.е. автоматическая функция невозможна – неоднозначность.
Естественно, здесь также возможны ПП, которые не существуют.
Задача: чтобы пикетаж пересчитывался при редактировании плана трассы. ???
Отдельная задача.
Врезать в трассу кусок меньшей длины (или, очень редко, большей). При этом должен быть переразбит пикетаж в зависимости от способа описания сбивки (в варианте резаных пикетов – с учетом условия уникальности номеров, в варианте скачков с учетом стометровости интервала). Т.е. если при разбивке пикетажа возникают номера, которые уже есть дальше по трассе, то где-то ранее (обычно, на "твердых" точках делается резаный пикет.)
Т.е. любое редактирование, вызывающее изменение длины участка трассы автоматически приводит к неадекватности информации о резаных пикетах, как в пределах участка редактирования, так и оставшихся до конца трассы (они вообще могут улететь за пределы трассы). Хорошо то, что адекватность восстанавливается для всех последующих пикетов путем редактирования (только ручного) одного, ближайшего за участком редактирования резаного пикета и естественно всех в пределах участка редактирования. Land эту особенность игнорирует. А нужно хотя бы предупреждать пользователя выводом сообщения.
Корректность задания резанных пикетов необходимо контролировать на этапе ввода. При ручном вводе резаных пикетов перед начальным пикетом может возникать дополнительный (неявный) резаный пикет с длиной меньше интервала. Система должна вводить его автоматически, маркировать как неявный и информировать пользователя.
===
Т.е. трасса существует вместе с описанием ее пикетажной СК и вместе с программным комплексом поддержки.
Утверждение: возможна высшая степень свободы: одновременная поддержка (путем переключения) обоих способов описания. Они взаимно однозначны.
====
При разбивке пикетажа одной трассы по другой оформление трасс (подписи пикетов) сбивается. Это известная проблема, связанная с пикетажем одной трассы по другой. Четкого ее решения на данный момент нет, поскольку не понятно в принципе, как оформлять зависимые трассы. Более того, как объясняют наши постановщики, зависимые трассы обычно вообще не оформляются -- оформляется только главная трасса, по которой разбивается пикетаж.
Если у Вас есть свои предложения по данному вопросу – с удовольствием их рассмотрим.