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

Глеб Недосекин (Все сообщения пользователя)

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

Страницы: 1 2 След.
Отображение иконок PNG с альфа каналом, Отображаются квадратные рамки вместо иконок png формата с альфа каналом
 
Здравствуйте, спасибо большое, помогло, задал так: mapSetViewType(hMap, VT_PRINT);
Хотя могу сразу сказать что могут пропасть некоторые слои карты, у меня, например, вода исчезла, надо будет с другими типами "PRINT" проверить.
Отображение иконок PNG с альфа каналом, Отображаются квадратные рамки вместо иконок png формата с альфа каналом
 
Здравствуйте, работал раньше с 13 версией гиса, получалось отрисовать без проблем свои иконки в png формате, перешли на сертифицированную версию 12.5.2 и не всё так гладко пошло.
В 12 гисе пришлось закомментить параметр Rotate у структуры IMGGRAPHICMARKEX, так как его ещё похоже не было.
Вместо png иконок отображаются квадратные рамки, что делаю не так или какие есть нюансы?

P.s. bmp картинки отображаются, но альфа канала нет, выглядит плохо)


void MainMap::drawImageOfObject(HSITE hSite, QString pathSVG, QString pathPNG, DOUBLEPOINT &p, QString color, int rotate, quint8 zoom)
{
   HOBJ hObj = mapCreateSiteObject(hMap, hSite);

   mapRegisterDrawObject(hObj, 1, LOCAL_VECTOR);

   IMGGRAPHICMARKEX graphicMark;
   memset(&graphicMark, 0, sizeof(graphicMark));
   graphicMark.Length = sizeof(graphicMark);

   changeSVGColorAndSaveToPNG(pathSVG, pathPNG, color, rotate);

   QImageReader readerPNG(pathPNG);

   double width = readerPNG.size().width() * 10 / (zoom + 1),
          height = readerPNG.size().height() * 10 / (zoom + 1);

   StrCopy(graphicMark.Name, pathPNG.toStdString().c_str(), sizeof(graphicMark.Name));
   graphicMark.Type = 0;  // Тип файла (0 - PNG, 1 - BMP, 2 - JPG ...
   graphicMark.Width = PIX2MKM((int)width);
   graphicMark.Height = PIX2MKM((int)height);
   graphicMark.PosV = PIX2MKM((int)(height / 2));
   graphicMark.PosH = PIX2MKM((int)(width / 2));
//    graphicMark.Rotate = 1;  // Установка возможности поворота

   mapAppendDraw(hObj, IMG_GRAPHICMARK, (char *)&graphicMark);
   mapAppendPointPlane(hObj, p.x, p.y);
   mapAppendPointPlane(hObj, p.x, p.y);

   mapCommitObject(hObj);
   mapFreeObject(hObj);
}
Изменено: Глеб Недосекин - 06.02.2023 16:19:41
Программное создание объекта из растра или вектора
 
Спасибо большое за ответы, я сделал масштабирование перерисовкой объектов при изменении приближении и отдалении на карте по итогу (не самый лучший вариант, особенно с приростом кол-ва объектов, но на данный момент достаточно).
Вот только столкнулся с другой проблемой.
Я добавляю картинки на карту и есть случаи когда я добавил картинку по адресу, например, "/home/user/img.png", затем изменяю саму картинку и добавляю новую с этого же адреса (на данный момент она уже выглядит по другому). Так вот почему-то все эти картинки с одного адреса добавляются как последняя отрисованная.

Код добавления картинки:
[CODE] hObj = mapCreateSiteObject(hMap, hSiteObjects);

   mapRegisterDrawObject(hObj, 1, LOCAL_VECTOR);

   IMGGRAPHICMARKEX graphicMark;
   memset(&graphicMark, 0, sizeof(graphicMark));
   graphicMark.Length = sizeof(graphicMark);

   QString addrPNG = changeSVGColorAndSaveToPNG(dataObj.pathObj, dataObj.color, dataObj.course);

   QImageReader readerPNG(addrPNG);

   double width = readerPNG.size().width() * 10 / (scaleFactor + 1),
          height = readerPNG.size().height() * 10 / (scaleFactor + 1);

   StrCopy(graphicMark.Name, addrPNG.toStdString().c_str(), sizeof(graphicMark.Name));
   graphicMark.Type = 0;  // Тип файла (0 - PNG, 1 - BMP, 2 - JPG ...
   graphicMark.Width = PIX2MKM((int)width);
   graphicMark.Height = PIX2MKM((int)height);
   graphicMark.PosV = PIX2MKM((int)(height / 2));
   graphicMark.PosH = PIX2MKM((int)(width / 2));
   graphicMark.Rotate = 1;  // Установка возможности поворота

   mapAppendDraw(hObj, IMG_GRAPHICMARK, (char *)&graphicMark);
   mapAppendPointPlane(hObj, p.x, p.y);
   mapAppendPointPlane(hObj, p.x, p.y);

   mapCommitObject(hObj);
   mapFreeObject(hObj);[/CODE]
Программное создание объекта из растра или вектора
 
Добрый день, масштабирование не сработало, карта типа "map" только, могу выслать Вам её и картинку в png если нужно.
Если не сложно, подскажите ещё, пожалуйста, как просмотреть все значки сохранённые в ресурсном файле (если правильно понимаю rsc)?
Программное создание объекта из растра или вектора
 
Здравствуйте, спасибо за ответ, добавить текст получилось, а вот масштабируемость не получилось задать, в чём может быть проблема или возможны ещё способы?

Для масштабирования пробовал добавлять строку "mapSetObjectScale(hObj, 1);" в свой код выше по очереди перед строками: "mapCommitObject(hObj);", "mapFreeObject(hObj);", "mapRegisterDrawObject(hObj, 1, LOCAL_VECTOR);".
Пробовал 0 и 1 передавать, результат одинаковый, объект фиксированного размера.
Программное создание объекта из растра или вектора
 
Здравствуйте, подскажите, пожалуйста, как можно в виде кода добавлять картинки типа SVG (если это возможно).
Так же очень интересует как к такому объекту добавить подпись на карте и управлять масштабированием (размер объекта должен уменьшаться при приближении карты).
То что я смог осилить для добавления своей картинки на карту, но это png, не масштабируется и нет подписи:[CODE] hObj = mapCreateSiteObject(hMap, hSite);

   // -- image begin

   mapRegisterDrawObject(hObj, 1, LOCAL_VECTOR);

   IMGGRAPHICMARKEX graphicMark;
   memset(&graphicMark, 0, sizeof(graphicMark));
   graphicMark.Length = sizeof(graphicMark);
   StrCopy(graphicMark.Name, "image.png", sizeof(graphicMark.Name));
   graphicMark.Type = 0;  // Тип файла (0 - PNG, 1 - BMP, 2 - JPG...
   graphicMark.Width = PIX2MKM(640);
   graphicMark.Height = PIX2MKM(210);
   graphicMark.PosV = PIX2MKM(0);
   graphicMark.PosH = PIX2MKM(0);
   graphicMark.Rotate = 1;  // Установка возможности поворота

   mapAppendDraw(hObj, IMG_GRAPHICMARK, (char *)&graphicMark);

   // -- image end

   // Задание семантики объекта
   mapAppendSemantic(hObj, 31104, dataObj.name.toStdString().c_str(), dataObj.name.length());
   mapAppendPointPlane(hObj, p.x, p.y);
   mapCommitObject(hObj);
   mapFreeObject(hObj);[/CODE]
Проблема открытия карты для пользователя ALD в Astra Linux 1.5 SE
 
Понял, спасибо, если будет информация напишите, пожалуйста, а так считаю вопрос полностью закрытым.
Для "автонастройки" на определённый уровень напишу скрипт.
Проблема открытия карты для пользователя ALD в Astra Linux 1.5 SE
 
Последнее что хочу узнать по данной проблеме, как настроить так, чтобы можно было работать на любом уровне?
Проблема открытия карты для пользователя ALD в Astra Linux 1.5 SE
 
Здравствуйте, всё таки помощь [URL=http://gisweb.ru/forum/user/6910/]Александра Савелова[/URL] помогла, в первый раз при проверке у меня был какой-то не такой файл 95-grdnt.rules, так что спасибо большое!
Всё что написано в файле /etc/udev/rules.d/95-grdnt.rules, после решения проблемы:
[CODE]SUBSYSTEM=="usb", ACTION=="add", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="0a89", ATTR{idProduct}=="0008", MODE="0666" MACLABEL="0:0:equ"
SUBSYSTEM=="usb", ACTION=="add", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="0a89", ATTR{idProduct}=="0008", MODE="0666" PDPL="3:0:0:0!:"
SUBSYSTEM=="usb_device", ACTION=="add", ATTR{idVendor}=="0a89", ATTR{idProduct}=="0008", MODE="0666" MACLABEL="0:0:equ"
SUBSYSTEM=="usb_device", ACTION=="add", ATTR{idVendor}=="0a89", ATTR{idProduct}=="0008", MODE="0666" PDPL="3:0:0:0!:"[/CODE]Дальше не забываем применить изменения командой:[CODE]sudo udevadm control --reload-rules
[/CODE]Так же настраиваем уровень для девайса Guardant (Ваш ключ для карты):
[CODE]astra@astra:~$ lsusb
Bus 002 Device 005: ID 0a89:0008

astra@astra:~$ sudo pdpl-file 3:0:0:ccnr /dev/bus/
astra@astra:~$ sudo pdpl-file 3:0:0:ccnr /dev/bus/usb
astra@astra:~$ sudo pdpl-file 3:0:0:ccnr /dev/bus/usb/002[/CODE]После этого ключ следует вручную извлечь и воткнуть обратно в Вашу ЭВМ и всё должно работать под уровнем 3.
Проблема открытия карты для пользователя ALD в Astra Linux 1.5 SE
 
sudo lsusb:[CODE]Bus 002 Device 003: ID 0a89:0008
[/CODE]pdp-ls -M /dev/bus/usb/002:
[CODE]crw-rw-r-T--- 1 root root Уровень_0:Низкий:Нет:0x0 001
crw-rw-r-T--- 1 root root Уровень_0:Низкий:Нет:0x0 002
crw-rw-r-T--- 1 root root Уровень_0:Низкий:Нет:0x0 003
crw-rw-r-T--- 1 root root Уровень_0:Низкий:Нет:0x0 004[/CODE]
Страницы: 1 2 След.



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

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