На главную... Продукты | Технологии | Классификаторы | Проекты | Скачать | Цены| Форум | Статьи | Обучение | Контакты

Прокладка маршрута

Поиск  Пользователи  Правила  Войти
Форум » Linux » Средства разработки ГИС-приложений для Linux
Страницы: 1
RSS
Прокладка маршрута
 
Добрый день.
Библиотеки под QNX. Обозначение ПАРБ.00008-17, зав. №39676.
необходимо:
- на карту наносится зона, через которую прокладка маршрута временно не возможна, временное исключение из графа точек для огибания этой зоны при построении маршрута;
- прокладка маршрута по пересеченной местности с учетом рельефа местности, наличия преград.

Возможно ли реализовать через библиотечные функции, если да, то куда копать?  
 
Функции по работе с графом описаны в graphapi.h

Например:
Код
  // Открытие графа сети
  // hmap, hsite - идентификатор открытой карты графа
  // mapname - имя карты графа
  // parm    - параметры открытия графа
  // Возвращает идентификатор открытого графа
  // При ошибке возвращает 0
  NETIMP HNET WINAPI onOpenNetEx(HMAP hmap, HSITE hsite, OPENNETPARM *parm);
  NETIMP HNET WINAPI onOpenNet(WCHAR *mapname, OPENNETPARM *parm);

  // Поиск кратчайшего маршрута по графу дорог
  // Чтобы отобрать разрешенные ребра для построения маршрута и/или исключить 
  // отдельные ребра из построения маршрута необходимо в структуре PATHPARM 
  // установить условия отбора HSELECT (UseSelect и/или BanSelect)
  // hnet - идентификатор графа сети, полученный onOpenNet
  // parm - параметры определения маршрута
  // Возвращает идентификатор маршрута
  // При ошибке возвращает 0
  NETIMP HPATH WINAPI onCreatePath(HNET hnet, PATHPARM *parm);
При построении маршрута можно указать, какие дуги не должны участвовать в построении маршрута и/или наоборот - какие должны быть использованы
из всех дуг, которые есть на исходной карте графа, открытой в  onOpenNet/onOpenNetEx.

// Параметры решения задачи коммивояжера (Travelling salesman problem)
typedef struct TSPPARM
{
...
 HSELECT      UseSelect;    // разрешенные ребра (если = 0, то разрешены все ребра)
 HSELECT      BanSelect;    // запрещенные ребра (запрет имеет больший приоритет), если = 0, то нет запрещенных ребер
 ...
}
 TSPPARM;

В HSELECT можно отобрать объекты-дуги по различным свойствам (ширина, материал покрытия, максимальная скорость, ...)
или с учетом их расположения (попадания в заданную область).

Функции поиска/отбора описаны в seekapi.h


Прокладка маршрута по пересеченной местности не имеет смысла для графа.
Движение напрямую через болото, лес, брод, овраг не имеет отношения к графу дорог.

Можно построить матрицу качественных характеристик местности, подготовив легенду матрицы (коэффициенты качества
для разных объектов с учетом их характеристик) и затем решать задачи с учетом матрицы - поиск направлений (не дорог) движения
с учетом допустимых свойств местности (толщина деревьев, уклон местности, глубина реки ...).

Функции по работе с матрицами описаны в mtrapi.h и mtrexapi.h
Страницы: 1
Читают тему (гостей: 1)



© КБ Панорама, 1991-2024

Регистрируясь или авторизуясь на форуме, Вы соглашаетесь с Политикой конфиденциальности