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

хотелки - яркое отображение нужных объектов на бледной карте

Поиск  Пользователи  Правила  Войти
Форум » Настольные приложения » GIS ToolKit, GIS ToolKit Active, ГИС Конструктор для Windows
Страницы: 1 2 След.
RSS
хотелки - яркое отображение нужных объектов на бледной карте
 
есть ли возможность отображать карту и все объекты бледно и желательно монохромом в сером цвете (чтобы цвет указать можно было), а выделенные объекты отобразить ярко и жирно?
сейчас, когда карта детализирована и объекты пестрые, на средних и мелких масштабах разглядеть необходимые выделенные объекты невозможно. приходится постоянно играть масштабом, что очень не удобно.
еще проблема в том, что даже если указывать толщину объектов большой, на крупных масштабах все норм, а на мелких все равно объект обрамляется линией в 1 пиксель.
на пестрой карте разглядеть невозможно!

центрирование тоже не помогает: и что, что по центру? сам объект все равно не видно в пестрой куче!
Изменено: mihalych72 - 10.11.2022 16:40:09
 
Если объект в таком масштабе отображается в виде линии толщиной в один пиксел, а его искусственно выделить в три, то он закроет всех соседей. Хотим этого добиться?
 
В любой момент можно изменить цветовое оформление любых карт, растров, матриц и других данных.
Например:
Код
  // Запросить яркость карты (от -16 до +16)
  // hMap   - идентификатор открытой основной карты
  // hSite  - идентификатор открытой пользовательской карты
  // (для фоновой карты hSite = hMap)

_MAPIMP long int _MAPAPI mapGetSiteBright(HMAP hMap, HSITE hSite);

  // Установить яркость карты (от -16 до +16)
  // hMap   - идентификатор открытой основной карты
  // hSite  - идентификатор открытой пользовательской карты
  // (для фоновой карты hSite = hMap)

_MAPIMP long int _MAPAPI mapSetSiteBright(HMAP hMap, HSITE hSite, long int bright);

  // Запросить контрастность  (от -16 до +16)
  // hMap   - идентификатор открытой основной карты
  // hSite  - идентификатор открытой пользовательской карты
  // (для фоновой карты hSite = hMap)

_MAPIMP long int _MAPAPI mapGetSiteContrast(HMAP hMap, HSITE hSite);

  // Установить контрастность (от -16 до +16)
  // hMap   - идентификатор открытой основной карты
  // hSite  - идентификатор открытой пользовательской карты
  // (для фоновой карты hSite = hMap)

_MAPIMP long int _MAPAPI mapSetSiteContrast(HMAP hMap, HSITE hSite, long int contrast);

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

_MAPIMP long int _MAPAPI mapGetSiteGamma(HMAP hMap, HSITE hSite);

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

_MAPIMP long int _MAPAPI mapSetSiteGamma(HMAP hMap, HSITE hSite, long int gamma);

  // Запросить число цветов в текущей палитре карты
  // Обычно 16 или 32
  // hMap   - идентификатор открытой основной карты
  // hSite  - идентификатор открытой пользовательской карты
  // При ошибке возвращает ноль

_MAPIMP long int _MAPAPI mapGetSiteColorsCount(HMAP hMap, HSITE hSite);

  // Запросить текущую палитру карты (с учетом яркости/контрастности)
  // hMap   - идентификатор открытой основной карты
  // hSite  - идентификатор открытой пользовательской карты
  // colors - указатель на структуру COLORREF первого цвета в палитре
  // count  - количество цветов (не более 256)
  // При ошибке возвращает ноль

_MAPIMP long int _MAPAPI mapGetSitePalette(HMAP hMap, HSITE hSite, COLORREF *colors, long int count);

  // Запросить текущую палитру карты (без учета яркости/контрастности)
  // hMap   - идентификатор открытой основной карты
  // hSite  - идентификатор открытой пользовательской карты
  // colors - указатель на структуру COLORREF первого цвета в палитре
  // count  - количество цветов (не более 256)
  // При ошибке возвращает ноль

_MAPIMP long int _MAPAPI mapGetSiteColors(HMAP hMap, HSITE hSite, COLORREF *colors, long int count);

  // Установить текущую палитру карты
  // Если colors равно 0, устанавливается палитра из классификатора
  // (палитра классификатора не меняется, изменения будут временными)
  // hMap   - идентификатор открытой основной карты
  // hSite  - идентификатор открытой пользовательской карты
  // colors - указатель на структуру COLORREF первого цвета в палитре
  // count  - количество цветов (не более 256)
  // number - номер эталонной палитры в классификаторе
  // При ошибке возвращает ноль

_MAPIMP long int _MAPAPI mapSetSiteColors(HMAP hMap, HSITE hSite, COLORREF* colors, long int count);
_MAPIMP long int _MAPAPI mapSetSiteColorsEx(HMAP hMap, HSITE hSite, COLORREF* colors, long int count, long int number);

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

_MAPIMP long int _MAPAPI mapSetSitePaletteByNumber(HMAP hMap, HSITE hSite, long int number);

Цвет выделения объектов может быть изменен программно.
Можно копировать выделенные объекты на временную карту в памяти и выделять ее своими настройками яркости, контрастности и т.д.
Код
  // Создать временную пользовательскую карту по открытой карте
  // hmap     - идентификатор открытых данных
  // rscname  - полное имя файла ресурсов, если равно 0 - выбирается из открытой карты
  // inmemory - признак создания карты в оперативной памяти или 0
  // При закрытии пользовательской карты все файлы данных автоматически удаляются
  // Если параметр inmemory не равен 0, то все данные хранятся только в оперативной памяти
  // и освобождаются при закрытии карты
  // Возвращает идентификатор открытой пользовательской карты
  // При ошибке возвращает ноль

_MAPIMP HSITE _MAPAPI mapCreateAndAppendTempSitePro(HMAP hMap, const WCHAR *rscname, long int inmemory);

  // Перенести объект на другую карту (пересчитать координаты и
  // заменить ссылку в объекте на карту)
  // При переносе объекта выполняется перекодировка объекта
  // для нового классификатора, если код не найден -
  // он устанавливается в ноль, прежнее значение
  // сохраняется в семантике (код 32800).
  // (для замены вызывается mapRegisterObject())
  // Метрика преобразуется в соответствии с типом карты
  // hSite - идентификатор открытой пользовательской карты
  // hObj  - идентификатор объекта пользовательской карты
  // hMap  - идентификатор открытой основной карты
  // Объект на исходной карте при этом не удаляется,
  // для записи объекта в новой карте необходимо вызвать mapCommitObject
  // При ошибке возвращает ноль

_MAPIMP long int _MAPAPI mapSetObjectMap(HOBJ info, HSITE hSite);

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


сейчас, например, масштаб 1:8000, объекты площадные разноцветные.
пытаюсь выделить объект, а он выделяется однопиксельной розовой линией - мелкий объект, который находится на пестром площадном, не раглядеть.

при этом  толщина линии выделенных объектов =8

когда делаю масштаб 1:2000 объяет становится смотрибельным и жирно обводненным.


сейчас думаю над некой рамкой, которая будет фокусировать внимание на найденном объекте. рамка проще, чем круг или сложная фигура.

но с ней ровно такая же история. на масштабе 1:8000: рамка - это тонкая розовая линия. на пестрой карте и ее с трудом видно!

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

но буду думать именно в эту сторону.

а может есть другие варианты?
 
Цитата
Oleg Belenkov написал:
Можно копировать выделенные объекты на временную карту в памяти и выделять ее своими настройками яркости, контрастности и т.д.

Спасибо, Олег.
буду изучать.
на время отчета я и так работаю с другим mapview. отчет по нему работает норм.
в отчете есть проблемные места, которые нужно разрулить вручную.
вот тут и нужно, чтобы карта отобразилась бледно, а при выборе объекта он ярко выделился. на основную карту это не должно накладываться.
 
Других вариантов много.

Можно не выделять объекты а в событии "Paint" после отрисовки документа дорисовывать своей графикой объекты средствами MAPAPI или Windows GDI.
 
пример в студию...
желательно для чайников и копипаста.
 
Для начала документ с примерами -
ГИС "Панорама" ПАРБ.00046-06 Прикладные задачи. Разработка новых модулей

https://gistoolkit.com/download/doc/mapapi.pdf
 
спасибо Олег.
буду изучать.
 
Посмотрите пример Trafic1. В нем есть текст отображения объекта по известным координатам после перерисовки карты (функциями АПИ видом из классификатора, функциями АПИ пользовательским видом, функциями Windows).
Страницы: 1 2 След.
Читают тему (гостей: 1)



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

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