ITileLayer object

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

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

Методы:

Описание:

Тайловый слой хранит не объекты, а готовые растровые плитки, разложенные по уровням масштаба. Параметры этой раскладки — систему координат, модель нумерации, шаблон запроса, диапазон уровней — держит описатель TileLayerDef. Прочитать его у слоя можно методом GetLayerDef, записать обратно — методом SetLayerDef.

Интерфейс возвращается для любого слоя, а не только для тайлового, поэтому тип слоя следует проверять отдельно: свойство Type должно быть равно eTileLayer (108) для локального слоя или eRemoteTileLayer (109) для слоя на ZuluServer, см. eLayerType.

На слое, который тайловым не является, методы интерфейса ничего осмысленного не возвращают: GetLevelLimits отдаёт Nothing, а GetShiftX0.

Новый тайловый слой создаётся методом TileLayerCreate объекта ZuluTools.

Пример:

Visual Basic:

Sub ITileLayer_cls
'Создаем тайловый слой OpenStreetMap
Set Def = CreateObject("ZuluLib.TileLayerDef")
Def.SetCRSCode "EPSG:3857"
Def.SetModel 3
Def.SetQueryTemplateString "http://a.tile.openstreetmap.org/"
Set Tools = CreateObject("ZuluLib.ZuluTools")
Tools.TileLayerCreate "C:\Data\osm.zww", Def
'Открываем его и берем интерфейс тайлового слоя
Set L = CreateObject("ZuluLib.Layer")
L.Open "C:\Data\osm.zww"
Set T = L.TileLayer
'Тип 108 - локальный тайловый слой
Set lim = T.GetLevelLimits(2)
MsgBox "Тип слоя: " & L.Type & vbCrLf & _
       "Уровни: " & T.GetLayerDef.GetMinLevel & " .. " & T.GetLayerDef.GetMaxLevel & vbCrLf & _
       "Плиток на уровне 2: " & lim.Xmax & " на " & lim.Ymax
End Sub

Python:

import zulu

def Macro_ITileLayer_cls():
    # Создаем тайловый слой OpenStreetMap
    Def = zulu.TileLayerDef()
    Def.SetCRSCode("EPSG:3857")
    Def.SetModel(3)
    Def.SetQueryTemplateString("http://a.tile.openstreetmap.org/")
    zulu.ZuluTools().TileLayerCreate(r"C:\Data\osm.zww", Def)
    # Открываем его и берем интерфейс тайлового слоя
    L = zulu.Layer()
    L.Open(r"C:\Data\osm.zww")
    T = L.TileLayer
    # Тип 108 - локальный тайловый слой
    print("Тип слоя:", L.Type)
    d = T.GetLayerDef()
    print("Уровни:", d.GetMinLevel(), "..", d.GetMaxLevel())
    lim = T.GetLevelLimits(2)
    print("Плиток на уровне 2:", lim.Xmax, "на", lim.Ymax)