Калибровка изображения карты для конкретного физического устройства вывода

Previous Top Next

 

 Когда электронная карта отображается в исходном масштабе (масштабе бумажного оригинала), видимый размер объектов, расстояние между ними, высота букв и т.д. могут не соответствовать бумажному изображению карты. При отображении карты на различных мониторах это несоответствие будет меняться в зависимости от их физических параметров. Это происходит потому, что в системе 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 мм.