ReliefLayer property (Layer)

Возвращает интерфейс IReliefLayer для работы со слоем рельефа.

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

Layer

Синтаксис:

Visual Basic:

Property ReliefLayer As IReliefLayer

read-only

Описание:

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

Отличить один случай от другого удобно по отметке: у слоя, который рельефом не является, GetZ возвращает -1000000 - признак «данных нет». То же значение приходит и у настоящего слоя рельефа, если точка лежит вне триангуляции.

Для серии запросов отметок объект переводят в быстрый режим методами QuickAccessStart и QuickAccessStop.

Третьим параметром GetZ идет система координат точки. В VBScript вместо нее можно передать Nothing - тогда координаты считаются заданными в системе слоя. В python пустое значение не принимается («bad argument type»), поэтому систему берут у самого слоя методом GetCRS; ответ получается тот же.

Пример:

Visual Basic:

Sub Layer_ReliefLayer
'Берем активный слой карты
Set L = Zulu.ActiveMapDoc.Layers.Active
Set R = L.GetBoundsRectangle
Set RL = L.ReliefLayer
'Спрашиваем отметку в середине слоя
X = (R.Xmin + R.Xmax) / 2
Y = (R.Ymin + R.Ymax) / 2
Z = RL.GetZ(X, Y, Nothing)
If Z = -1000000 Then
  MsgBox "Слой " & L.UserName & " отметок в этой точке не дает"
Else
  MsgBox "Отметка в середине слоя: " & Z
End If
End Sub

Python:

import zulu

def Macro_Layer_ReliefLayer():
    # Берем активный слой карты
    L = zulu.App.ActiveMapDoc.Layers.Active
    R = L.GetBoundsRectangle()
    rl = L.ReliefLayer
    # Спрашиваем отметку в середине слоя
    x = (R.Xmin + R.Xmax) / 2
    y = (R.Ymin + R.Ymax) / 2
    # систему координат берем у слоя: пустое значение python не принимает
    z = rl.GetZ(x, y, L.GetCRS())
    if z == -1000000:
        print("Слой", L.UserName, "отметок в этой точке не дает")
    else:
        print("Отметка в середине слоя:", z)