SetCRS method (Layer)

Метод назначает данным, хранящимся в слое, систему координат, описанную в объекте CRS.

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

Layer

Синтаксис:

Visual Basic:

Function SetCRS(inCRS As CRS) As Long

inCRS - объект, описывающий систему координат.

Описание:

Следует отметить, что происходит именно назначение для существующих данных системы координат. Никакого преобразования данных из текущей системы координат во вновь заданную не происходит.

Метод возвращает 0 при успехе и -1, если системы нет (например, передали Nothing). Объект системы создается как ZuluLib.CRS и настраивается методом InitByCode: код вида EPSG:4326 дает 0, а неизвестный код - -1. Текущую систему слоя возвращает метод GetCRS.

Координаты объектов при этом не пересчитываются, а только читаются в единицах новой системы: расстояние, которое было записано в сантиметрах плана, после назначения географической системы показывается в градусах.

Пример:

Пример назначает слою другую систему координат и возвращает прежнюю.

Visual Basic:

Sub Layer_SetCRS
'Берем активный слой карты
Set L = Zulu.ActiveMapDoc.Layers.Active
Set Was = L.GetCRS
S = "Левый край слоя: " & L.GetBoundsRectangle.Xmin
'Объявляем данные слоя географическими координатами
Set C = CreateObject("ZuluLib.CRS")
S = S & vbCrLf & "код системы принят: " & C.InitByCode("EPSG:4326")
S = S & vbCrLf & "назначение системы: " & L.SetCRS(C)
S = S & vbCrLf & "тот же край теперь: " & L.GetBoundsRectangle.Xmin
'Возвращаем слою прежнюю систему
L.SetCRS Was
S = S & vbCrLf & "после возврата: " & L.GetBoundsRectangle.Xmin
MsgBox S
End Sub

Python:

import zulu

def Macro_Layer_SetCRS():
    # Берем активный слой карты
    L = zulu.App.ActiveMapDoc.Layers.Active
    was = L.GetCRS()
    print("Левый край слоя:", L.GetBoundsRectangle().Xmin)
    # Объявляем данные слоя географическими координатами
    c = zulu.CRS()
    print("код системы принят:", c.InitByCode("EPSG:4326"))
    print("назначение системы:", L.SetCRS(c))
    print("тот же край теперь:", L.GetBoundsRectangle().Xmin)
    # Возвращаем слою прежнюю систему
    L.SetCRS(was)
    print("после возврата:", L.GetBoundsRectangle().Xmin)