Всем привет, продолжаю развивать тему про MapWindow GIS в Delphi. На этот раз решил рассмотреть, как можно загрузить (отобразить) в компоненте TMap растровое изображение. Как Вы помните, то мы в прошлых статьях рассматривали загрузку shp-файлов. На растровых изображениях уже все необходимые объекты должны быть нанесены сразу, что не очень удобно, но зато на них можно рисовать, как на Canvas, например компонента TImage.
Для всех этих целей, мы рассмотри тип данных Image, который описан в модуле компонента TMap. А сейчас немного поговорим о растровых изображениях.
Растровые изображения — это грубо говоря те же самые BMP, JPEG, PNG изображения. На данных изображениях, сразу наносятся название объектов, раскрашиваются. В большинстве случаем они используются для GPS-навигаторов. Это не самый лучший вариант отображения географической информации, так как, чтобы хорошо увидеть нужный объект на растровой карте, она должна иметь достаточно высокое разрешение. Кроме всего этого, растровые карты имеют намного меньше масштаб увеличения, что также не совсем удобно их использовать в некоторых случаях.
Для примера, я нашел политическую карту Европы, которую мы будем использовать в нашем проекте.
Итак, приступим к рассмотрению типа Image. Рассмотрим функции объекта данного типа.
Функции:
- Open(ImageFileName:String;OptionalInRam:Boolean;OptionacBack:ICallback):Boolean — загружает, указанный файл
- CreateNew(NewWidth:Integer;NewHeight:Integer):Boolean — создает новые графический файл
- Close():Boolean — закрывает открытый файл
- Save(ImageFileName:String;OptionalWriteWorldFile:Boolean;OptionalFileType:ImageType;OptionalcBack:Iallback):Boolean — сохраняет изображения в файл, с нужным расширением
Свойства:
- ImageType:ImageType — определяет тип, загруженного изображения (файла)
- Filename:String — определяет имя загруженного файла
- XllCenter:Double — получает или задает координаты центра изображения по X
- YllCenter:Double — получает или задает координаты центра изображения поY
- dX - устанавливает ширину пикселя по X
- dY- устанавливает ширину пикселя по Y
Функции и свойства я рассмотрел не все, а только некоторые, которые понадобятся нам в данной статье. Дальше, мы рассмотрим и другие, когда будем рассматривать статью: о нанесении на слои графических объектов.
Кроме того, параметр FileType:ImageType, который используется, как в функции Open, так и в функции Save, может принимать следующие значения:
- BITMAP_FILE
- GIF_FILE
- USE_FILE_EXTENSION
- PPM_FILE
В моем проекте, я добавил еще одну кнопку и компонент TOpenDialog, и написал на событие OnClick следующий код:
procedure TForm1.ToolButton9Click(Sender: TObject);
var
img:Image;
begin
if OpenDialog2.Execute then
begin
img:=CoImage.Create;
img.Open(OpenDialog2.FileName,BITMAP_FILE,True,nil);
img.dX:=0.0035;
img.dY:=0.0035;
img.YllCenter:=42;
img.XllCenter:=28;
Map1.AddLayer(img,True);
end;
end;
Как видите, я сперва создаю объект, затем загружаю в него наше изображения и настраиваю его отображение, путем указания центра изображения.
Если воспользоваться функцией Save и сохранить наше изображение в формате, например, bmp, то рядом с нашим изображение появиться файл, с расширением *.bpw, в котором будут храниться все указанные настройки нашего изображения.
Вот, что у меня получилось, после загрузки изображения, формата bmp, в наш проект (загружалась политическая карта Европы):
Данную тему я рассмотрел, так как мне было достаточно вопросов о том, можно ли загружать в MapWindow GIS, графические карты (растровые, векторные), пришлось сделать такую мини-статью.