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

Про масштаб и отображение на экране

Поиск  Пользователи  Правила  Войти
Форум » Linux » Средства разработки ГИС-приложений для Linux
Страницы: 1
RSS
Про масштаб и отображение на экране
 
Добрый день.
У меня есть карта с базовым масштабом  1: 1 000 000. dpi монитора - 96.

Перед отрисовкой картинки настраиваю размеры экрана следующим образом:
Код
    const double MM_IN_INCH = 25.4;
    
    const int DEFAULT_HARDCODE_DISPLAY_RESOLUTION = 96;
    const double printprecisionX = DEFAULT_HARDCODE_DISPLAY_RESOLUTION * 1000 / MM_IN_INCH;
    const double printprecisionY = DEFAULT_HARDCODE_DISPLAY_RESOLUTION * 1000 / MM_IN_INCH;

    mapSetScreenPrecisionEx(printprecisionX, printprecisionY);

    long x = 0L;
    long y = 0L;

    mapChangeViewScale(mapHandler, &x, &y, 1.0);


   /// .....

    // установка масштаба отображения 1:1 000 000
    mapSetViewScale(mapHandler, &x, &y, 1000000);

Отображаю на экране в экранном виде в масштабе 1 : 1 000 000. Измеряю на мониторе расстояние между центром Твери и центром Москвы и получаю около 26.5 см.

Итого получается, что грубое расстояние между центром Твери и центром Москвы = 26.5 * 10 000 = 265 000 (м)  = 265 км. А на самом деле около 163 км, если верить Гугл- и Яндекс-картам.

В чем моя ошибка или что я делаю не так?

Спасибо.
 
Измерять расстояния линейкой можно на топографической карте.
В MAPAPI-интерфейсе есть функции для различных высокоточных измерений.
 
Цитата
Oleg Belenkov написал:
В MAPAPI-интерфейсе есть функции для различных высокоточных измерений.
Добрый день.

Меня в данном случае не интересует высокоточное измерение. Хотелось бы хотя бы какое-то приближенное значение, чтобы пользователь мог без дополнительных инструментов прикинуть расстояние. А тут получается разница в 100 км.

Как тогда можно оценить, какое расстояние в одном см на экране?

Спасибо.
 
Через функции MAPAPI-интерфейса. Взять 2 точки на горизонтальной прямой на расстоянии 1 см на экране

(через разрешение экрана и масштаб получить условное приращение в метрах) и запросить расстояние на местности
Код
 // Вычисление расстояния между двумя точками на местности
 // hmap   - идентификатор открытых данных
 // point1, point2 - координаты точек в метрах на местности
 // Для вычисления расстояния координаты пересчитываются
 // в проекцию топографической карты с установкой осевого
 // меридиана в центре отрезка
 // При ошибке возвращает 0

_MAPIMP double _MAPAPI mapRealDistance(HMAP hmap, DOUBLEPOINT *point1, DOUBLEPOINT *point2);
Изменено: Oleg Belenkov - 02.03.2020 11:19:54
 
Цитата
Oleg Belenkov написал:
Через функции MAPAPI-интерфейса. Взять 2 точки на горизонтальной прямой на расстоянии 1 см на экране
Спасибо за совет.
Страницы: 1
Читают тему (гостей: 1)



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

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