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

Использование mapPaintToXImage на крупномасштабных картах

Поиск  Пользователи  Правила  Войти
Форум » Linux » Средства разработки ГИС-приложений для Linux
Страницы: 1
RSS
Использование mapPaintToXImage на крупномасштабных картах
 
Добрый день!
Столкнулся с проблемой отрисовки карты при переходе к более крупным масштабам.
Используется обзорная карта мира, иногда есть необходимость отобразить и посмотреть информацию для масштаба 1 : 5000 и ниже.
При таких вводных размер карты превышает допустимые значения типа int. Функция  mapPaintToXImage в свою очередь принимает на вход структуру RECT в которой задаются параметры выводимого фрагмента карты, все они имеют тип int.

Здесь возникает вопрос: чем можно отрисовать карту если требуемый фрагмент находится по координатам дальше чем позволяет указать тип int?
Изменено: heleo - 26.04.2021 16:53:41
 
Здравствуйте.

Предполагается, что размер выводимого фрагмента, не превышает ~2-миллиарда пикселов.
Рекомендуется уменьшить масштаб отображения или разделить карту на фрагменты, не превышающие указанного значения.

 
Цитата
Здравствуйте.Предполагается, что размер выводимого фрагмента, не превышает ~2-миллиарда пикселов. Рекомендуется уменьшить масштаб отображения или разделить карту на фрагменты, не превышающие указанного значения.
Спаcибо за ответ, но вы не поняли суть вопроса. У меня не выводимый фрагмент превышает размер, а сдвиг выводимого фрейма находится физически за пределами int по долготе. Функция mapPaintToXImage принимает параметр RECT с координатами фрейма, но все они int.
Изменено: heleo - 27.04.2021 12:09:39
 
Здравствуйте.      

Размер сдвига не может превышать размер отображаемого фрагмента, который ограничен максимальным значением типа int.
Для отображения таких данных необходимо разделить их на несколько фрагментов, не превышающих данное ограничение.

 
Цитата
Константин Ганюшин написал:
Здравствуйте.       Размер сдвига не может превышать размер отображаемого фрагмента, который ограничен максимальным значением типа int.
Для отображения таких данных необходимо разделить их на несколько фрагментов, не превышающих данное ограничение.
Я конечно всё понимаю, но может вы ответите конкретно на вопрос: какой функционал из состава ГИС Конструктор можно использовать для этих целей?
 
При такой детализации рекомендуется использовать карты на определенный регион (например, доступные для загрузки карты на основе данных OpenStreetMap на нашем сайте), т.к. обзорная карта мира не содержит необходимой детализации для отображения в таком масштабе.
Список доступных регионов в подготовленных картах на нашем сайте постоянно расширяется и при необходимости может быть дополнен на указанный Вами регион.

Средствами ГИС Конструктора произвести нарезку карты на фрагменты можно, например, с помощью функции vecCutSiteToSheets (vecexapi.h):  
Код
 // Нарезать исходную карту по листам выходной карты
 // hmap  - идентификатор открытых данных
 // hsite -  идентификатор открытой пользовательской карты
 // hmapout - идентификатор выходной карты (для ускорения загрузки установить mapSetLoadState)
 // hselect - условия отбора объектов или 0 (обработать все объекты)
 // Возвращает число обработанных объектов
 // При прерывании задачи оператором возвращает -1
 // При ошибке возвращает ноль

_VECIMP long int _VECAPI vecCutSiteToSheets(HMESSAGE handle, HMAP hmap, HSITE hsite, HMAP hmapout, HSELECT hselect);
Страницы: 1
Читают тему (гостей: 1)



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

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