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

Получение изображения объекта из классификатора с учетом семантик

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

Получаем изображения из классификатора, как разбиралось в теме.
Имеющийся код возвращает изображения в виде "по-умолчанию".

У знака есть семантики, которые влияют на его отображение, например, семантика "Государственная принадлежность" код 1300 (operator.rsc), которая изменяет цвет знака. Как можно получить изображение объекта с учетом такой семантики?
 
Есть еще такие функции -
Код
  // Вывести изображение карты в XImage (массив)
  // hmap  - идентификатор открытых данных
  // imagedesc - параметры области для размещения изображения
  // Описание структуры XIMAGEDESC в maptype.h
  // erase - признак очистки области изображения (если равен -2, то изображение рисуется
  //         поверх имеющегося рисунка без очистки)
  // x,y - координаты левого верхнего угла внутри
  // битовой области XImage для размещения изображения
  // rect - фрагмент для вывода отображения
  // func - функция отображения объекта
  // parm - параметры изображения
  // data - метрика для отображения
  // colors - количество цветов
  // palette - палитра
  // При ошибке в параметрах возвращает ноль

_MAPIMP long int _MAPAPI mapPaintExampleObjectByFuncDataToXImage(HMAP hMap, XIMAGEDESC *imagedesc, long int x, long int y, RECT *rect, long int func,
                                                                 const char *parm, POLYDATAEX* data, long int colors, COLORREF *palette);

_MAPIMP long int _MAPAPI  mapPaintExampleObjectByFuncDataToXImageEx(HMAP hMap, XIMAGEDESC * imagedesc, long int erase, long int x, long int y,RECT * rect,
                                                                    long int func, const char* parm, POLYDATAEX* data);
У структуры POLYDATAEX есть поле  Semantic -

Код
  char *      Semantic;   // Указатель на семантику объекта (SEMANTIC *) или 0
Это указатель на запись семантики объекта, которая может влиять на его вид.

Примеры формирования есть в коде IMLAPI (см. sdk13.zip\imlapi)

s57navy\imlmain.cpp  
Код
_IMLIMP long int _IMLAPI imlPaintExampleEx(long int type, const IMGDRAW * parm, const IMGCONTEXT * context,
                                           HRSC hrsc, const char * semantic)
   ...
   POLYDATAEX  data;

                               // Ident    Length    Code  Type Scale  Value
   unsigned char Semantic[] = { 0xFF, 0x7F,  16, 0,  136, 0,  2,   0,   100, 0, 137, 0,  2,   0,   170, 0};

   data.Semantic   = (char*)semantic;

Можно использовать класс TSemnEdit, включив в проект файлы mapacces\mapsem.cpp и mapacces\semdef.cpp из sdk13.zip
 
Цитата
Oleg Belenkov написал:
Примеры формирования есть в коде IMLAPI (см. sdk13.zip\imlapi)s57navy\imlmain.cpp  Код_IMLIMP long int _IMLAPI imlPaintExampleEx(long int type, const IMGDRAW * parm, const IMGCONTEXT * context,
                                          HRSC hrsc, const char * semantic)
  ...
  POLYDATAEX  data;

                              // Ident    Length    Code  Type Scale  Value
  unsigned char Semantic[] = { 0xFF, 0x7F,  16, 0,  136, 0,  2,   0,   100, 0, 137, 0,  2,   0,   170, 0};

  data.Semantic   = (char*)semantic;
Насколько я понял, в вашем пример берется конкретная семнатика { 0xFF, 0x7F,  16... }. Откуда мне взять все эти циферки для семантики, которая интересует меня "Гос. принадлежность" код 1300?
 
Цитата
Илья Аникин написал:
Откуда мне взять все эти циферки для семантики, которая интересует меня "Гос. принадлежность" код 1300?
Каждому  объекту карты могут быть приписаны характеристики. Например, собственное название или высота объекта. Все эти характеристики описываются в классификаторе. Для кaждой хapaктеpистики может быть создaн клaссификaтоp знaчений. Пpи этом для числовых хapaктеpистик одному коду обычно соответствует  диaпaзон  знaчений (нaпpимеp, шиpинa pеки: до 5м - 1, от 5 до 10 - 2 и т.д.), для  символьных хapaктеpистик одному коду соответствует одно знaчение (мaтеpиaл стpоения: деpево - 1, киpпич - 2 и т.д.).
Помимо пользовательских характеристик, в составе классификатора есть специальные семантики, которые могут влиять на внешний вид (МАСШТАБ ОТОБР.ЗНАКА В ПРОЦЕНТАХ, ЦВЕТ ОТОБРАЖЕНИЯ ЗНАКА RGB, ВЫСОТА ШРИФТА, ТОЛЩИНА ЛИНИИ В ММ и так далее).
В каждом классификаторе для семантики присваивается её КОД и КЛЮЧ. По этим полям Вы можете осуществлять запросы информации.
На странице Классификаторы представлено описание каждого классификатора карты в виде бумажного документа.
Самостоятельно ознакомится со структурой классификатора можно в настольных приложениях через задачу "Редактор классификатора"
Более подробно о классификаторе описано в документе  ГИС "Панорама" ПАРБ.00046-06 Прикладные задачи. Редактор классификатора
С уважением, Демиденко Р.А.
 
Цитата
Сергей Гамов написал:
Не каждого. Про чрезвычайно нужный классификатор operator.rsc на этой странице как раз нет ничего. Можете дополнить страницу?
Добрый день! Классификатор operator.rscz входит в инсталляцию программы ГИС Оператор.
На страничке Классификаторы его нет и дополнять не планируем.

ГИС Оператор содержит средства редактирования оперативной обстановки, разнообразные
классификаторы и библиотеки условных знаков оперативной обстановки, принятые в РФ.
Для создания электронных карт обстановки о чрезвычайных ситуациях поддерживается классификатор, созданный в соответствии с требованиями ГОСТ Р 22.0.10-96.
Изменено: Елена Кузнецова - 17.03.2022 15:37:43
 
Цитата
Елена Кузнецова написал:
Классификатор operator.rscz входит в инсталляцию программы ГИС Оператор
Классификатор входит, но его описание - нет.
 
Цитата
Сергей Гамов написал:
Классификатор входит, но его описание - нет.
По классификатору operator.rsc информация предоставляется по запросу, так как является служебной.

Вы можете на электронную почту  КБ Панорама <panorama@gisinfo.ru> прислать запрос от организации.
Изменено: Елена Кузнецова - 17.03.2022 15:52:15
 
Цитата
Сергей Гамов написал:
От имени какого должностного лица в организации должен быть направлен запрос?
На бланке организации с указанием Вашей должности (не важно).
По почте вышлем необходимую информацию.
Изменено: Елена Кузнецова - 17.03.2022 16:02:00
 
Цитата
Oleg Belenkov написал:
Есть еще такие функции -
Прошу извинить, Вы не могли бы опубликовать рабочий пример с использованием этих функций? А то я попробовал   mapPaintExampleObjectByFuncDataToXImage, так у меня почему-то в XImage вувелся кусочек карты, а не условный знак классификатора, как функцией   mapPaintExampleObjectByFuncToXImage. Видимо, структуру   POLYDATAEX надо заполнять полностью, понимая, что делаешь. Но примеров использования   mapPaintExampleObjectByFuncDataToXImage в /usr/share/gisdesigner/examples не обнаружилось. Я для начала вызвал её с пустой data, установив в ней только   data.MapRsc, рассчитывая на то, что получу изображение значка по умолчанию, как после функции mapPaintExampleObjectByFuncToXImage, чтобы потом уже колдовать с семантиками. Но не взлетело.
Рабочий пример сильно помог бы.
Изменено: Сергей Гамов - 17.03.2022 16:21:56
 
Цитата
Сергей Гамов написал:
Вы же написали, что запрос нужно отправить на e-mail. Так на e-mail или по почте на бланке организации?
Запрос на на e-mail. Диски с информацией вышлем по почте.
Страницы: 1 2 След.
Читают тему (гостей: 1)



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

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