Интерфейс для работы со слоем трекинга. Возвращается свойством TrackingLayer объекта Layer.
Входит в состав ZuluGIS 2021 Library.
Слой трекинга хранит треки устройств с привязкой ко времени. Методы интерфейса задают, какая часть этих данных попадёт в выборку: фильтр по устройствам — SetUserIDFilter, условия по остальным полям — SetFieldCondition, временной диапазон — SetTimeFilter. Состав устройств слоя возвращает GetDevices.
Фильтры накапливаются. Условия по полям снимаются методом ClearFieldConditions, временной фильтр — отдельным вызовом SetTimeFilter с типом 0.
Интерфейс возвращается для любого слоя, а не только для слоя трекинга. Определить тип слоя заранее нельзя: отдельного значения для слоя трекинга в eLayerType нет, а сами такие слои размещаются на ZuluServer. Судить приходится по возвратам: на слое, который слоем трекинга не является, все методы задания фильтров возвращают -1, методы чтения — пустую строку, а GetDevices — Nothing.
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 SubPython:
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)