Skip to content

Additional functions

OverQuantum edited this page Oct 11, 2013 · 2 revisions

Помимо основной функции OptimizeRouting(), в программе есть несколько её клонов, выполняющих другие виды обработки данных. Все эти функции, а также используемые ими, но не используемые основным алгоритмом, вынесены в окончание файла, за разделитель "####..."

Для корректировки параметров функций, используемых совместно с основным алгоритмом, введены переменные Control_*.

Разработаное для обзорной карты Planet Overview

Набор функций разработан при создании Planet Overview OSM (2013-10)

  • OptimizeRouting_hw - оптимизация дорог
Работает аналогично основной функции, но без учёта класса скорости и с различением trunk и motorway. Финальный Дуглас-Пеккер оптимизирует сильнее.
  • OptimizeRouting_hwbbox - оптимизация дорог с обрезкой по bbox
Аналогично OptimizeRouting_hw, но в конце вызывается обрезка по bbox. Bbox необходимо указать совместно с именем файла входным параметром вызова в виде:
filename?a?b?c?d
где a - lon min, b - lat min, c - lon max, d - lat max
Например: p035p055.osm.mp?35?55?40?60 - обрезка по bbox 35,55,40,60
  • OptimizeRouting_borders - оптимизация границ
Ориентировано на склеивание линий границ, нарисованных многократно и/или единым контуром. Использует загрузку типа из mp файла (см. GetTypeFromMP), а не комментарии osm2mp. Не выполняет алгоритмы поиска развязок, склеивания дорог и т.п.
  • OptimizeRouting_borders_top - сильная оптимизация границ
Ориентировано на склеивание линий границ, нарисованных многократно и/или единым контуром. Аналогично OptimizeRouting_borders, но с дополнительной оптимизацей геометрии в конце. Предназначено для верхних уровней обзорной карты.
  • OptimizeRouting_rr - оптимизация железных дорог
Склеивание железных дорог, нарисованных одним типом линий без классификации и направлений. В том числе серьёзно упрощает веер линий на вокзалах, не ухудшая геометрии магистральных линий. Может склеить проходящие рядом дороги, т.к. используется процедура склеивания близких точек. Выходной .mp файл будет содержать линии с типом автодорог, а не ж/д.
  • OptimizeRouting_rrbbox - оптимизация железных дорог с обрезкой по bbox
Аналогично OptimizeRouting_rr, но с обрезкой результата по bbox, аналогично как в OptimizeRouting_hwbbox.
  • OptimizeRouting_comb - склеивание оптимизированных блоков
Склеиватель блоков (например, 5х5 градусов), оптимизированных OptimizeRouting_hw или OptimizeRouting_rr и составленных в один .mp файл. Не использует NodeID из входного файла для склейки точек, т.к. ожидает там коллизии. Не рекомендуется к использованию, сохранён на всякий случай.
  • OptimizeRouting_stitch - склеивание блоков, обрезанных по bbox
Склеиватель блоков 5х5 градусов, оптимизированных OptimizeRouting_hwbbox или OptimizeRouting_rrbbox. Не использует NodeID из входного файла для склейки точек, т.к. ожидает там коллизии. Алгоритм склеивания требует указания линии разреза, поэтому в коде прописано склеивание всего мира по швам 5х5 градусов, а также по швам между блоками 1х1 градус внутри нескольких 5х5. Алгоритм ищет среди линий, приходящих к шву с двух сторон наиболее близкие и при этом имеющие одинаковый тип и по возможности одинаковое направление.
Для данной функции рекомендуется выполнять оптимизацию OptimizeRouting_*bbox с bbox меньшим, чем сгруженные данные - для совпадения результатов работы алгоритма с обоих сторон шва. Например, загружать 5.2х5.2 градуса (по 0.1 градуса больше в каждую сторону) а обрезать до 5х5 градусов.
  • OptimizeRouting_bathy - оптимизация изобат глубин
Функция для упрощения линий изобат из данных NaturalEarth. Изобата 200 метров в версии 2.0.0 содержит дефект, для борьбы с ним использовался вызов JoinCloseNodes(15)
  • OptimizeRouting_ele - классификатор точек высот
Функция загружает osm xml файл, содержащий построчные данные на точки с высотой (тэг ele), упорядоченые по убыванию высоты; и сохраняет несколько таких файлов - точки классифицируются на уровни, на которых их отображать на обзорной карте. Классификация производится выборкой точек, отстоящих друг от друга не более чем на 1) 150 км 2) 40 км 3) 10 км и 4) все остальные а также высоты ниже 1000 м. 150км - для уровня 3. За счёт упорядоченности исходного файла, на уровень 3 попадают только самые высокие вершины из окрестности.
Clone this wiki locally