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

mapSetScreenPrecision

Поиск  Пользователи  Правила  Войти
Форум » Настольные приложения » Подключение геопорталов
Страницы: 1 2 След.
RSS
mapSetScreenPrecision
 
Не правильно работает функция mapSetScreenPrecision при подключении WMS карт ( проверял на гугл).
При изменении масштаб не меняется, а при некоторых значениях происходит резкий скачок. например при смене значения 2040 на 2046 масштаб падает в 2 раза.

При этом на обычных картах всё работает идеально.
Возможно ли исправить для карт с геопорталов эту функцию?

так же заметил что при подключенных геопорталах масшитаб сам меняется на другое значение, при поптыке выставить 200000 получается 197322
Изменено: Александр Б. - 02.12.2013 09:35:53
 
Изменение масштаба задумано внутри ядра, так как данные для геопорталов нарезаны в определённых масштабах, с определённым разрешением и размером пикселя.
Например функция mapSetScreenPrecision устанавливает соответствие размера пикселя на экране размеру на местности. В большинстве геопорталов данные нарезаны с разрешением пикселя экрана 0.28мм. Поэтому изменение параметров в функции mapSetScreenPrecision ведёт к изменению текущего масштаба отображения, чтобы компенсировать размер пикселя. Аналогично и для масштабов (данные нарезаны в масштабах отличающихся от стандартных).
Для отображения данных в стандартных масштабных рядах привычных для России должна использоваться матрица GlobalCRSScale, вместо GoogleMapsCompatible (наиболее распространённой).
 
Можно ли включить принудительный пересчёт масштаба?
Изменено: Александр Б. - 02.12.2013 12:03:18
 
Цитата
Александр Б. пишет:
Можно ли включить принудительный пересчёт масштаба?
При работе с геопорталами выключить принудительный пересчет масштаба нельзя (таких функций не предусмотрено), иначе геопортал не будет совпадать с подключенными данными картами, растрами, матрицами.
 
Точнее проблема не в совпадении данных, а в том, что отображение существенно замедлится, если отображать растр (тайл) не в своем масштабе.
Все браузеры так же отображают, но они не пишут реальный масштаб отображения.
Но этот масштаб и не влияет на работу программы, это справочная строка.
 
Цитата
Владимир Железняков пишет:
Цитата
Александр Б. пишет:

Можно ли включить принудительный пересчёт масштаба?

При работе с геопорталами выключить принудительный пересчет масштаба нельзя (таких функций не предусмотрено), иначе геопортал не будет совпадать с подключенными данными картами, растрами, матрицами.

У вас предусмотрена трансформация в другую проекцию с помощью mapSetDocProjection но нет возможности простого масштабирования? Можно ли как то повлиять на ситуацию?
 
Цитата
Александр Б. пишет:
Цитата
Владимир Железняков пишет:
Цитата
Александр Б. пишет:
Можно ли включить принудительный пересчёт масштаба?

При работе с геопорталами выключить принудительный пересчет масштаба нельзя (таких функций не предусмотрено), иначе геопортал не будет совпадать с подключенными данными картами, растрами, матрицами.
У вас предусмотрена трансформация в другую проекцию с помощью mapSetDocProjection но нет возможности простого масштабирования? Можно ли как то повлиять на ситуацию?

Масштабирование есть, но при включенных геопорталах масштабирование идёт на основание масштабного ряда геопортала. Повлиять на ситуацию возможно, если вы опишете для чего вам необходимо устанавливать точное значение масштаба для геопортала.
 
Цитата
Владимир Железняков пишет:
Цитата
Александр Б. пишет:

Цитата
Владимир Железняков пишет:

Цитата
Александр Б. пишет:

Можно ли включить принудительный пересчёт масштаба?



При работе с геопорталами выключить принудительный пересчет масштаба нельзя (таких функций не предусмотрено), иначе геопортал не будет совпадать с подключенными данными картами, растрами, матрицами.

У вас предусмотрена трансформация в другую проекцию с помощью mapSetDocProjection но нет возможности простого масштабирования? Можно ли как то повлиять на ситуацию?



Масштабирование есть, но при включенных геопорталах масштабирование идёт на основание масштабного ряда геопортала. Повлиять на ситуацию возможно, если вы опишете для чего вам необходимо устанавливать точное значение масштаба для геопортала.

Для того, чтобы формировать картинку в заданном масштабе определенного размера, если вам требуется более подробное описание программы, готов выслать на почту.
 
Такая функция содержится в gispicex.dll (см. mappicex.h):
Код
//================================================­======================== 
//    Сохранить карту в формате BMP, Tiff, RSW  // 15/01/10
//    map        - карта,содержащая векторные, растровые и др. данные;
//    handle     - диалог сопровождения процесса обработки;
//    dframe     - фрагмент сохраняемой карты(в метрах на местности)
//    bitcount   - кол-во бит на пиксел сохраняемого изображения (1, 8, 24-рекомендуемое значение)
//    scale      - масштаб сохраняемого изображения
//    resolution - разрешающая способность сохраняемого изображения(т/м)
//    filename   - имя файла сохраняемого изображения (*.bmp, *.tif);
//    handleMainWin - должен быть равен нулю
//    При ошибке функция возвращает ноль
//
//    Диалогу визуального сопровождения процесса обработки посылаются
//    сообщения:
//    -  (WM_PROGRESSBAR) Извещение об изменении состония процесса
//       WPARAM - текущее состоние процесса в процентах (0% - 100%)
//       Если функция-отклик возвращает WM_PROGRESSBAR, то процесс завершается.
//
//    -  (WM_ERROR) Извещение об ошибке
//       LPARAM - указатель на структуру ERRORINFORMATION
//       Структура ERRORINFORMATION описана в picexprm.h,
//       WM_PROGRESSBAR и WM_ERROR - в maptype.h
//================================================­========================
_MAPIMP long int WINAPI LoadMapToPicture(HMAP map,HMESSAGE handle, DFRAME * dframe, long bitcount, long scale, long resolution, char* filename, HMESSAGE handleMainWin);
 
Цитата
Александр Кружков пишет:
_MAPIMP long int WINAPI LoadMapToPicture(HMAP map,HMESSAGE handle, DFRAME * dframe, long bitcount, long scale, long resolution, char* filename, HMESSAGE handleMainWin);

Мне нужно в памяти, а не в файл, желательно в HDC.
Изменено: Александр Б. - 06.12.2013 12:22:05
Страницы: 1 2 След.
Читают тему (гостей: 1)



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

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