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

Поворот объекта добавленного в классификатор?

Поиск  Пользователи  Правила  Войти
Форум » Linux » Средства разработки ГИС-приложений для Linux
Страницы: Пред. 1 2 3 4
RSS
Поворот объекта добавленного в классификатор?
 
Спасибо.

Выполнили все согласно алгоритму. Получаем:
mapPolyCount возвращает 1;
mapPointCount возвращает 0;
mapSideDirection djpdhfoftn 0

И соответственно метод mapRotateObject работает НЕ корректно. Привожу код
Код
    int deltax = -300, deltay = 300;
    HOBJ obj=mapCreateSiteObject(hmap, hsite);
    if (obj == 0) {setError("makeArrow mapCreateSiteObject null"); return;}

    DOUBLEPOINT pt;
    pt.X=x1;  pt.Y=y1;

    int t0=mapPolyCount(obj);
    int t1=mapPointCount(obj, t0);
    std::cout<<"t1="<<t1<<" t0="<<t0<<std::endl;

    //get curretn direction angle
    double dAngle=mapSideDirection(obj, t0, t1 );
    std::cout<<dAngle<<" ang="<<ang*180.0/M_PI<<std::endl;

    ang=dAngle-ang;  //formula   alpha = 135-alpha

    // РЕГИСТРАЦИЯ ОБЪЕКТА
    long int ret = mapRegisterObject(obj, 1772, LOCAL_VECTOR); //own object arrow add to classificator
    if (ret == 0){setError("makeArrow mapRegisterObject null"); return;}
    ret = mapAppendPointPlane(obj, x1, y1, 0);
    if (ret == 0){setError("makeArrow mapAppendPointPlane null");}
    ret = mapAppendPointPlane(obj, x1 + deltax/6, y1 + deltay/6, 0);
    if (ret == 0){setError("makeArrow mapAppendPointPlane null");}

    ret = mapRotateObject(obj, &pt, &ang);
    if (ret == 0){setError("makeArrow mapRotateObject null");}

    ret = mapCommitWithPlace(obj);
    if (ret == 0){setError("makeArrow mapCommitWithPlace null");}
Изменено: Анастасия - 21.05.2019 15:01:20
 
Здравствуйте!

Цитата
Анастасия написал:
mapPolyCount возвращает 1;
Код
 // Запрос числа составных частей (подобъектов + 1)
 // info    - идентификатор объекта карты в памяти
 // Если подобъектов нет - возвращает 1 (только объект)
 // При ошибке возвращает ноль

_MAPIMP long int _MAPAPI mapPolyCount(HOBJ info);
В данном случае у объекта отсутствуют подобъекты, поэтому функция mapPolyCount возвращает 1.
Код
 // Запрос числа точек метрики объекта/подобъекта
 // info    - идентификатор объекта карты в памяти
 // subject - номер подобъекта (если = 0, обрабатывается объект)
 //           (если = -1, вернуть общее число точек всех контуров объекта)
 // При ошибке возвращает ноль

_MAPIMP long int _MAPAPI mapPointCount(HOBJ info, long int subject);
Поэтому в данном случае для получения числа точек метрики необходимо в параметре subject передать значение 0:
Код
mapPointCount(obj, 0);
 
Здравствуйте,  Анастасия!

В новой версии ГИС Конструктор добавлена возможность поворота пользовательского знака в виде изображения из классификатора, при использовании отрисовки с помощью библиотеки графических компонентов. Для демонстрации данной возможности был доработан пример myfirst.

Новая версия ГИС Конструктор для Astra Linux SE c описанным выше изменением доступна для скачивания на сайте.

Спасибо!

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



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

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