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

Редактирование рамки rsw

Поиск  Пользователи  Правила  Войти
Форум » Linux » Средства разработки ГИС-приложений для Linux
Страницы: 1
RSS
Редактирование рамки rsw
 
Добрый день!
Подскажи, пожалуйста, как можно изменить рамку rsw?
Пытаюсь использовать функцию mapSetRstBorder, она возвращает 0, соответственно рамка не меняется. Может быть есть какая-то особенность создания объекта карты (HOBJ), который передается в качестве аргумента функции? Или нужно дополнительно что-то использовать?
 
Для установки рамки растра предназначены следующие функции (rstapi.h):
Код
  // Установить рамку растра по метрике замкнутого объекта
  // Замкнутый объект должен иметь не менее 4-х точек
  // hMap       - идентификатор открытых данных
  // number     - номер файла в цепочке
  // info       - замкнутый объект карты
  // После выполнения функции отображение растра ограничится заданной областью
  // При ошибке возвращает 0

_MAPIMP long int _MAPAPI mapSetRstBorder(HMAP hMap, long int number, HOBJ info);

  // Установить рамку растра по метрике замкнутого объекта
  // Замкнутый объект должен иметь не менее 4-х точек
  // hMap       - идентификатор открытых данных
  // number     - номер файла в цепочке
  // info       - замкнутый объект карты
  // flagSubject- флаг использования подобъектов объекта при установке рамки растра (0/1)
  //              0 - в качестве рамки растра устанавливается контур объекта
  //              1 - в качестве рамки растра устанавливается контур объекта с подобъектами
  // После выполнения функции отображение растра ограничится заданной областью
  // При ошибке возвращает 0

_MAPIMP long int _MAPAPI mapSetRstBorderEx(HMAP hMap, long int number, HOBJ info,
                                           long int flagSubject);
Требования к объекту указаны в комментариях к функции:
  • объект д.б. замкнутым (тип объекта - линейный или площадной),
  • количество точек контура объекта не менее 4.
Также функция может вернуть ноль, если некорректны первые два параметра: hMap и number.
 
Спасибо за ответ.
Объект точно замкнутый, тип объекта local_square, с количеством точек тоже все нормально. Была даже попытка получить объект из mapGetRstBorder, а потом изменить точки, но результат тот же.
Параметры hmap и number точно правильные, так как с ними корректно работает функция mapShowRstByBorder.
Может быть Вы можете привести рабочий пример?

п.с. используется gisdesigner 12.6.1
Изменено: Анна - 02.03.2022 17:41:08
 
Цитата
Анна написал:
Спасибо за ответ. Объект точно замкнутый, тип объекта local_square, с количеством точек тоже все нормально. Была даже попытка получить объект из mapGetRstBorder, а потом изменить точки, но результат тот же.Параметры hmap и number точно правильные, так как с ними корректно работает функция mapShowRstByBorder.Может быть Вы можете привести рабочий пример?
Добрый день!
Приносим извинение, в ближайшие время наш специалист даст ответ.
 

Здравствуйте!

Проверили работу функции mapSetRstBorder на карте Noginsk_3857, входящей в состав тестовых данных ГИС Конструктора. Установку рамки растра выполняли для объекта с уникальным номером 458 — город Ногинск. Функция  mapSetRstBorder возвращает 1, растр ограничивается контуром установленного объекта.  

При применении функции  mapSetRstBorder на Ваших данных необходимо проверить, чтобы растр накладывался на объект, который будет установлен в качестве рамки растра.

Код
HOBJ hobj = mapCreateObject(hmap, 1, IDDOUBLE2, 0);
if(hobj)
{
  if (mapReadObjectByKey(hmap, hmap, hobj, 1, 458))
  {    
    long int retSetRstBorder = mapSetRstBorder(hmap, 1, hobj);
    qDebug() << "mapSetRstBorder = " << retSetRstBorder;
  }

  mapFreeObject(hobj);
}

Изменено: Эдуард Портнягин - 05.03.2022 11:11:20
 
Добрый день!
Эдуард, спасибо за ответ и тем более за пример, очень помогло.  
Страницы: 1
Читают тему (гостей: 1)



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

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