Калибровка изображения карты для конкретного физического устройства вывода |
Когда электронная карта отображается в исходном масштабе (масштабе бумажного оригинала), видимый размер объектов, расстояние между ними, высота букв и т.д. могут не соответствовать бумажному изображению карты. При отображении карты на различных мониторах это несоответствие будет меняться в зависимости от их физических параметров. Это происходит потому, что в системе Windows нет средств определения физического размера пикселя дисплея, а для печатающих устройств такая возможность имеется. Поэтому, в ГИС ядре предусмотрены функции, которые позволяют явно задать размер диагонали экрана в дюймах (обычно на 1,5 дюйма меньше паспортного значения) и коэффициент увеличения изображения в процентах. Увеличение изображения делает карту более наглядной и позволяет компенсировать низкое разрешение монитора, но искажает видимый масштаб.
НАСТРОЙКА ПАРАМЕТРОВ ОТОБРАЖЕНИЯ КАРТЫ НЕ ВЛИЯЕТ НА ПРАВИЛЬНОСТЬ ОПРЕДЕЛЕНИЯ КООРДИНАТ, РАСЧЕТ ДЛИН, ПЛОЩАДЕЙ, РАССТОЯНИЙ И Т. П.
Функции описаны в модуле Mapproc.pas.
function mapGetScreenSize : integer; Запросить размер диагонали видимого изображения экрана в миллиметрах.
function mapSetScreenSize(aSize : integer) : integer; Установить размер диагонали видимого изображения экрана в миллиметрах (100 - 2000). При установке возвращает старое значение. При ошибке возвращает 0
function mapSetScreenSizeEx(aSize : integer; aHdc : HDC) : integer; Установить размер диагонали видимого изображения экрана в миллиметрах (100 - 2000). При установке возвращает старое значение. aHdc - контекст устройства для запроса текущих размеров. При ошибке возвращает 0
function mapGetScreenScale : integer; Запросить коэффициент масштабирования изображения экрана в процентах.
function mapSetScreenScale(aScale : integer) : integer; Установить коэффициент масштабирования изображения экрана в процентах (100 - 200). При установке возвращает старое значение и пересчитывает точность текущего режима экрана. При ошибке возвращает 0.
function mapGetScreenPrecision : integer; Запросить точность текущего режима экрана в точках на метр.
function mapSetScreenPrecision(aValue : integer) : integer; Установить точность текущего режима экрана в точках на метр (1000 - 100000). При установке возвращает старое значение и пересчитывает коэффициент масштабирования экрана. При ошибке возвращает 0.
function mapScreenMeter2Pixel(aMetric : double) : integer; function mapScreenPixel2Meter(aPixel : integer) : double; Пересчет через текущие параметры экрана.
procedure SetScreenSizeAndScaleNormal; Установить размер диагонали видимого изображения экрана, исходя из предположения о размере пикселя в 0.26 мм.
|