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

Работа с графом дорог

Поиск  Пользователи  Правила  Войти
Форум » Настольные приложения » GIS ToolKit, GIS ToolKit Active, ГИС Конструктор для Windows
Страницы: 1
RSS
Работа с графом дорог
 
У меня на одном sit-е располагается граф автомобильных и железнодорожных дорог, соединенные в определденных точках
кратчайший путь нахожу функцией onSeekPathCreateObject
Можно ли узнать, какие дуги вошли в полученный объект пути ?
Мне надо определить где путь переходит от автомобильного в ж/д и обратно, дуги имеют пользовательскую семантику принадлежности к типу дороги (авто, ж/д и т.п.)
 
Цитата
Валерий Парусов написал:
У меня на одном sit-е располагается граф автомобильных и железнодорожных дорог, соединенные в определденных точках
кратчайший путь нахожу функцией onSeekPathCreateObject
Можно ли узнать, какие дуги вошли в полученный объект пути ?
Мне надо определить где путь переходит от автомобильного в ж/д и обратно, дуги имеют пользовательскую семантику принадлежности к типу дороги (авто, ж/д и т.п.)

Добрый день!
Можно использовать функцию onSeekPathGraphSelect() из netapi.h.
// Определение кратчайшего расстояния между двумя узлами сети без вызова диалогов
// hmap - идентификатор открытой векторной карты
// hgraph - идентификатор графа сети, предварительно должен быть открыт функцией
// onOpenGraph(...)
// object - идентификатор объекта в памяти,
// предварительно созданного функцией mapCreateObject()
// или mapCreateSiteObject(),
// в котором будет размещен результат - минимальный путь.
// infobegin - начальный узел(идентификатор объекта карты в памяти)
// infoend - конечный узел(идентификатор объекта карты в памяти)
// select - контекст условий поиска, предварительно созданный функцией
// mapCreateSiteSelectContext(...), для размещения результатов (в select записываются
// дуги, которые составляют минимальный путь)
// methodseek - метод построения (0 - длина, 1- время)
// speed - средняя скорость (км/ч)(если methodseek = 1 и значения семантики
// "Скорость" не установлены)
// При ошибке возвращает 0

_NETIMP long int WINAPI onSeekPathGraphSelect(HMAP hmap, HGRAPH hgraph, HOBJ object, HOBJ infobegin, HOBJ infoend, HSELECT select,
long int methodseek, double speed);
 
Получается что с помощью onSeekPathByPointExGraph можно искать кратчайший путь, указывая какие ребра надо исключить.
С помощью onSeekPathGraphSelect можно получить ребра, принадлежащие найденному пути.
А как совместить? Задать критерии поиска и получить найденные ребра?
 
Цитата
Валерий Парусов написал:
Получается что с помощью onSeekPathByPointExGraph можно искать кратчайший путь, указывая какие ребра надо исключить.
С помощью onSeekPathGraphSelect можно получить ребра, принадлежащие найденному пути.
А как совместить? Задать критерии поиска и получить найденные ребра?

Функции, в которой совмещены такие опции, нет. Как вариант - можно перестроить граф без исключаемых ребер и воспользоваться
onSeekPathGraphSelect.
После поиска маршрута функцией onSeekPathByPointExGraph можно вызвать функции onGetCountRib и onGetArrayRib.
Страницы: 1
Читают тему (гостей: 1)



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

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