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

Маршруты

Поиск  Пользователи  Правила  Войти
Форум » Настольные приложения » GIS ToolKit, GIS ToolKit Active, ГИС Конструктор для Windows
Страницы: 1
RSS
Маршруты
 
использую panapi оператора 11.10.15 windows
пытаюсь выбрать на слое с графами дорог все имеющиеся маршруты
Код
    HMAP hMap = task()->HMap;

    HSELECT hSelect = mapCreateMapSelectContext(hSite); // hSite или hMap?
    //mapSelectLayer(hSelect, -1, 1);

    HOBJ hObj = mapCreateObject(hSite); // hSite или hMap?
    int flag = WO_FIRST;

    mapSelectTitle(hSelect, "Маршрут");
    //mapSelectSemanticAppend(hSelect, CMEQUAL, 9, "Маршрут"); //не работает

    int i=0;
    while (mapSeekSelectObject(hMap, hObj, hSelect, flag))
    {
        flag = WO_NEXT;
        if (mapObjectExcode(hObj) == 5559) //находит маршруты
        {
            i++;
            addLog(QString("%1 %2 %3")
                   .arg(mapObjectName(hObj))
                   .arg(QString::number(mapObjectExcode(hObj)))
                   .arg(mapObjectIsGroup(hObj)));
//            task()->GetMapWindow()->SetSelectObject(hObj);
        }
    }

    mapFreeObject(hObj);
    mapDeleteSelectContext(hSelect);


если использовать функцию mapSelectSemanticAppend, то не находит ни одного объекта,
если фильтровать постфактум по классификационному коду, то работает, но хотелось бы фильтровать до начала поиска.

Вопрос 2.
Если маршрут состоит из нескольких точек, есть ли возможность учитывать их порядок.
Т.е соблюдался строгий порядок 1->2->3. На данный момент, как я понимаю в расчет принимается близость точек и маршрут выглядит 1->3->2
 
У элементов графа нет характеристики 9 "Собственное название" со значением "Маршрут". Поэтому результат поиска нулевой.
Но могут быть значения "M-2", "E-95", "A-107" и т.д.

Для построения маршрутов и решения других задач есть отдельный набор функций, описанных в Руководстве программиста
и объявленных в заголовочных файлах (netapi.h, graphapi.h).
 
Вопрос №1 (уже задан): подскажите, пожалуйста, где взять этот файл и в какой библиотеке реализованы описанные в нем функции? в разных sdk я его не нашел.
Вопрос №3 (новый): как программно определить время прохождения дуг маршрута без вызова диалога? Приведите, пожалуйста, пример использования.
 
Цитата
Игорь Михейчев пишет:
как программно определить время прохождения дуг маршрута без вызова диалога?
перебираете все участки (объекты - марошрут) и используя функцию mapRealDistance считаете врем.
Например вот так

double dist = 0.0;
do
 dist = dist +mapRealDistance(hObj);
while (перебор всех участков)

timesec = dist/(1000.0*speedKMH/3600.0); // проще timesec = dist/(0.078125*speedKMH);
Не тот глуп кто не знает, а тот, кто не знает где искать.
 
Библиотеки ГИС-ядра и заголовочные файлы лежат тут http://gisinfo.ru/download?id=101
 
Будет ли обновлен "Примеры разработки приложений в ГИС "Оператор" под версию ГИС Оператор 11.12.8 ?
Интересует работа с функциями, описанными в graphapi.h в контексте работы задачи внутри ГИС Оператор, а не в контексте отдельного приложения.
 
Цитата
Oleg Belenkov написал:
У элементов графа нет характеристики 9 "Собственное название" со значением "Маршрут". Поэтому результат поиска нулевой.
Но могут быть значения "M-2", "E-95", "A-107" и т.д.

Для построения маршрутов и решения других задач есть отдельный набор функций, описанных в Руководстве программиста
и объявленных в заголовочных файлах (netapi.h, graphapi.h).
Здравствуйте, Олег!
Подскажите пожалуйста в построении маршрута и его отображении.
Я пишу на C# с использованием GIS ToolKit 11
Вот мой код, который я написал, но он ни чего не делает

if (RoadObj.Checked) //Построение маршрута движения
           {
               MapNet1.OpenGraph(MapView.MapHandle, MapNet1.NetSitHandle);

               TxTASKPARM parm;
               parm.Language = 2;

               MapPoint.PlaceInp = TxPPLACE.PP_PLANE;
               int r = MapObj.CreateObjectByExcode(0, (int)TxMetricType.IDFLOAT2, 10911, (int)TxObjectLocal.OL_LINE);

               Point_A1 = 52.3624889;
               Point_B1 = 69.0635201;
               Point_A2 = 51.8676582;
               Point_B2 = 69.5351171;

               double a = Point_A1 * Math.PI / 180;
               double b = Point_B1 * Math.PI / 180;
               MapView.ConvertMetric(ref a, ref b, TxPPLACE.PP_GEO, TxPPLACE.PP_PLANE);
               var tdp1 = new TxDoublePoint { X = a, Y = b };
               MapNet1.GetNodeByPoint(MapObj.ObjHandle, ref tdp1);

               double q = Point_A2 * Math.PI / 180;
               double w = Point_B2 * Math.PI / 180;
               MapView.ConvertMetric(ref q, ref w, TxPPLACE.PP_GEO, TxPPLACE.PP_PLANE);
               var tdp2 = new TxDoublePoint { X = q, Y = w };
               MapNet1.GetNodeByPoint(MapObj.ObjHandle, ref tdp2);

               MapNet1.GetShotWayByPointAndCreateObject(r, ref tdp1, ref tdp2);

               MapView.SetObjSelected(MapNet1.cSelectForNet, COLOR.aColor(), false);
               
               MapObj.CommitObject();
               MapObj.Repaint();
               MapView.Refresh();

               
           }
           RoadObj.Checked = false;

В общем я пытаюсь построить маршрут по двум выделенным точкам на карте (на скрине)
Если Вас не затруднит помочь именно кодом. Заранее спасибо!!
 
Метод GetShotWayByPointAndCreateObject первым параметром принимает Handle экземпляра класса в памяти для работы с объектами карты.
В него следует передать MapObj.ObjHandle.

Кроме того, рекомендую проверять коды возврата от методов.  Сразу будет понятно, на каком шаге произошел сбой.
Страницы: 1
Читают тему (гостей: 1)



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

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