Экспорт фрагмента карты, заданного прямоугольной областью в координатах местности, в растровый файл (bmp, jpg, gif, png).
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 SubPython:
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("Не удалось записать изображение")