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

Как изменить прозрачность матрицы, растра

Поиск  Пользователи  Правила  Войти
Форум » Настольные приложения » GIS ToolKit, GIS ToolKit Active, ГИС Конструктор для Windows
Страницы: 1
RSS
Как изменить прозрачность матрицы, растра
 
Добрый день!

К основной карте подключены (н-р, функцией mapAppendData или mapAppendAnyDataPro) пользовательские карты, матрица высот (mtw), растры (rsw) и в процессе работы моего приложения нужно иметь возможность включать/отключать видимость и изменять прозрачность, ярость, контраст каждой подключенной карты, матрицы, растров по отдельности.
Для пользовательских карт я нашел функции mapGetSiteTransparent/mapSetSiteTransparent/mapGetSiteContra­st и т.п.
Вопросы:
1.Как называются аналогичные функции для матриц, растров?
2.Выключение отображения возможно только заданием прозрачности = 100% или есть другой способ?
3.Какими API функциями менять прозрачность, яркость основной (базовой) карты (которая hMap)?
4.Какими API функциями можно получить список подключенных к основной карте пользовательских карт/матриц/растров и менять порядок их отображения?
 
Необходимые функции объявлены в rstapi.h и mtrapi.h:

Код
  // Запросить/Установить степень видимости матрицы
  //  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);


  // Запросить/Установить степень видимости растра
  //  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 - номер файла в цепочке
  //  order  - порядок (0 - под картой, 1 - над картой)
  // При ошибке возвращает ноль

_MAPIMP long int _MAPAPI mapSetMtrViewOrder(HMAP hMap, long int number,
                                            long int order);
_MAPIMP long int _MAPAPI mapGetMtrViewOrder(HMAP hMap, long int number);

  // Поменять очередность отображения матриц (mtr) в цепочке  // 04/12/07
  //   oldNumber - номер файла в цепочке
  //   newNumber - устанавливаемый номер файла в цепочке
  //  При ошибке возвращает ноль

_MAPIMP long int _MAPAPI mapChangeOrderMtrShow(HMAP hMap, long int oldNumber, long int newNumber);


  // Установить степень видимости группы растров
  //  userLabel  - пользовательская метка растра
  //                -1             - все растры
  //                RSW_QUALITY    - растры качеств
  //                RSW_VISIBILITY - растры видимости
  //                RSW_WEB        - растровые карты для WEB
  //  view - степень видимости
  //                0 - не виден
  //                1 - полная
  //                2 - насыщенная
  //                3 - полупрозрачная
  //                4 - средняя
  //                5 - прозрачная
  // При ошибке возвращает 0

_MAPIMP  long int _MAPAPI mapSetRstGroupView(HMAP hMap,long int userLabel,
                                                long int view);      // 27/05/08

  // Запросить/Установить порядок отображения растра
  // 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);


  // Поменять очередность отображения растров (rst) в цепочке  // 04/12/07
  // Последний растр в цепочке отображается в последнюю очередь
  // Нумерация растров в цепочке начинается с 1 и заканчивается номером mapGetRstCount(..)
  //   oldNumber - номер файла в цепочке
  //   newNumber - устанавливаемый номер файла в цепочке
  //  При ошибке возвращает 0

_MAPIMP long int _MAPAPI mapChangeOrderRstShow(HMAP hMap, long int oldNumber, long int newNumber);

  // Запросить яркость палитры матрицы высот
  // hMap   - идентификатор открытой основной векторной карты 

_MAPIMP long int _MAPAPI mapGetMtrBright (HMAP hMap);


  // Установить яркость палитры матрицы высот
  // hMap   - идентификатор открытой основной векторной карты 
  // bright - значение яркости (-16..+16) 
  // При ошибке возвращает ноль

_MAPIMP long int _MAPAPI mapSetMtrBright (HMAP hMap, long int bright);


  // Запросить контрастность палитры матрицы высот
  // hMap     - идентификатор открытой основной векторной карты 
  // значение контраста (-16..+16) 
  // При ошибке возвращает ноль

_MAPIMP long int _MAPAPI mapGetMtrContrast (HMAP hMap);

  // Установить контрастность палитры матрицы высот
  // hMap     - идентификатор открытой основной векторной карты 
  // contrast - значение контраста (-16..+16) 
  // При ошибке возвращает ноль

_MAPIMP long int _MAPAPI mapSetMtrContrast (HMAP hMap, long int contrast);

  // Запросить количество цветов в палитре растра
  // hMap   - идентификатор открытой векторной карты
  // number - номер файла в цепочке
  // При ошибке возвращается 0

_MAPIMP  long int _MAPAPI mapGetRstColorCount (HMAP hMap, long int number);


  // Запросить описание палитры растра
  // hMap    - идентификатор открытой векторной карты
  // palette - адрес области для размещения палитры
  // count   - число считываемых элементов палитры
  //           (если count > 256, то возвращается ноль)
  // number  - номер файла в цепочке
  // (размер области в байтах / 4)
  // При ошибке возвращает ноль

_MAPIMP  long int _MAPAPI mapGetRstPalette(HMAP hMap, COLORREF * palette,
                                    long int count,
                                    long int number);


  // Установить описание палитры растра
  // hMap    - идентификатор открытой векторной карты
  // palette - адрес устанавливаемой палитры
  // count   - число элементов в новой палитре
  // number  - номер файла в цепочке
  // Если palette равно 0, устанавливается палитра из заголовка  // 18/06/02
  // count не более 256
  // При ошибке возвращает ноль

_MAPIMP  long int _MAPAPI mapSetRstPalette(HMAP hMap, COLORREF * palette,
                                    long int count,
                                    long int number);


  // Запросить описание эталонной палитры растра
  // (без учета яркости и контрасности)
  // hMap    - идентификатор открытой векторной карты
  // palette - адрес области для размещения палитры
  // count   - число считываемых элементов палитры
  //           (если count > 256, то возвращается ноль)
  // number  - номер файла в цепочке
  // (размер области в байтах / 4)
  // При ошибке возвращает ноль

_MAPIMP  long int _MAPAPI mapGetRstStandardPalette(HMAP hMap, COLORREF * palette,
                                    long int count,
                                    long int number);


  // Запросить описание палитры из заголовка растра    // 12/10/09
  // hMap   - идентификатор открытой векторной карты
  // palette - адрес области для размещения палитры
  // count   - число считываемых элементов палитры
  //           (если count > 256, то возвращается ноль)
  // number  - номер файла в цепочке
  // (размер области в байтах / 4)
  // При ошибке возвращает ноль

_MAPIMP  long int _MAPAPI mapGetRstPaletteFromHeader(HMAP hMap, COLORREF * palette,
                                    long int count,
                                    long int number);

  // Запросить яркость палитры растра
  // hMap   - идентификатор открытой векторной карты
  // number - номер файла в цепочке

_MAPIMP  long int _MAPAPI mapGetRstBright (HMAP hMap,long int number);


  // Запросить контрастность палитры растра
  // hMap   - идентификатор открытой векторной карты
  // number - номер файла в цепочке

_MAPIMP  long int _MAPAPI mapGetRstContrast (HMAP hMap,long int number);


  // Запросить параболическую яркость растра
  // hMap   - идентификатор открытой векторной карты
  // number - номер файла в цепочке

_MAPIMP  long int _MAPAPI mapGetRstGamma (HMAP hMap,long int number);


  // Установить яркость палитры растра
  // hMap   - идентификатор открытой векторной карты
  // number - номер файла в цепочке
  // bright - яркость
  // При ошибке возвращает ноль

_MAPIMP  long int _MAPAPI mapSetRstBright (HMAP hMap, long int bright,
                                               long int number);


  // Установить контрастность палитры растра
  // hMap     - идентификатор открытой векторной карты
  // number   - номер файла в цепочке
  // contrast - контраст
  // При ошибке возвращает ноль

_MAPIMP  long int _MAPAPI mapSetRstContrast (HMAP hMap, long int contrast,
                                                 long int number);


  // Установить параболическую яркость растра
  // hMap   - идентификатор открытой векторной карты
  // number - номер файла в цепочке
  // gamma  - параболическая яркость
  // При ошибке возвращает ноль

_MAPIMP  long int _MAPAPI mapSetRstGamma (HMAP hMap, long int gamma,
                                              long int number);


  //  Обновить активную палитру с нулевой яркостью и контрастностью
  //  hMap   - идентификатор открытой векторной карты
  //  number - номер файла в цепочке
  //  При ошибке возвращает 0

_MAPIMP  long int _MAPAPI mapRestoreRstPalette(HMAP hMap, long int number);


  // Запросить значение инверсии растра
  // hMap   - идентификатор открытой векторной карты
  // number - номер файла в цепочке
  // Если изображение растра позитивное - возвращает ноль
  // Если изображение растра негативное - возвращает 1
  // При ошибке возвращает -1

_MAPIMP  long int _MAPAPI mapCheckInversionRst(HMAP hMap,long int number);


  // Инвертировать растровую карту
  // hMap   - идентификатор открытой векторной карты
  // number - номер файла в цепочке
  // value:
  // 0 - установить изображение растра позитивным
  // 1 - установить изображение растра негативным
  //  При ошибке возвращает 0

_MAPIMP  long int _MAPAPI mapInvertRst(HMAP hMap,long int number, long int value);


  // Запросить видимость цвета (для 16- и 256-цветных растров)  //16/05/00
  //  hMap   - идентификатор открытой векторной карты
  //  number - номер файла в цепочке
  //  index  - индекс цвета в палитре растра(начиная с 0)
  //  Возвращает: 1 - цвет с данным индексом отображается
  //              0 - цвет с данным индексом не отображается
  //  При ошибке возвращает -1

_MAPIMP  long int _MAPAPI mapCheckVisibilityColor(HMAP hMap, long int number,
                                                      long int index);


  // Установить видимость цвета (для 16- и 256-цветных растров)  //16/05/00
  //  hMap   - идентификатор открытой векторной карты
  //  number - номер файла в цепочке
  //  index  - индекс цвета в палитре растра(начиная с 0)
  //  value: 1 - включить отображение цвета с данным индексом
  //         0 - отключить отображение цвета с данным индексом
  //  Сохранение видимости цветов в INI-файле
  //                                  (не заносится в заголовк файла растра)
  //  При ошибке возвращает 0

_MAPIMP  long int _MAPAPI mapSetVisibilityColor(HMAP hMap, long int number,
                                                    long int index,
                                                    long int value);


  // Установить видимость цвета (для 16- и 256-цветных растров)  //30/10/02
  //  hMap   - идентификатор открытой векторной карты
  //  number - номер файла в цепочке
  //  index  - индекс цвета в палитре растра(начиная с 0)
  //  value: 1 - включить отображение цвета с данным индексом
  //         0 - отключить отображение цвета с данным индексом
  //  Сохранение видимости цветов в заголовке файла растра(а также в INI-файле)
  //  При ошибке возвращает 0

_MAPIMP  long int _MAPAPI mapSetVisibilityColorInRstFile(HMAP hMap, long int number,
                                                  long int index,
                                                  long int value);

  // Установить прозрачный цвет растра (для 16-,24-,32-битных растров)  //31/05/10
  //  hMap   - идентификатор открытой векторной карты
  //  number - номер файла в цепочке
  //  color  - значение прозрачного цвета в формате RGB (от 0 до 0x00FFFFFF)
  // При установке IMGC_TRANSPARENT (0xFFFFFFFF) прозрачный цвет не используется
  // При ошибке возвращает IMGC_TRANSPARENT

_MAPIMP  COLORREF _MAPAPI mapSetRstTransparentColor(HMAP hMap, long int number,
                                                    COLORREF color);


  // Запросить прозрачный цвет растра (для 16-,24-,32-битных растров)   //31/05/10
  //  hMap   - идентификатор открытой векторной карты
  //  number - номер файла в цепочке
  // Возвращает цвет в формате RGB (от 0 до 0x00FFFFFF)
  // При возврате IMGC_TRANSPARENT (0xFFFFFFFF) прозрачный цвет не используется
  // При ошибке возвращает IMGC_TRANSPARENT

_MAPIMP  COLORREF _MAPAPI mapGetRstTransparentColor(HMAP hMap, long int number);



Код
  // Запросить имя файла матричных данных
  // hMap - идентификатор открытой основной векторной карты
  // number - номер файла в цепочке
  // При ошибке возвращает ноль

_MAPIMP const char * _MAPAPI mapGetMtrName(HMAP hMap,long int number);

  // Запросить имя файла матричных данных
  // hMap - идентификатор открытой основной векторной карты
  // number - номер файла в цепочке
  // name - адрес строки для размещения результата
  // size - размер строки
  // При ошибке возвращает ноль

_MAPIMP long int _MAPAPI mapGetMtrNameUn(HMAP hMap,long int number,
                                         WCHAR * name, long int size);

  // Запросить число открытых файлов матричных данных
  // hMap - идентификатор открытой основной векторной карты
  // При ошибке возвращает ноль

_MAPIMP long int _MAPAPI mapGetMtrCount(HMAP hMap);

  // Запросить имя файла растровых данных
  // hMap   - идентификатор открытой векторной карты
  // number - номер файла в цепочке
  // При ошибке возвращает пустую строку

_MAPIMP  const char * _MAPAPI mapGetRstName(HMAP hMap,long int number);

  // Запросить имя файла растровых данных в кодировке UNICODE
  // hMap   - идентификатор открытой векторной карты
  // number - номер файла в цепочке
  // name - адрес строки для размещения результата
  // size - размер строки
  // При ошибке возвращает пустую строку

_MAPIMP  long int _MAPAPI mapGetRstNameUn(HMAP hMap,long int number,
                                          WCHAR * name, long int size);


  // Запросить число открытых файлов растровых данных
  // hMap    - идентификатор открытой векторной карты
  // При ошибке возвращает ноль

_MAPIMP  long int _MAPAPI mapGetRstCount(HMAP hMap);
 
Спасибо.

еще пара вопросов:
1.Какой API функцией можно плавно задавать прозрачность отображения основной карты (hMap) в %? Какой функцией это делается в окне "Управление палитрой" ГИС Карта 2011? Можно ли использовать mapGetSiteTransparent(hMap,hSite) и что тогда в этом случае передавать в качестве hSite? 0 или hMap?
2.В ГИС Карта 2011 в окне "Управление палитрой" для матриц и растров прозрачность можно задавать плавно, от 0% до 100%. Как называются функции, которыми это делается? Это явно не mapSetMtrView и mapSetRstView...
 
1. Все функции из sitapi.h работают с основной картой при hSite = hMap. То есть, для пары HMAP, HSITE задается HMAP, HMAP.
2. Добавили новые функции MAPAPI (обновили gislib11.zip в Скачать):

Код
  // Запросить прозрачность палитры матрицы                   // 19/01/14
  // number - номер файла в цепочке
  // Возвращает степень прозрачности в процентах от 0 до 100

_MAPIMP long int _MAPAPI mapGetMtrTransparent(HMAP hMap, long int number);

  // Установить прозрачность палитры матрицы                  // 19/01/14
  // hMap   - идентификатор открытых данных
  // number - номер файла в цепочке
  // transparent - прозрачность в процентах от 0 до 100
  // При ошибке возвращает ноль

_MAPIMP long int _MAPAPI mapSetMtrTransparent(HMAP hMap, long int number, long int transparent);

  // Запросить прозрачность палитры растра                   // 19/01/14
  // number - номер файла в цепочке

_MAPIMP long int _MAPAPI mapGetRstTransparent(HMAP hMap, long int number);

  // Установить прозрачность палитры растра                   // 19/01/14
  // hMap   - идентификатор открытых данных
  // transparent - прозрачность в процентах от 0 до 100
  // number - номер файла в цепочке
  // При ошибке возвращает ноль

_MAPIMP long int _MAPAPI mapSetRstTransparent(HMAP hMap, long int number, long int transparent);
 
Добрый день.
Почему для векторных, растровых данных, геопорталов и даже матриц качеств можно изменять и получать параметры отображения (яркость, контрастность и т.п.) отдельно для каждого вида данных (в функциях есть параметр number), а для матриц высот параметры можно менять/получать только для всех данных данного типа?
К примеру, для яркости:
Цитата
mapGetRstBright(HMAP hMap, long int number);
mapGetSiteBright(HMAP hMap, HSITE hSite);
mapGetWMSBright(HMAP hMap,long int number);
mapGetMtqBright(HMAP hMap, long int number);
mapGetMtrBright (HMAP hMap);
Изменено: Олег Темеров - 05.12.2025 09:09:36
 
Добрый день!

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

Дело в том, что матрицы высот в совокупности представляют собой один единый источник информации - сведения о рельефе.
Тогда как остальные перечисленные источники пространственных данных представляют собой разную информацию в составе карты.
Поэтому справедливо, что для них сделана возможность персональной настройки отображения, а для матриц рельефа - нет.

Например, в одном составе отображения: топографическую карту отобразить послабее, карту с объектами интереса поверх нее - сделать поярче, растровый космоснимок сделать еле заметным, а растр с аэрофотосъемкой чуть поконтрастнее.
При этом управление отображением рельефа также доступно (вне зависимости от того, каким количеством матриц он представлен).
 
Спасибо за ответ.
Странно, к примеру, для матрицы качеств яркость можно менять отдельно.
Ещё один вопрос - а почему прозрачность можно отдельно ставить для матриц высот, а для матриц качеств даже для всего набора такого функционала нет? Прозрачность чем в этом смысле отличается от яркости, она же является похожим параметром отображения? Чем вызвано такое различие в функционале ГИС Конструктора?
Изменено: Олег Темеров - 05.12.2025 15:25:47
 
Цитата
Олег Темеров написал:
для матрицы качеств яркость можно менять отдельно.

Да. Так как они могут нести разную информацию. Например, матрицу затопления и матрицу радиационного заражения требуется отображать по-разному.
А рельеф - это единое покрытие. И отображаться должен одинаково, даже если представлен несколькими матрицами.

Цитата
Олег Темеров написал:
а для матриц качеств даже для всего набора такого функционала нет?

Есть набор обобщенных функций для всех типов матриц:

Скрытый текст
 
Спасибо за ответ.
Ещё прошу уточнить - параметр number в эти универсальные функции mtrex* какой нужно передавать? Такой же как в специализированные (к примеру, как для mapSetMtrTransparent, то есть, номер внутри каждого отдельного подтипа матриц) или глобальный?
 
Уточнение. Универсальные функции пока могут не работать с MTQ. В процессе доработки.

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


Цитата
Олег Темеров написал:
то есть, номер внутри каждого отдельного подтипа матриц

да, именно так
Страницы: 1
Читают тему (гостей: 1)



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

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