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

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

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

Страницы: Пред. 1 ... 8 9 10 11 12 13 14 15 16 17 18 ... 69 След.
ГИС Оператор: сохранение в файл определенного места карты по известным координатам.
 
Здравствуйте!

Для сохранения изображения области карты по двум координатам (в метрах) в файл можно воспользоваться следующим примером кода:[CODE]#include <QApplication>
#include <QImage>

#include "mapapi.h"
#include "qdmcmp.h"

int main(int argc, char **argv)
{
 QApplication app(argc, argv);
 QDMapView();  // инициализация функций принтерно-растрового вида

 HMAP mapHandle = mapOpenAnyData(WTEXT("/usr/share/gisdesigner/examples/Data/Планы городов/Noginsk/Noginsk.sit"));
 if (!mapHandle)  
   return 1;

 double x1 = 6200000;  // в метрах
 double y1 = 7460000;
 double x2 = 6190000;
 double y2 = 7470000;

 // перевод в пиксели
 mapPlaneToPicture(mapHandle, &x1, &y1);
 mapPlaneToPicture(mapHandle, &x2, &y2);

 int paintWidthInPixels = abs(x2 - x1);
 int paintHeightInPixels = abs(y2 - y1);

 RECT drawRectInPixels;
 drawRectInPixels.left = x1;
 drawRectInPixels.top = y1;
 drawRectInPixels.right = x1 + paintWidthInPixels;
 drawRectInPixels.bottom = y1 + paintHeightInPixels;
 
 int paintDepthInBits = 32;

 char *paintMemory = AllocateTheMemory(paintWidthInPixels * paintHeightInPixels * paintDepthInBits / 8);
 if (paintMemory)
 {
   XIMAGEDESC xImageDesc;
   xImageDesc.Point = paintMemory;
   xImageDesc.Width = paintWidthInPixels;
   xImageDesc.Height = paintHeightInPixels;
   xImageDesc.Depth = paintDepthInBits;
   xImageDesc.CellSize = xImageDesc.Depth / 8;
   xImageDesc.RowSize = paintWidthInPixels * xImageDesc.CellSize;

   if (mapPaintToXImage(mapHandle, &xImageDesc, 0, 0, &drawRectInPixels))
   {
     QImage image((uchar *)paintMemory, paintWidthInPixels, paintHeightInPixels, QImage::Format_RGB32);
     image.save("/tmp/out.png");
   }
 }
 
 FreeTheMemory(paintMemory);

 mapCloseData(mapHandle);
 mapCloseMapAccess();

 return 0;
}
[/CODE]pro-файл:[CODE]SOURCES += main.cpp

INCLUDEPATH += /usr/include/gisdesigner/
LIBS += -lmapcomponents -lqdmapacces
[/CODE]Дополнительно в состав ГИС Конструктор входит набор тестовых примеров, демонстрирующих базовый функционал работы с картами (каталог /usr/share/gisdesigner/examples/).
Например, в примерах myfirst и mapview реализовано отображение карты с помощью готового визуального компонента QDMapView и с помощью функций интерфейса MAPAPI соответственно.
Медленная работа функций mapOpenAnyData и mapAppendData
 
Здравствуйте!

USB-ключ может быть проброшен для использования в виртуальную машину - при этом необходимо учитывать, что после проброса он будет недоступен на хостовой операционной системе.
Ошибка при сборке программы
 
Здравствуйте!

Если проблема возникает на этапе компиляции, то информация об ошибках должна попадать в стандартный вывод - пожалуйста, проанализируйте данную информацию.
Не работает свойство transparency у кнопок расположенных над отрисованной картой
 
Здравствуйте!

Для уточнения причины данного поведения приведите, пожалуйста, пример используемого исходного кода.
ГИС Оператор: сохранение в файл определенного места карты по известным координатам.
 
Здравствуйте!

Привожу приблизительный порядок действий для решения задачи:
- получить информацию о паспортных данных карты (в том числе, имена номенклатурных листов карты) можно с помощью функции mapGetMapInfoPro (mapapi.h):[CODE] // Запросить паспортные данные векторной карты
 // Структуры MAPREGISTER и LISTREGISTER описаны в mapcreat.h
 // hmap - идентификатор открытых данных
 // sheetnumber - номер листа карты для
 // которого запрашиваются паспортные данные
 // При ошибке возвращает ноль
_MAPIMP long int _MAPAPI mapGetMapInfoPro(HMAP hmap, long int sheetnumber, MAPREGISTEREX *map, LISTREGISTER *sheet,
                                         SHEETNAMES * sheetnames);[/CODE]- вывод текста можно реализовать путем создания объектов типа "Подпись" на временной карте. Для создания временной карты используются функции семейства mapCreateTempSite() (mapapi.h) - например, mapCreateAndAppendTempSitePro.
Более подробное создание пользовательских карт описано в разделе 3.8.3 "Открытие и создание пользовательских карт" Руководства программиста ([URL=https://gistoolkit.com/download/doc/gisdesigner_prog.pdf]https://gistoolkit.com/download/doc/gisdesigner_prog.pdf[/URL]);[CODE] // Создать временную пользовательскую карту по открытой карте
 // hmap     - идентификатор открытых данных
 // rscname  - полное имя файла ресурсов, если равно 0 - выбирается
 //            из открытой карты
 // inmemory - признак создания карты в оперативной памяти или 0
 // Файлы карты размещаются в рабочей директории системы
 // и имеют уникальные имена, генерируемые автоматически
 // При закрытии пользовательской карты все файлы данных автоматически удаляются
 // Если параметр inmemory не равен 0, то все данные хранятся только в оперативной памяти
 // и освобождаются при закрытии карты
 // Возвращает идентификатор открытой пользовательской карты
 // При ошибке возвращает ноль
_MAPIMP HSITE _MAPAPI mapCreateAndAppendTempSitePro(HMAP hMap, const WCHAR *rscname, long int inmemory);[/CODE]- создать объект для вывода текстовой информации можно с помощью функций mapCreateObject(), mapRegisterObject(), mapCommitObjec() (mapapi.h). Более подробно создание и редактирование объектов описано в разделе 3.8.16 "Редактирование объектов" Руководства программиста.
Для создания объекта, вид которого не описан в классификаторе, объект регистрируется как графический с помощью функции mapRegisterDrawObject() (mapapi.h). Более подробно создание и редактирование объектов описано в разделе 3.8.18 "Создание графических объектов на карте" Руководства программиста. Пример создания графического объекта приведен в тестовом приложении myfirst из состава инсталляции ГИС Конструктор.
- формирование выходного изображения области карты производится с помощью семейства функций mapPaintToXImage() (mapapi.h). Более подробно формирование изображения карты описано в разделе 3.8.4 "Управление визуализацией и печатью" Руководства программиста и примере mapview из состава инсталляции ГИС Конструктор.[CODE] // Вывести изображение карты в XImage (массив)
// Описание структуры XIMAGEDESC в maptype.h
// hmap - идентификатор открытых данных
// x,y - координаты левого верхнего угла внутри
// битовой области XImage для размещения изображения
// rect - выводимый фрагмент карты
// При ошибке в параметрах возвращает ноль
_MAPIMP long int _MAPAPI mapPaintToXImage(HMAP hmap, XIMAGEDESC *imagedesc, long int x, long int y, RECT *rect);[/CODE]- полученный образ изображения карты в формате XImage можно сохранить в файле с помощью класса QImage библиотек Qt. Пример кода:[CODE]if (mapPaintToXImage(MapHandle, &xImageDesc, 0, 0, &rectDraw))
{        
 QImage image((uchar *)BitMap, cw, ch, QImage::Format_RGB32);        
 image.save("/tmp/output.png");
}[/CODE]
Изменено: Александр Савелов - 22.09.2022 11:48:42 (Добавлено сохранение изображения карты в формате XImage в файл)
Медленная работа функций mapOpenAnyData и mapAppendData
 
Здравствуйте!

Обновленная версия ГИС Конструктор для ОС Astra Linux SE доступна для скачивания на нашем сайте ([URL=https://gisinfo.ru/download/download_linux.htm#5]https://gisinfo.ru/download/download_linux.htm#5[/URL]).
Ошибка построения MTW при использовании mapMessageEnable(0)
 
Здравствуйте!

Привожу более сжатый вариант ответа на вопрос о поведении функции построения матрицы по карте mapBuildMtwwUn() при включенном выводе сообщений об ошибках на экран ("выключенный mapMessageEnable(0)"):
- при запуске функции в отдельном потоке вывод сообщения об ошибке приведет к завершению приложения в связи с особенностями использования библиотек Qt. Более подробное описание причины и обходные пути использования приведены выше. В дальнейшем планируем доработать функцию, чтобы она корректно выводила сообщение на экран в отдельном потоке;
- на текущий момент поддерживается актуальная версия ГИС Конструктор 14 - проверки выполняются на данной версии.
Функции отображения трёхмерных карт
 
Здравствуйте!

Прошу прощения за задержку - реализация примера в завершающей стадии, в ближайшее время обновим версию ГИС Конструктор с включенным в состав примером отображения 3D-модели. По готовности оповестим Вас отдельно в данной теме.
Программное создание условного знака, который сохраняет размеры при изменении масштаба карты
 
Здравствуйте!

Поддержка отображения рамки с прозрачным фоном графического объекта типа "Подпись" войдет в состав в следующей версии ГИС Конструктор - ориентировочно на следующей неделе.
Сборка примеров imlapi из sdk14_linux.zip
 
Добрый день!

Обновили SDK для разработки прикладных задач для ГИС Оператор SE и ГИС Панорама для Linux ([URL=https://gisinfo.ru/download/download_linux.htm#13]https://gisinfo.ru/download/download_linux.htm#13[/URL]):
- добавили в файл основного проекта сборку библиотек программируемых знаков iml;
- расширили readme с описанием порядка сборки и использования прикладных задач и библиотек iml.
Страницы: Пред. 1 ... 8 9 10 11 12 13 14 15 16 17 18 ... 69 След.



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

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