GetBoundsCRS method (MapDoc)

Возвращает габариты карты в системе координат, заданной строковым кодом.

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

MapDoc

Синтаксис:

Visual Basic:

Function GetBoundsCRS(sCRS As String, X1 As Double, Y1 As Double, X2 As Double, Y2 As Double) As Long

sCRS - код системы координат, в которой определяются габариты карты, например EPSG:4326.

X1, Y1 - наименьшие значения координат объектов карты.

X2, Y2 - наибольшие значения координат объектов карты.

Описание:

Если метод выполнен успешно, он вернет 0, а в переменные X1, Y1, X2, Y2 будут записаны габариты карты (те же, что дает GetBoundsRectangle), пересчитанные в заданную систему координат. Для пустой строки и неизвестного кода метод вернет -1.

Ось X направлена на север, Y - на восток, поэтому в географической системе координат (EPSG:4326) X - это широта, а Y - долгота. Пересчет имеет смысл, если у карты есть своя система координат (GetCRS). У карты без системы координат (план-схемы) координаты лишь переводятся в единицы заданной системы, без географической привязки.

Метод записывает результат по ссылке в переменные типа Double, поэтому в VBScript, в том числе в макросах ZuluGIS на Visual Basic, его применить нельзя: вызов завершается ошибкой «Type mismatch». Там габариты в другой системе координат можно получить по слоям карты - методом Layer.GetBoundsCRSRectangle. В python метод возвращает кортеж: код результата и четыре координаты.

Пример:

Python:

import zulu

def Macro_MapDoc_GetBoundsCRS():
    # Берем рабочую карту
    doc = zulu.App.ActiveMapDoc
    # Габариты карты в географических координатах WGS 84
    res, x1, y1, x2, y2 = doc.GetBoundsCRS("EPSG:4326")
    if res == 0:
        print("широта:", x1, "-", x2)
        print("долгота:", y1, "-", y2)
    else:
        print("Габариты в EPSG:4326 не получены")