IReliefLayer object

Интерфейс для работы со слоем рельефа. Возвращается свойством ReliefLayer объекта Layer.

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

Методы:

Описание:

Слой рельефа хранит модель высот. Моделей две: TIN — триангуляционная сетка, в которой известны высоты вершин всех треугольников, и SRTM — сетка высотных отметок. Свойство Type такого слоя равно eReliefLayer (104) для локального слоя или eRemoteReliefLayer (105) для слоя на ZuluServer, см. eLayerType.

Методы делятся на три группы:

  • чтение высот — GetZ. При массовом чтении буферизованный доступ к данным слоя открывает QuickAccessStart и закрывает QuickAccessStop;

  • измерение — GetSurfaceArea возвращает площадь поверхности рельефа внутри заданного полигона;

  • преобразование в векторные слои — SaveToLayer создаёт слой из треугольников триангуляции, SaveToGridLayer — слой с регулярной сеткой, в ячейках которой записаны высоты, CreateVoronoi — слой с ячейками Вороного.

Свойство ReliefLayer возвращается для любого слоя, а не только для слоя рельефа. На прочих слоях методы интерфейса никаких действий не выполняют.

Пример:

Visual Basic:

Sub IReliefLayer_cls
'Слой рельефа из примеров поставки
Set L = CreateObject("ZuluLib.Layer")
L.Open "C:\Program Files\ZuluGIS\Examples\Thermo\Kvartal\relief.ztr"
Set R = L.ReliefLayer
'Габариты слоя, чтобы взять точку в его середине
Set rc = L.GetBoundsRectangle
'При массовом чтении высот открывают буферизованный доступ
R.QuickAccessStart
z = R.GetZ((rc.Xmin + rc.Xmax) / 2, (rc.Ymin + rc.Ymax) / 2, L.GetCRS)
R.QuickAccessStop
MsgBox "Тип слоя: " & L.Type & vbCrLf & "Высота в центре: " & z
End Sub

Python:

import zulu

def Macro_IReliefLayer_cls():
    # Слой рельефа из примеров поставки
    L = zulu.Layer()
    L.Open(r"C:\Program Files\ZuluGIS\Examples\Thermo\Kvartal\relief.ztr")
    R = L.ReliefLayer
    # Габариты слоя, чтобы взять точку в его середине
    rc = L.GetBoundsRectangle()
    # При массовом чтении высот открывают буферизованный доступ
    R.QuickAccessStart()
    z = R.GetZ((rc.Xmin + rc.Xmax) / 2.0, (rc.Ymin + rc.Ymax) / 2.0, L.GetCRS())
    R.QuickAccessStop()
    print("Тип слоя:", L.Type)
    print("Высота в центре:", z)