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

Как отобразить растры между картой и объектами на временной карте?

Поиск  Пользователи  Правила  Войти
Форум » Linux » ГИС Панорама для Linux
Страницы: Пред. 1 2
RSS
Как отобразить растры между картой и объектами на временной карте?
 
Здравствуйте!
Цитата
Владимир Егоров написал:
Так вот - какими функциями включать/отключать отображение слоёв/главной карты?
Для включения/выключения отображения базовой карты или пользовательского слоя применяется функция mapSetSiteViewFlag (sitapi.h).
Примечание: для установки флага отображения базовой карты необходимо в качестве и первого, и второго параметров функции передать ее идентификатор HMAP.
Код
  // Установить флаг отображения карты (0 - не отображать)
  // hMap  - идентификатор открытой карты
  // hSite - идентификатор открытой пользовательской карты (для основной карты равен hMap)
  // flag  - флаг отображения карты
  // Возвращает новое значение флага

_MAPIMP long int _MAPAPI mapSetSiteViewFlag(HMAP hMap, HSITE hSite, long int flag);
По аналогии для включения/выключения отображения растров и матриц применяются функции mapSetRstView (rstapi.h) и mapSetMtrView (mtrapi.h) соответственно:
 
Код
  // Запросить/Установить степень видимости растра
  // hMap   - идентификатор открытых данных
  // number - номер файла в цепочке
  // view = 0 - не виден
  // view = 1 - полная видимость
  // view = 2 - насыщенная
  // view = 3 - полупрозрачная
  // view = 4 - средняя
  // view = 5 - прозрачная
  // При ошибке возвращает ноль

_MAPIMP  long int _MAPAPI mapGetRstView(HMAP hMap,long int number);
_MAPIMP  long int _MAPAPI mapSetRstView(HMAP hMap,long int number,
                                        long int view);
Код
  // Запросить/Установить степень видимости матрицы
  //  hMap   - идентификатор открытой основной векторной карты
  //  number - номер файла в цепочке
  //  view = 0 - не виден
  //  view = 1 - полная
  //  view = 2 - насыщенная
  //  view = 3 - полупрозрачная
  //  view = 4 - средняя
  //  view = 5 - прозрачная

_MAPIMP long int _MAPAPI mapGetMtrView(HMAP hMap,long int number);
_MAPIMP long int _MAPAPI mapSetMtrView(HMAP hMap,long int number,
                                       long int view);
Цитата
Владимир Егоров написал:
Как правильно вызвать mapPaintByFrameToXImagePro :* можно ли не указывать рамку (ведь mapPaintToXImage достаточно заполненного XIMAGEDESC)?* можно ли отдавать hpaint == 0 ?* что означает параметр alpha ? (точнее - что означает использование/не использование альфа канала)
Для того, чтобы можно было рисовать поверх существующей картинки, не затирая при этом изображение фоном, в следующей версии ГИС Конструктор мы добавим модифицированную функцию семейства mapPaintToXImage с дополнительным параметром erase (по аналогии с функцией mapPaintByFrameToXImagePro).
 
Спасибо, забыл про то что у пользовательских слоёв много общих свойств отображения с растровыми и матричными данными =)
 
Уважаемые коллеги,
можно привести фрагмент кода как отобразить растровую карту

между основной векторной и пользовательской картой с объектами?

На форуме упоминалось, что это уже реализовано для Линукс.
Интересует как раз реализация в Линуксе.
Изменено: Владимир Шабан - 06.04.2023 11:51:39
 
В ГИС Конструктор, например, это можно сделать так.

Открыть/Создать Карту с объектами (временная она или нет - не имеет значения).
Добавить фоновую карту и указать, что она отображается ниже базовой (с объектами).
Такое свойство есть в диалоге Список данных для карт.
Код
  // Установить порядок отображения карты
  // hMap  - идентификатор открытой карты
  // number - номер пользовательской карты в цепочке
  // order  - флаг(0 - под основной картой, 1 - над основной картой)
  // При ошибке возвращает 0

_MAPIMP long int _MAPAPI mapSetSiteViewOrder(HMAP hMap, long int number, long int order);
Добавить растр и указать, что он отображается выше базовой карты.
Такое свойство есть в диалоге Список данных для растров.
Код
  // Запросить/Установить порядок отображения растра
  // hMap  - идентификатор открытых данных
  // number - номер растрового файла в цепочке
  //  (0 - под картой, 1 - над картой)
  // При ошибке возвращает 0

_MAPIMP  long int _MAPAPI mapSetRstViewOrder(HMAP hMap, long int number, long int order);
_MAPIMP  long int _MAPAPI mapGetRstViewOrder(HMAP hMap, long int number);

Установить для базовой карты свойство - Отображается последней.
Такого свойства, наверное, еще нет в диалоге. Но его легко можно вызвать из скрипта на python, который можно добавить самому в списке задач.
Код
 // Установить/Сбросить флаг - Рисовать базовую карту последней (выше всех других данных)
 // Применяется при подготовке отчетов, когда базовая карта содержит шаблон отчета
 // hmap - идентификатор открытых данных
 // flag - флаг отрисовки карты последней (0/1)

_MAPIMP void _MAPAPI mapSetShowMapLast(HMAP hmap, long int flag);

 // Запросить флаг - Рисовать базовую карту последней (выше всех)
 // hmap - идентификатор открытых данных
 // Если hmap равно нулю, то возвращает ноль

_MAPIMP long int _MAPAPI mapGetShowMapLast(HMAP hmap);
 
Спасибо за предыдущее сообщение-ответ, но я не нашел mapSetShowMapLast  в описании mapapi (Qt designer Linux, C++).

К сожалению  метода mapSetShowMapLast
нет в ссылках, h-файлах и в описании, в том числе  http://help.gisinfo.ru/search/

Могу предположить, что это из свежего обновления и для Windows судя по заголовку метода.

По-прежнему непонятно как заставить карту обстановки отображаться
поверх растра и сделать это из кода на C++

Если отключить основную карту и задать растру отображаться под

основной, то оставшаяся  карта обстановки будет поверх растра,
но необходимы все три карты



Буду признателен за помощь.
Изменено: Владимир Шабан - 17.04.2023 13:10:02
 
Здравствуйте!

Приводим пример кода, реализующего предложенный выше метод отображения карт (проверено на последней версии ГИС Конструктор 14, доступной на нашем сайте). В данном примере фоновая карта отображается под растром, карта обстановки отображается поверх растра. Обращаем внимание, что карта обстановки должна быть открыта первой и использоваться в качестве основной карты. Фоновая карта открывается путем добавления пользовательской карты к основной.
Код
// Открыть основную карту
const WCHAR * baseMapFileName = WTEXT("/usr/share/gisdesigner/examples/Data/Планы городов/Noginsk/military.sit");
HMAP mapHandle = mapOpenAnyData(baseMapFileName);

// Добавить фоновую карту
const WCHAR * backgroundMapFileName = WTEXT("/usr/share/gisdesigner/examples/Data/Планы городов/Noginsk/Noginsk.sit");
mapAppendAnyData(mapHandle, backgroundMapFileName);

// Добавить растр
const WCHAR * rasterFileName = WTEXT("/usr/share/gisdesigner/examples/Data/Планы городов/Noginsk/raster.rsw");
mapAppendAnyData(mapHandle, rasterFileName);

// Установить отображение фоновой карты ниже основной карты
mapSetSiteViewOrder(mapHandle, 1, 0);

// Установить отображение растра выше основной карты
mapSetRstViewOrder(mapHandle, 1, 1);

// Установить вывод основной карты последней (выше всех слоев)
mapSetShowMapLast(mapHandle, 1);
 
Спасибо за подробный ответ!
:)  :)  :)  
Страницы: Пред. 1 2
Читают тему (гостей: 1)



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

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