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

Создание и открытие графа сети

Поиск  Пользователи  Правила  Войти
Форум » Настольные приложения » GIS ToolKit, GIS ToolKit Active, ГИС Конструктор для Windows
Страницы: 1
RSS
Создание и открытие графа сети
 
Подскажите, есть ли способ построения графа сети, кроме функции onCreateNetDlgEx, которая объявлена в netapi.h как устаревшая, и без подтягивания библиотеки *obnet.dll ? В graphapi.h ничего подобного не замечено...

И еще: каков смысл функции onOpenNet(WCHAR*, OPENNETPAR)  ? Работать только с одной картой сети, без подложки основной карты?
Допустим, я получаю через onGetHSITE ее идентификатор. Как мне дальше работать с ним, например при mapCreateSiteObject, где требуется HMAP? Ведь сайт не открыт через mapOpenSiteForMap и не связан с основной картой... И что тогда возвращает в таком случае onGetHMAP ?
 
Цитата
Дмитрий Паньков написал:
Подскажите, есть ли способ построения графа сети, кроме функции onCreateNetDlgEx, которая объявлена в netapi.h как устаревшая, и без подтягивания библиотеки *obnet.dll ? В graphapi.h ничего подобного не замечено...
Других способов нет.
Цитата
Дмитрий Паньков написал:
И еще: каков смысл функции onOpenNet(WCHAR*, OPENNETPAR)  ? Работать только с одной картой сети, без подложки основной карты?Допустим, я получаю через onGetHSITE ее идентификатор. Как мне дальше работать с ним, например при mapCreateSiteObject, где требуется HMAP? Ведь сайт не открыт через mapOpenSiteForMap и не связан с основной картой... И что тогда возвращает в таком случае onGetHMAP ?
onGetHMAP, onGetHSITE возвращают идентификаторы карты графа, полученные внутри функции onOpenNet. Это обычные идентификаторы карты и вы можете делать с ними что хотите, в том числе создавать объекты через mapCreateSiteObject. Но это категорически не рекомендуется делать, потому-что карта графа отличается от других карт наличием связей между объектами, кроме того любое изменение карты графы приведет к  её полной перегрузке в памяти, что является длительным процессом. Если вам нужно создавать объекты, то пишите их в любую другую карту.
 
Цитата
Борзов Андрей написал:
Цитата
Дмитрий Паньков написал:
Подскажите, есть ли способ построения графа сети, кроме функции onCreateNetDlgEx, которая объявлена в netapi.h как устаревшая, и без подтягивания библиотеки *obnet.dll ? В graphapi.h ничего подобного не замечено...
Других способов нет.
Просто после вызова функции onCreateNetDlgEx происходит добавление созданной карты графа в основной документ и ее отображение. Думал, может есть возможность этого избежать и держать открытый функцией onOpenNet граф "в памяти" безо всяких связей...

Цитата
Борзов Андрей написал:
onGetHMAP, onGetHSITE возвращают идентификаторы карты графа, полученные внутри функции onOpenNet.
Тогда что указывает параметр HMAP в функции onOpenNetEx ? Карту, по которой построен граф, как и параметр ParentMap структуры OPENNETPARAM?

Цитата
Борзов Андрей написал:
Это обычные идентификаторы карты и вы можете делать с ними что хотите, в том числе создавать объекты через mapCreateSiteObject. Но это категорически не рекомендуется делать, потому-что карта графа отличается от других карт наличием связей между объектами, кроме того любое изменение карты графы приведет к  её полной перегрузке в памяти, что является длительным процессом. Если вам нужно создавать объекты, то пишите их в любую другую карту.
С другой стороны, в классификаторе road25.rsc есть объект 5559 (Маршрут), что намекает на возможность создания таких объектов на карте графа. А получается, что это плохая затея?
 
Цитата
Дмитрий Паньков написал:
Просто после вызова функции onCreateNetDlgEx происходит добавление созданной карты графа в основной документ и ее отображение. Думал, может есть возможность этого избежать и держать открытый функцией onOpenNet граф "в памяти" безо всяких связей...
Других способов нет.
Цитата
Дмитрий Паньков написал:
Тогда что указывает параметр HMAP в функции onOpenNetEx ? Карту, по которой построен граф, как и параметр ParentMap структуры OPENNETPARAM?
 // Открытие графа сети
 // hmap, hsite - идентификатор открытой карты графа
 NETIMP HNET WINAPI onOpenNetEx(HMAP hmap, HSITE hsite, OPENNETPARM *parm);

// Параметры открытия карты графа
typedef struct OPENNETPARM
{
 HMAP   ParentMap;   // документ, в котором открыты карты, по которым построен граф
                                    // необходим для функции onGetPathParentEdgeSite
                                    // если 0, то не используется
}
Цитата
Дмитрий Паньков написал:
С другой стороны, в классификаторе road25.rsc есть объект 5559 (Маршрут), что намекает на возможность создания таких объектов на карте графа. А получается, что это плохая затея?
Очень плохая
 
Цитата
Борзов Андрей написал:
Цитата
Дмитрий Паньков написал:
Тогда что указывает параметр HMAP в функции onOpenNetEx ? Карту, по которой построен граф, как и параметр ParentMap структуры OPENNETPARAM?
  // Открытие графа сети
 // hmap, hsite - идентификатор открытой карты графа
 NETIMP HNET WINAPI onOpenNetEx(HMAP hmap, HSITE hsite, OPENNETPARM *parm);

// Параметры открытия карты графа
typedef struct OPENNETPARM
{
 HMAP   ParentMap;   // документ, в котором открыты карты, по которым построен граф
                                    // необходим для функции onGetPathParentEdgeSite
                                    // если 0, то не используется
}
Да, именно это я и читал. Но просветления не наступило...

Что есть hmap в onOpenNetEx? Идентификатор основной открытой карты? Типа я могу открыть дополнительно пользовательскую карту, на основе которой построен граф, но сам граф передавать параметром hsite, а эту пользовательскую карту указать в поле ParentMap?
 
Цитата
Дмитрий Паньков написал:
Что есть hmap в onOpenNetEx? Идентификатор основной открытой карты? Типа я могу открыть дополнительно пользовательскую карту, на основе которой построен граф, но сам граф передавать параметром hsite, а эту пользовательскую карту указать в поле ParentMap?
Да
Страницы: 1
Читают тему (гостей: 1)



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

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