MapView - Окно просмотра карты

class axipy.gui.MapView

Базовые классы: axipy.gui.DrawableView

Окно просмотра карты. Используется для проведения различных манипуляций с картой. Для создания экземпляра необходимо использовать axipy.gui.ViewManager.create_mapview() через экземпляр view_manager (пример см. ниже).

Примечание

При создании „MapView“ посредством axipy.gui.ViewManager.create_mapview() производится клонирование экземпляра карты axipy.render.Map и для последующей работы при доступе к данному объекту необходимо использовать свойство map.

Свойство device_rect определяет размер самого окна карты, а свойство scene_rect - прямоугольную область, которая умещается в этом окне в СК карты.

Преобразование между этими двумя прямоугольниками производится с помощью матриц трансформации scene_to_device_transform и device_to_scene_transform.

К параметрам самой карты можно получить доступ через свойство map. Единицы измерения координат (unit) также берутся из наиболее подходящей СК, но при желании они могут быть изменены. К примеру, вместо метров могут быть установлены километры.

Рассмотрим пример создания карты с последующим помещением ее в окно ее просмотра. Далее, попробуем преобразовать объект типа полигон из координат окна экрана в координаты СК слоя посредством axipy.da.Geometry.affine_transform().

# Откроем таблицу, создадим на ее базе слой и добавим в карту
table_world = provider_manager.openfile('world.tab')
world = Layer.create(table_world)
map = Map([ world ])
# Для полученной карты создадим окно просмотра
mapview = view_manager.create_mapview(map)
# Выведем полученные параметры отображения
print('Прямоугольник экрана:', mapview.device_rect)
print('Прямоугольник карты:', mapview.scene_rect)
# Установим ширину карты и ее центр
mapview.center = (1000000, 1000000)
mapview.set_zoom(10e6 )

>>> Прямоугольник экрана: (0.0 0.0) (300.0 200.0)
>>> Прямоугольник карты: (-16194966.287183324 -8621185.324024437) (16789976.633236416 8326222.646170927)
#Создадим геометрический объект полигон в координатах экрана и преобразуем его в СК карты
poly_device = Polygon([(100,100), (100,150), (150, 150), (150,100)])
# Используя матрицу трансформации, преобразуем его в координаты карты.
poly_scene = poly_device.affine_transform(mapview.device_to_scene_transform)
# Для контроля выведем полученный полигон в виде WKT
print('WKT:', poly_scene.wkt)

>>> WKT: POLYGON ((-5199985.31371008 -147481.338926755, -5199985.31371008 -4384333.3314756, 297505.173026545 -4384333.3314756, 297505.173026545 -147481.338926755, -5199985.31371008 -147481.338926755))

Attributes:

can_redo

Возможен ли откат на один шаг вперед.

can_undo

Возможен ли откат на один шаг назад.

center

Центр окна карты.

coordsystem

Система координат карты.

coordsystem_changed

Сигнал о том, что система координат изменилась.

coordsystem_visual

Система координат карты с учетом поправки цены градуса по широте.

device_rect

Видимая область в координатах окна (пиксели).

device_to_scene_transform

Объект трансформации из координат окна в координаты карты.

editable_layer

Редактируемый слой на карте.

editable_layer_changed

Сигнал о том, что редактируемый слой сменился.

is_modified

Есть ли изменения в окне.

map

Объект карты.

rect

Размер и положение окна.

scale

Масштаб карты.

scene_changed

«Сигнал об изменении контента окна.

scene_rect

Видимая область в координатах карты (в единицах измерения СК).

scene_to_device_transform

Объект трансформации из координат карты в координаты окна.

selected_layer

Выделенный слой на карте.

show_type

Возвращает тип состояния окна.

snap_mode

Включает режим привязки координат при редактировании геометрии в окне карты или отчета.

title

Заголовок окна просмотра.

unit

Единицы измерения координат карты.

widget

Виджет, соответствующий содержимому окна.

Methods:

close()

Закрывает окно.

mouse_moved(x, y)

Сигнал при смещении курсора мыши.

redo()

Производит откат на один шаг вперед.

scale_with_center(scale, center)

Установка нового центра с заданным масштабированием.

set_zoom(zoom[, unit])

«Задание ширины окна карты.

set_zoom_and_center(zoom, center[, unit])

«Задает новый центр и ширину окна карты.

show([type])

Показывает окно в соответствие с приведенным типом.

show_all()

Полностью показывает все слои карты.

undo()

Производит откат на один шаг назад.

zoom([unit])

Ширина окна карты.

property can_redo

Возможен ли откат на один шаг вперед.

Тип результата

bool

property can_undo

Возможен ли откат на один шаг назад.

Тип результата

bool

property center

Центр окна карты.

Тип результата

Pnt

close()

Закрывает окно.

property coordsystem

Система координат карты.

Тип результата

CoordSystem

property coordsystem_changed

Сигнал о том, что система координат изменилась.

Пример:

layer_world = Layer.create(table_world)
map = Map([ layer_world ])
mapview = view_manager.create_mapview(map)
mapview.coordsystem_changed.connect(lambda: print('СК была изменена'))
csLL = CoordSystem.from_prj("1, 104")
mapview.coordsystem = csLL

>>> СК была изменена
Тип результата

Signal

property coordsystem_visual

Система координат карты с учетом поправки цены градуса по широте. Отличается от coordsystem только лишь в случае, когда основная система координат - это широта/долгота и широта имеет ненулевое значение. При этом в диапазоне широты (-70…70) градусов вводится поправочный коэффициент, растягивающий изображение по широте и равный 1/cos(y).

Тип результата

CoordSystem

property device_rect

Видимая область в координатах окна (пиксели).

Тип результата

Rect

Результат

Прямоугольник в координатах окна.

property device_to_scene_transform

Объект трансформации из координат окна в координаты карты.

Тип результата

QTransform

Результат

Объект трансформации.

property editable_layer

Редактируемый слой на карте.

Тип результата

Optional[VectorLayer]

Результат

Редактируемый слой. Если не определен, возвращает None.

property editable_layer_changed

Сигнал о том, что редактируемый слой сменился.

Тип результата

Signal

property is_modified

Есть ли изменения в окне.

Тип результата

bool

property map

Объект карты.

Тип результата

Map

Результат

Карта.

mouse_moved(x, y)

Сигнал при смещении курсора мыши. Возвращает значения в СК карты.

Параметры
  • x (float) – X координата

  • y (float) – Y координата

Пример:

mapview.mouse_moved.connect(lambda x,y: print('Coords: {} {}'.format(x, y)))

>> Coords: -5732500.0 958500.0
>> Coords: -5621900.0 847900.0
Тип результата

Signal

property rect

Размер и положение окна.

Тип результата

QRect

redo()

Производит откат на один шаг вперед. При этом возвращается состояние до последней отмены.

property scale

Масштаб карты.

Тип результата

float

scale_with_center(scale, center)

Установка нового центра с заданным масштабированием.

Параметры
  • scale (float) – Коэффициент масштабирования по отношению к текущему.

  • center (Pnt) – Устанавливаемый центр.

property scene_changed

«Сигнал об изменении контента окна.

Тип результата

Signal

property scene_rect

Видимая область в координатах карты (в единицах измерения СК).

Тип результата

Rect

Результат

Прямоугольник в координатах карты.

property scene_to_device_transform

Объект трансформации из координат карты в координаты окна.

Тип результата

QTransform

Результат

Объект трансформации.

property selected_layer

Выделенный слой на карте.

Тип результата

Optional[VectorLayer]

Результат

Выделенный слой. Если выделение отсутствует, возвращает None.

set_zoom(zoom, unit=None)

«Задание ширины окна карты.

Параметры
  • zoom (float) – Значение ширины карты.

  • unit (Optional[LinearUnit]) – Единицы измерения. Если не заданы, берутся текущие для карты.

set_zoom_and_center(zoom, center, unit=None)

«Задает новый центр и ширину окна карты.

Параметры
  • zoom (float) – Значение ширины карты.

  • center (Pnt) – Центр карты.

  • unit (Optional[LinearUnit]) – Единицы измерения. Если не заданы, берутся текущие для карты.

show(type=1)

Показывает окно в соответствие с приведенным типом.

Допустимые значения:

Константа

Значение

Описание

SHOW_NORMAL

1

Обычный показ окна (по умолчанию).

SHOW_MINIMIZED

2

Показ окна в режиме минимизации.

SHOW_MAXIMIZED

3

Показ окна в режиме распахивания.

show_all()

Полностью показывает все слои карты.

property show_type

Возвращает тип состояния окна. Подробнее см. show()

Тип результата

int

property snap_mode

Включает режим привязки координат при редактировании геометрии в окне карты или отчета.

Тип результата

bool

property title

Заголовок окна просмотра.

Тип результата

str

undo()

Производит откат на один шаг назад.

property unit

Единицы измерения координат карты.

Тип результата

LinearUnit

property widget

Виджет, соответствующий содержимому окна.

Тип результата

QWidget

Результат

Qt5 виджет содержимого.

zoom(unit=None)

Ширина окна карты.

Параметры

unit (Optional[LinearUnit]) – Единицы измерения. Если не заданы, берутся текущие для карты.

Тип результата

float