ITrackingLayer object

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

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

Методы:

Описание:

Слой трекинга хранит треки устройств с привязкой ко времени. Методы интерфейса задают, какая часть этих данных попадёт в выборку: фильтр по устройствам — SetUserIDFilter, условия по остальным полям — SetFieldCondition, временной диапазон — SetTimeFilter. Состав устройств слоя возвращает GetDevices.

Фильтры накапливаются. Условия по полям снимаются методом ClearFieldConditions, временной фильтр — отдельным вызовом SetTimeFilter с типом 0.

Интерфейс возвращается для любого слоя, а не только для слоя трекинга. Определить тип слоя заранее нельзя: отдельного значения для слоя трекинга в eLayerType нет, а сами такие слои размещаются на ZuluServer. Судить приходится по возвратам: на слое, который слоем трекинга не является, все методы задания фильтров возвращают -1, методы чтения — пустую строку, а GetDevicesNothing.

Пример:

Visual Basic:

Sub ITrackingLayer_cls
'Берем активный слой карты
Set L = Zulu.ActiveMapDoc.Layers.Active
Set TR = L.TrackingLayer
'Собираем выборку: два устройства за последние семь дней
TR.SetUserIDFilter "123456,678910"
TR.SetTimeFilter "", "", 7, 2
'Интерфейс отдается для любого слоя, поэтому судим по возвратам
Set ds = TR.GetDevices
If ds Is Nothing Then
  MsgBox "Слой не является слоем трекинга"
Else
  MsgBox "Полей в описании устройств: " & ds.FieldCount
End If
'Снимаем все фильтры
TR.ClearFieldConditions 0
TR.SetTimeFilter "", "", 0, 0
End Sub

Python:

import zulu

def Macro_ITrackingLayer_cls():
    # Берем активный слой карты
    L = zulu.App.ActiveMapDoc.Layers.Active
    TR = L.TrackingLayer
    # Собираем выборку: два устройства за последние семь дней
    TR.SetUserIDFilter("123456,678910")
    TR.SetTimeFilter("", "", 7, 2)
    # Интерфейс отдается для любого слоя, поэтому судим по возвратам
    ds = TR.GetDevices()
    if ds is None:
        print("Слой не является слоем трекинга")
    else:
        print("Полей в описании устройств:", ds.FieldCount)
    # Снимаем все фильтры
    TR.ClearFieldConditions(0)
    TR.SetTimeFilter("", "", 0, 0)