GetTileBoundsRectangle method (ITileLayer)

Возвращает прямоугольник ZRectangle с габаритами одного тайла.

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

ITileLayer

Синтаксис:

Visual Basic:

Function GetTileBoundsRectangle(z As Long, X As Long, Y As Long) As ZRectangle

z - уровень тайловой системы.

X, Y - номера тайла на этом уровне.

Описание:

Габариты возвращаются в системе координат слоя. Размер тайла на уровне z вдвое меньше, чем на предыдущем: для слоя в EPSG:3857 сторона тайла составляет 40 075 016,69 м на нулевом уровне, 20 037 508,34 м на первом, 10 018 754,17 м на втором и 39 135,76 м на десятом.

Отсчёт номеров зависит от параметров тайловой схемы в описателе слоя — его возвращает метод GetLayerDef, а направление задают SetNorthing и SetXYOrder. Для описателя, созданного с кодом EPSG:3857 и моделью eTileModelOpenStreetMap без явной установки ориентации, тайл с номерами 0, 0 лежит в юго-восточном углу, увеличение X смещает тайл на север, а увеличение Y — на запад.

Аргументы не проверяются. Метод просто вычисляет прямоугольник по формуле, поэтому номера за пределами уровня и отрицательные номера принимаются и дают прямоугольник за границами мира. Уровень за пределами диапазона слоя тоже принимается: при z = 99 возвращается вырожденный прямоугольник нулевого размера. Номера следует проверять самостоятельно; допустимый диапазон уровней даёт описатель слоя.

Габариты всего уровня целиком возвращает метод GetLevelBoundsRectangle.

Если слой тайловым не является, метод возвращает Nothing.

Пример:

Visual Basic:

Sub ITileLayer_GetTileBoundsRectangle
'Создаем описатель тайлового слоя 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 rc = L.TileLayer.GetTileBoundsRectangle(1, 0, 0)
MsgBox "Тайл 0,0 уровня 1:" & vbCrLf & _
       "X от " & rc.Xmin & " до " & rc.Xmax & vbCrLf & _
       "Y от " & rc.Ymin & " до " & rc.Ymax & vbCrLf & _
       "сторона " & (rc.Xmax - rc.Xmin)
End Sub

Python:

import zulu

def Macro_ITileLayer_GetTileBoundsRectangle():
    # Создаем описатель тайлового слоя 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")
    rc = L.TileLayer.GetTileBoundsRectangle(1, 0, 0)
    print("Тайл 0,0 уровня 1:")
    print("  X от", rc.Xmin, "до", rc.Xmax)
    print("  Y от", rc.Ymin, "до", rc.Ymax)
    print("  сторона", rc.Xmax - rc.Xmin)