Функции по работе с графом описаны в 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