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

Владимир Егоров (Все сообщения пользователя)

Поиск  Пользователи  Правила  Войти
Форум » Пользователи » Владимир Егоров
Выбрать дату в календареВыбрать дату в календаре

Страницы: Пред. 1 2 3 4 5 6 7 8 9 10 11 ... 21 След.
Один объект на пользовательской карте нужно рисовать поверх остальных. Как этого добиться., Один объект на пользовательской карте нужно рисовать поверх остальных. Как этого добиться.
 
Я на пользовательской карте ничего не рисую.
Я могу создать на пользовательской карте некий объект (по ключу или коду+локализации) из классификатора (относящийся к некоторому слою классификатора), и он будет отрисован при вызове mapPainToXImage.
Объект создаётся последовательностью вызовов mapCreateSiteObject/mapRegisterObject/mapCommitObject (в точности названия функций сейчас не напишу)

Если же речь идёт о каком-то другом способе именно отрисовки объекта, да ещё и с указанием слоя классификатора, то я так не умею и в таком методе не разбираюсь.
Изменено: Владимир Егоров - 22.05.2019 22:47:07
Один объект на пользовательской карте нужно рисовать поверх остальных. Как этого добиться., Один объект на пользовательской карте нужно рисовать поверх остальных. Как этого добиться.
 
[QUOTE]Елена написал:
Или нужно было еще одну пользовательскую карту создавать на основе region.rsc , добавлять ее к основной последней и рисовать в нее этот объект?[/QUOTE]
Так точно сработает.

[QUOTE]Елена написал:
Выбираю слой пользовательской карты с наибольшим порядком вывода , т е в слой 8 Дорожная сеть (mapGetRscSegmentOrder=8) и рисую на нем этот объект, остальные рисую в слой 6 Административный район (mapGetRscSegmentOrder=6)[/QUOTE]
А это разве не относится к слоям классификатора и к объектам, входящим в эти слои. Ну в смысле а как у вас получается рисовать произвольные объекты в слои классификатора?
Мне кажется mapGetRscSegmentOrder есть смысл использовать только чтобы понять, в каком порядке объекты из одного слоя классификатора отрисуются по отношению к объектам из другого слоя классификатора в рамках одного пользовательского слоя (sit)
Изменено: Владимир Егоров - 21.05.2019 13:07:05
Размер изображения при добавлении из классификатора имеет не корректный размер, Масштабирование объектов на карте
 
Я ж говорю, условно линейкой померяли (у нас маленькие экраны на embedded устройствах).

Для Desktop, если у вас Linux с оконной системой X, может пригодится:
[CODE]$ xrandr | grep ' connected ' | grep ' primary ' [/CODE]

Пример вывода:

[CODE]DVI-D-1 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 510mm x 287mm [/CODE]
Размер изображения при добавлении из классификатора имеет не корректный размер, Масштабирование объектов на карте
 
Нам известен размер экрана монитора в миллиметрах (мы его в переменных окружения задаём, размер сами чуть ли не линейкой измеряли):

[CODE]void SetupScreenSettings(){
   QSize screenSizePix = QGuiApplication::primaryScreen()->geometry().size();
   long scWidth = static_cast<long>(screenSizePix.width());
   long scHeight =static_cast<long>(screenSizePix.height());
   panorama::mapSetScreenImageSize(scWidth, scHeight);
   QString env = QProcessEnvironment::systemEnvironment().value(envScreenWidthInMM, "");
   bool ok = false;
   if (env.isEmpty()){
       return;
   }
   double scWidthMM = static_cast<double>(env.toInt(&ok));
   if (!ok || (env.toInt() == 0)){
       return;
   }
   env = QProcessEnvironment::systemEnvironment().value(envScreenHeightInMM, "");
   ok = false;
   if (env.isEmpty()){
       return;
   }
   double scHeightMM = static_cast<double>(env.toInt(&ok));
   if (!ok || (env.toInt() == 0)){
       return;
   }
   double scHorPrecision = static_cast<double>(scWidth * 1000) / (scWidthMM);
   double scVerPrecision = static_cast<double>(scHeight * 1000) / (scHeightMM);
   panorama::mapSetScreenPrecisionEx(scHorPrecision, scVerPrecision);
}
[/CODE]

Ну в смысле мы вот так настраиваем параметры при старте, может поможет.
Изменено: Владимир Егоров - 13.05.2019 11:41:34
[MAPAPI] Отрисовка значка с прозрачным фоном из классификатора
 
Для просто объектов на пользовательском слое можно добавить семантику "Вес цвета объекта в процентах" со значением 100 - и получим объект с прозрачным фоном вместо условного белого.

На версии 12.5.0 это работает (фон прозрачный), на версии 12.3.1 (и, возможно, более ранних) -  фон остаётся белым, и становится более прозрачным в зависимости от значения семантики.

И надеюсь что так оно и останется (как в 12.5.0).

P.S. для некоторых объектов цвет фона становился прозрачным не при значении 100, а при значении 95, к примеру.
Изменено: Владимир Егоров - 26.04.2019 17:25:06
Копирование подложки в XIMAGEDESC и последующая прорисовка на ней пользовательских сайтов
 
К вопросу не относится, но.
Зачем вы копируете данные из QImage в XImageDesc ?? Вы же можете напрямую в QImage писать. То есть заставить вызов mapPaint* писать сразу в QImage.

В данном конкретном случае вы можете просто поле ximagedesc.Point выставить в bufferImage.constBits с const_cast-ом. Ну и поля в ximagedesc все правильно назначить, как в QImage
Изменено: Владимир Егоров - 29.03.2019 12:16:26
[MAPAPI] Получение семантик, относящихся к конкретному объекту, Как получить список семантик объекта идентичный списку из редактора классификатора с помощью mapapi
 
Ещё момент есть, не сразу до меня дошло.

Когда Вы используете функцию :
[CODE] // Заполнить структуру описания семантической характеристики
 // по коду семантики
 // hRsc - идентификатор классификатора карты
 // code - внешний код семантики
 // структура RSCSEMANTICEX описана в maptype.h
 // При ошибке возвращает ноль

_MAPIMP  long int _MAPAPI mapGetRscSemanticExByCode(HRSC hRsc,RSCSEMANTICEX * semtype,
                                                   long int code);[/CODE]то получаете общее описание семантики, без привязки к объекту (в параметрах же объект классификатора не указан).

То есть если Вам надо получить список семантик конкретного объекта и для каждой семантики знать, является ли она обязательной, влияет ли она на внешний вид объекта, или является возможной  (поле [B]Enabled [/B]структуры [I]RSCSEMANTICEX)[/I], то нужно дополнительно вызвать функцию:
[CODE] // Запросить использование семантики для данного объекта -
 // incode - внутренний код (порядковый номер)объекта
 // semanticcode - код семантики
 // hRsc - идентификатор классификатора карты
 // Возвращает значимость семантики  см. maptype.h (SEMANTIC_FOR_OBJECT )

_MAPIMP  long int  _MAPAPI mapGetRscSemanticObjectUsed(HRSC hRsc,long int incode,
                                     long int semanticcode);
[/CODE]
В итоге для конкретного объекта получается связка mapGetRscSemanticObjectCount(ALL_SEMANTICS) -> mapGetRscSemanticObjectCodeList -> mapGetRscSemanticExByCode(для каждой семантики из списка) и mapGetRscSemanticObjectUsed (чтобы вычислить поле [B]Enabled[/B] у структуры RSCSEMANTICEX).
С фильтрацией всех служебных семантик (у которых код > SEMHIDEFIRST, смотри предыдующие посты) получится почти как в ГИС Операторе в просмотрщике классификаторов.
[MAPAPI] Получение семантик, относящихся к конкретному объекту, Как получить список семантик объекта идентичный списку из редактора классификатора с помощью mapapi
 
Нашёл, спасибо.

Там правда диапазоны указаны:
[CODE]// СЛУЖЕБНЫЕ СЕМАНТИКИ НЕ РЕДАКТИРУЮТСЯ !
#define SEMHIDEFIRST        32798  // НАЧАЛО ДИАПАЗОНА СЛУЖЕБНЫХ СЕМАНТИК
#define SEMHIDELAST         32800  // КОНЕЦ  ДИАПАЗОНА СЛУЖЕБНЫХ СЕМАНТИК
[/CODE]

[CODE]// СЛУЖЕБНЫЕ СЕМАНТИКИ НЕ РЕДАКТИРУЮТСЯ !
#define SEMHIDEFIRST2       32850  // НАЧАЛО ДИАПАЗОНА СЛУЖЕБНЫХ СЕМАНТИК
#define SEMHIDELAST2        32855  // КОНЕЦ  ДИАПАЗОНА СЛУЖЕБНЫХ СЕМАНТИК[/CODE]
По крайней мере эти диапазоны я могу с чистой совестью не показывать, ещё раз спасибо.
[MAPAPI] Получение семантик, относящихся к конкретному объекту, Как получить список семантик объекта идентичный списку из редактора классификатора с помощью mapapi
 
Спасибо.
[QUOTE]код начала диапазона служебных семантик[/QUOTE]

А где его взять, не подскажете?
Он где-то задефайнен или описан в документации ?

А то я нашёл кучу макросов в maptype.h, Вы про EXTSEMANTIC ??
[CODE]#define EXTSEMANTIC 31001 // НАЧАЛО ДИАПАЗОНА СЕРВИСНЫХ СЕМАНТИК
[/CODE]Или всё что больше 32800 ?
[CODE]#define OBJEXCODEINSEMANTIC 32800 // КЛАССИФИКАЦИОННЫЙ КОД ОБЪЕКТА
#define SEMOBJEXCODE        32800  // КЛАССИФИКАЦИОННЫЙ КОД ОБЪЕКТА
[/CODE]
[MAPAPI] Получение семантик, относящихся к конкретному объекту, Как получить список семантик объекта идентичный списку из редактора классификатора с помощью mapapi
 
Здравствуйте.

Я сейчас пишу редактор обстановок.
Для редактирования объекта мне необходимо из классификатора получить список семантик, которые можно (или обязательно) добавлять к создаваемому/редактируемому объекту.

Я использую следующие функции из rscapi.h:

[CODE]_MAPIMP long int _MAPAPI mapGetRscSemanticObjectCount( HRSC hRsc,long int incode,
                                                 long int importance);

_MAPIMP long int _MAPAPI mapGetRscSemanticObjectCode(HRSC hRsc,long int incode,
                                                    long int number,long int importance);
[/CODE]
Для примера открываю классификатор в Гис Оператор, выбираю один объект и сравниваю список семантик в ГИС Оператор с списком семантик, получаемый с помощью выше указанных функций из rscapi (для ALL_SEMANTIC или POSSIBLE + MUST).
И эти списки не идентичны.
Двух семантик, показываемых в ГИС Оператор не хватает в списке из rscapi (32798 32799)
17 (!) семантик есть в списке из rscapi но отсутствуют в ГИС Оператор:
[CODE] 32801, 32802, 32803, 32804, 32805, 32809, 32810, 32811, 32812, 32850, 32851, 32852, 32853, 32854, 32855, 32856, 32857
[/CODE]Нашёл упоминание зарезервированных семантик (в документации формата RSC) -часть из 17 семантик являются зарезервированными, а часть - нет. [URL=http://gistoolkit.ru/download/classifiers/formatrsc.pdf]13-14 страница[/URL]. Или в документации не полный список зарезервированных семантик?

Каким образом ГИС Оператор получает информацию о том, какие семантики относятся к объекту, а какие нет?
Страницы: Пред. 1 2 3 4 5 6 7 8 9 10 11 ... 21 След.



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

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