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

XIMAGEDESC - получение изображения

Поиск  Пользователи  Правила  Войти
Форум » Настольные приложения » GIS ToolKit, GIS ToolKit Active, ГИС Конструктор для Windows
Страницы: Пред. 1 2 3 4
RSS
XIMAGEDESC - получение изображения
 
https://disk.yandex.ru/d/VylRoXvaX4EF7g
Вот тут под Windows - карта reg_russia.sitx  Поставил 14 тыс x 14 тыс изображение. Все пусто.
Добавляю я в проекте карту, что бы вместе с компиляцией карта в целевой каталог автоматически бы копировалось.  
 
Да, нашел я Вашу карту. Но она не открывается. Может быть вообще все проблемы в том, что все функции корректно работают только с USB ключом?
Изменено: Денис Вицко - 11.07.2022 09:19:38 (исправил вставку картинок)
 
Цитата
Alexander Volovikov написал:
Может быть вообще все проблемы в том, что все функции корректно работают только с USB ключом?

Лицензионный ключ проверяется только при открытии карты. Если карта открылась, все функции будут с ней работать.
Без ключа (в режиме ознакомления) открываются не все карты.

Цитата
Alexander Volovikov написал:
Добавляю я в проекте карту, что бы вместе с компиляцией карта в целевой каталог автоматически бы копировалось.
Интересное решение...



Добавил в пример установку масштаба карты по размерам картинки.

 
Спасибо.
 
Добрый. Я перевел Ваш проект под Linux + Net.core. Код, один в один.
Я получаю пустой BMP файл.

https://disk.yandex.ru/d/ykaNH7q2C8KVIg



Функция mapViewImageToXImage возвращает в указатель xImage.Point - массив заполненный 255 значением (белый). Причем, я пробовал все карты, которые входят в комплект. Под Windows этот же код, работает без нареканий.
Среда:
Код
dotnet --info
.NET SDK (reflecting any global.json):
 Version:   6.0.301
 Commit:    43f9b18481

Runtime Environment:
 OS Name:     linuxmint
 OS Version:  20.3
 OS Platform: Linux
 RID:         linux-x64
 Base Path:   /usr/share/dotnet/sdk/6.0.301/

Host (useful for support):
  Version: 6.0.6
  Commit:  7cca709db2

.NET SDKs installed:
  6.0.301 [/usr/share/dotnet/sdk]

.NET runtimes installed:
  Microsoft.AspNetCore.App 6.0.6 [/usr/share/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.NETCore.App 6.0.6 [/usr/share/dotnet/shared/Microsoft.NETCore.App]

Вызов всех функций исправлен на:
Код
CallingConvention = CallingConvention.Cdecl

Для проверки, нужно:
1) Скачать SDK https://docs.microsoft.com/en-us/dotnet/core/install/linux-scripted-manual#scripted-install
2) Скомпиллировать
Код
dotnet build ConsoleApp1.sln
3) Запустить
Код
dotnet ConsoleApp1.dll 

Карта открыта: /home/valex/RiderProjects/ConsoleApp1/ConsoleApp1/bin/Debug/net6.0/military.sit
Создан класс отображения
Формирование изображения выполнено!
Изображение выгружено в XImage!
Выполнено успешно!
Press any key...
Изменено: George - 15.07.2022 15:04:41
 
Так же, хочу добавить, что провел еще один эксперимент. Я скачал оследний SDK gisdesigner14.x64.ubuntu20.zip c Вашего сайт. Из Deb файла взял все библиотеки usr/lib
Далее, в примере исправил название файла
Код
private const string LibGisAccess = @"libqdmapacces.so";

И запустил пример. Так же , получил пустой BMP файл.
 
Добрый день!

Цитата
Alexander Volovikov написал:
Функция mapViewImageToXImage возвращает в указатель xImage.Point - массив заполненный 255 значением (белый). Причем, я пробовал все карты, которые входят в комплект. Под Windows этот же код, работает без нареканий.

Используемые Вами функции работают корректно - и в Windows, и в Linux.
Ранее я Вам давал пример их использования в приложении на Qt.
Прикладываю это же приложение, адаптированное под Linux.
Изображение карты формируется и сохраняется в BMP без проблем.

Исследовать возможности технологий .Net по работе с неуправляемым кодом и использованием стандартов API в Linux мы не имеем возможности.
Надеемся на понимание.

Не знаю, чем вызван столь необычный стек технологий для разработки под Linux, отговаривать Вас я не берусь, но, как я уже как-то Вам говорил, помочь Вам с C# и тем более с C# в Linux мы не сможем.

PS
Для сведения - про использование .Net Core в Astra SE:
Использование стороннего программного обеспечения в аттестованных информационных системах, функционирующих под управлением ОС Astra Linux Special Edition
 
Добрый. А есть ли еще другие примеры для получения изображения?
Вариант вызовов, что указан в QT примере под Linux выдает заполненный массив символом 255.
В такой последовательности
  • mapOpenDataUn
  • mapCreateImageEx
  • mapDrawImageMap
  • mapViewImageToXImage
Я так же пробовал последовательность:
  • mapOpenDataUn
  • mapPaintToXImage

Под Windows работает. Под Linux - нет.  
 
Цитата
Alexander Volovikov написал:
А есть ли еще другие примеры для получения изображения?

К сожалению, из кросс-платформенных примеров дали Вам всё что было.

Попробуйте в Linux использовать экранный вид карты (VT_SCREEN = 1), а не принтерный (см. mapSetViewType).

Дело в том, что для отрисовки карты в принтерном виде в Линукс требуется дополнительная обработка "снаружи", для чего используются обратные функции, которые либо реализованы в компоненте QDMapView (если используются компоненты ГИС Конструктор для Qt Creator), либо такие функции необходимо реализовать самостоятельно (реализацию можно посмотреть в проекте mapqtdraw в SDK для linux).
В случае экранного вида карты это не требуется.

В Windows самостоятельная обработка отрисовки карты в принтерном виде не требуется.
 
Да. Теперь все заработало! Спасибо

Примеры кода:
https://disk.yandex.ru/d/sCN1QxLNm2r6Fg
Изменено: Денис Вицко - 20.07.2022 09:32:38 (исправил вставку картинок)
Страницы: Пред. 1 2 3 4
Читают тему (гостей: 1)



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

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