MapDoc object

Объект, представляющий документ-карту системы Zulu. В макросах ZuluGIS рабочую карту дает свойство Zulu.ActiveMapDoc; карта, которую показывает вид, - свойство MapView.Map. Кроме того, объект возвращается как свойство компонента MapCtrl.Map, а также как свойство Zulu.Documents.Document.NativeDoc.

Входит в состав ZuluGIS 2021 Library.

Регистрационная информация:

PROGID:

ZuluLib.MapDoc

CLSID:

{12507022-0B01-11D2-B55D-444553540000}

Свойства и методы:

Описание:

Карту можно создать и отдельно от окон ZuluGIS - как объект ZuluLib.MapDoc, в python - zulu.MapDoc(). У только что созданной карты нет ни слоев, ни видов: Layers.Count и Views.Count равны 0, название и путь к файлу пустые. Слои добавляются методом AddLayer, и первый добавленный становится активным. Видов у такой карты так и не появляется, поэтому то, что рисует в окне карты, для нее недоступно.

Слои карты нумеруются с единицы: первый слой - Layers.Item(1), а обращение к номеру 0 вызывает исключение.

Карта сохраняется в файл методами Save и SaveAs и загружается методом Open.

Пример:

Пример создает отдельную карту, добавляет в нее файлы активного слоя и сохраняет ее.

Visual Basic:

Sub MapDoc_cls
'Берем активный слой рабочей карты
Set L = Zulu.ActiveMapDoc.Layers.Active
'Создаем отдельную карту - без окон
Set M = CreateObject("ZuluLib.MapDoc")
S = "Новая карта: слоев " & M.Layers.Count & ", видов " & M.Views.Count
'Добавляем в нее тот же слой по пути к его файлам
M.AddLayer L.Name
S = S & vbCrLf & "после AddLayer: слоев " & M.Layers.Count & ", первый - " & M.Layers.Item(1).UserName
'Сохраняем карту в файл
If M.SaveAs("C:\Data\copy.zmp") Then
  S = S & vbCrLf & "сохранена: " & M.PathName
End If
MsgBox S
End Sub

Python:

import zulu

def Macro_MapDoc_cls():
    # Берем активный слой рабочей карты
    L = zulu.App.ActiveMapDoc.Layers.Active
    # Создаем отдельную карту - без окон
    M = zulu.MapDoc()
    print("Новая карта: слоев", M.Layers.Count, ", видов", M.Views.Count)
    # Добавляем в нее тот же слой по пути к его файлам
    M.AddLayer(L.Name)
    print("после AddLayer: слоев", M.Layers.Count, ", первый -", M.Layers.Item(1).UserName)
    # Сохраняем карту в файл
    if M.SaveAs(r"C:\Data\copy.zmp"):
        print("сохранена:", M.PathName)