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

Альтернатива основному маршруту (запасной маршрут)

Поиск  Пользователи  Правила  Войти
Форум » Настольные приложения » GIS ToolKit, GIS ToolKit Active, ГИС Конструктор для Windows
Страницы: Пред. 1 2 3 4 След.
RSS
Альтернатива основному маршруту (запасной маршрут), Запасной маршрут
 
Я попробовал записать в параметр nodeStart и nodeFinish значение MapObj.ObjHandle, но все равно ноль.
Скрин кода прилагаю.    
 
Цитата
Александр Махин написал:
Правильно ли будет если пропишу так:  nodeStart = MapObj.ObjHendle;

Категорически нет!
Таким образом Вы перетираете указатель на выделенный ранее объект (в mapCreateObject). То есть получаете утечку памяти - раз, nodeStart и nodeFinish настраиваете на один и тот же объект  - на тот, который содержится в MapObj, - это два.
Соответственно поиск пути от объекта к самому себе возвратит ноль.

Если у Вас есть непонимание и трудности работы на низком уровне (с хэндлами и указателями), работайте на уровне компонентов. Это проще.
Возьмите три экземпляра MapObj.
В первый поместите первый интересующий Вас узел, во второй MapObj - второй узел, а третий передайте в метод поиска пути для размещения результата.
 
У меня получилось проложить два маршрута первый маршрут с использованием GetFastWay (по временым показателям) и второй с использованием GetShotWay (по расстоянию).
Но проблема в том, что они накладываются друг на друга за исключением небольших отклонений.
А можно ли сделать так, что одна дорога будет прокладываться по типу дороги допустим по ШОССЕ, а вторая по ПРОСЕЛОЧНЫМ ДОРОГАМ т.е с использованием семантики??
 
Подскажите пожалуйста, смогу ли я сшить два линейных объекта в один используя компонент MapCross, если конец одной линии это начало второй линии??
И если Вас не затруднит небольшой примерчик как этим компонентом пользоваться на С#.)) В примерах просто я смотрел его нет.
 
Цитата
Александр Махин написал:
А можно ли сделать так, что одна дорога будет прокладываться по типу дороги допустим по ШОССЕ, а вторая по ПРОСЕЛОЧНЫМ ДОРОГАМ т.е с использованием семантики??

Это зависит от того, как построен граф (см. документацию).
Скорость должна попасть в соответствующую семантику ребер графа.
 
Цитата
Александр Махин написал:
Подскажите пожалуйста, смогу ли я сшить два линейных объекта в один используя компонент MapCross, если конец одной линии это начало второй линии??И если Вас не затруднит небольшой примерчик как этим компонентом пользоваться на С#.)) В примерах просто я смотрел его нет.

Для этого используется метод axMapCross.ExecuteUnion
Примера действительно нет. Но и ничего сложного в работе компонента axMapCross тоже нет.
Всю информацию можно найти в документации.

...
Справочные системы по средствам разработки (on-line), документация, обновления
 
Здравствуйте!!
Изучив документацию по компоненту MapCross, попытался сшить два линейных объекта, но после нажатия на кнопку "Объеденить маршруты" ни чего не происходит.
Вот код на C#

MapCross.cObjIn1 = MapObj1.C_CONTAINER;
MapCross.cObjIn2 = MapObj2.C_CONTAINER;
MapCross.cObjOut = MapObj3.C_CONTAINER;
MapCross.LocalOut = TxLocalOut.OUT_LINE;
MapCross.CreateCross();
MapCross.ExecuteUnion();
MapCross.cObjOut.Commit();
MapCross.cObjOut.Repaint();
MapView.Refresh();

В чем у меня проблема? Почему не объединяет?
 
Цитата
Александр Махин написал:
В чем у меня проблема? Почему не объединяет?

Что заполнено в MapObj1 и MapObj2?

Какое значение установлено в axMapCross.Precision?

MapCross.CreateCross()  - это лишнее, если Вы не строите пересечение объектов.
 
Я в данный момент пытаюсь сделать так, чтобы каждый из двух маршрутов записывались в отдельный экземпляр класса.
Как все у меня будет готово я Вам скину подробную информацию, что - как и куда записывается + добавлю скрины.
Осталось не много)))
 

Здравствуй, господа разработчики!!
Как и обещал скидываю рабочие образцы объединения двух маршрутов в один на C#



//---------------------------------- Добавление маршрута от пункта убытия до промежуточного пункта ----------------------------------//

               var road1 = new Objects.RoadDetail(MapView);
               road1.Start = new TxDoublePoint { X = Common.Args.Subdivision.Latitude * Math.PI / 180, Y = Common.Args.Subdivision.Longitude * Math.PI / 180 };
               road1.Finish = new TxDoublePoint { X = Common.Args.Point2.Latitude * Math.PI / 180, Y = Common.Args.Point2.Longitude * Math.PI / 180 };
               MapView.ConvertToMetricRoad(ref road1.Start);
               MapView.ConvertToMetricRoad(ref road1.Finish);
               road1.CreateRoad(MapNet1);
               MapCross.cObjIn1 = road1.ObjRoad;

               //-------------------------------------------------------------------------------------------------------------------------------------//

               //------------------------------- Добавление маршрута от промежуточного пункта до пункта назначения -----------------------------------//

               var road2 = new Objects.RoadDetail(MapView);
               road2.Start = new TxDoublePoint { X = Common.Args.Point2.Latitude * Math.PI / 180, Y = Common.Args.Point2.Longitude * Math.PI / 180};
               road2.Finish = new TxDoublePoint { X = Common.Args.Point.Latitude * Math.PI / 180, Y = Common.Args.Point.Longitude * Math.PI / 180 };
               MapView.ConvertToMetricRoad(ref road2.Start);
               MapView.ConvertToMetricRoad(ref road2.Finish);
               road2.CreateRoad(MapNet1);
               MapCross.cObjIn2 = road2.ObjRoad;

               //-------------------------------------------------------------------------------------------------------------------------------------//

               

               RoadStart = new Helper.Coordinate_double();
               RoadFinish = new Helper.Coordinate_double();

               //----------------------------------------------- Объединение двух маршрутов в один --------------------------------------------------//

               MapCross.precision = 1;
               MapCross.cObjOut = road1.ObjRoad;
               MapCross.LocalOut = TxLOCALOUT.OUT_LINE;
               
               bool union = MapCross.ExecuteUnion();
               if (union)
               {
                   road2.ObjRoad.Delete();
                   MapCross.cObjOut.Commit();
                   MapCross.cObjOut.Repaint();
                   MapView.Refresh();
               }

               int HOBJ = road1.ObjRoad.ObjHandle;

               //-------------------------------------------------------------------------------------------------------------------------------------//

Страницы: Пред. 1 2 3 4 След.
Читают тему (гостей: 1)



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

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