DrawBoxToRaster method (MapDoc)

Экспорт фрагмента карты, заданного прямоугольной областью в координатах местности, в растровый файл (bmp, jpg, gif, png).

Применяется к:

MapDoc

Синтаксис:

Visual Basic:

Function DrawBoxToRaster(X1 As Double, Y1 As Double, X2 As Double, Y2 As Double, BkColor As Long, Transparent As Boolean, Width As Long, Height As Long, RasterType As Long, Filename As String) As Boolean

X1, Y1, X2, Y2 - координаты прямоугольной области карты.

BkColor - цвет фона карты.

Transparent - признак прозрачности фона карты.

Width - ширина в пикселах.

Height - высота в пикселах.

RasterType - параметр, определяющий формат растрового файла:

0 - BMP

1 - JPG,

2 - GIF,

4 - PNG,

FileName - полное имя растрового файла.

Описание:

Область вписывается в изображение целиком, края к краям: если ее пропорции не совпадают с пропорциями изображения, рисунок растягивается. Углы области можно задавать в любом порядке - результат тот же.

Фон изображения закрашивается цветом BkColor, а при Transparent = True остается прозрачным (в формате PNG). Значение 3 в RasterType дает тот же PNG, что и 4.

Имя файла нужно давать с обратными косыми чертами: путь через «/» метод отвергает и возвращает False. При этом True еще не значит, что файл записан: для папки, которой нет, метод тоже возвращает True, а файла не появляется.

Метод рисует и у карты, созданной отдельно от окон ZuluGIS как объект ZuluLib.MapDoc.

Пример:

Пример сохраняет всю карту в файл PNG на белом фоне.

Visual Basic:

Sub MapDoc_DrawBoxToRaster
'Берем рабочую карту
Set Doc = Zulu.ActiveMapDoc
Set R = Doc.GetBoundsRectangle
'Вся карта, белый фон, 600 на 400 точек, формат 4 - PNG
If Doc.DrawBoxToRaster(R.Xmin, R.Ymin, R.Xmax, R.Ymax, RGB(255, 255, 255), False, 600, 400, 4, "C:\Data\map.png") Then
  Set FSO = CreateObject("Scripting.FileSystemObject")
  If FSO.FileExists("C:\Data\map.png") Then
    MsgBox "Записано байт: " & FSO.GetFile("C:\Data\map.png").Size
  Else
    MsgBox "Метод вернул True, но файла нет - проверьте папку"
  End If
Else
  MsgBox "Не удалось записать изображение"
End If
End Sub

Python:

import zulu
import os

def Macro_MapDoc_DrawBoxToRaster():
    # Берем рабочую карту
    doc = zulu.App.ActiveMapDoc
    R = doc.GetBoundsRectangle()
    path = r"C:\Data\map.png"
    # Вся карта, белый фон, 600 на 400 точек, формат 4 - PNG
    if doc.DrawBoxToRaster(R.Xmin, R.Ymin, R.Xmax, R.Ymax, 16777215, False, 600, 400, 4, path):
        if os.path.exists(path):
            print("Записано байт:", os.path.getsize(path))
        else:
            print("Метод вернул True, но файла нет - проверьте папку")
    else:
        print("Не удалось записать изображение")