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:
Возможен ли откат на один шаг вперед.
Возможен ли откат на один шаг назад.
Центр окна карты.
Система координат карты.
Сигнал о том, что система координат изменилась.
Система координат карты с учетом поправки цены градуса по широте.
Видимая область в координатах окна (пиксели).
Объект трансформации из координат окна в координаты карты.
Редактируемый слой на карте.
Сигнал о том, что редактируемый слой сменился.
Есть ли изменения в окне.
Объект карты.
Размер и положение окна.
Размер и положение окна.
Масштаб карты.
«Сигнал об изменении контента окна.
Видимая область в координатах карты (в единицах измерения СК).
Объект трансформации из координат карты в координаты окна.
Выделенный слой на карте.
Возвращает тип состояния окна.
Включает режим привязки координат при редактировании геометрии в окне карты или отчета.
Заголовок окна просмотра.
Единицы измерения координат карты.
Виджет, соответствующий содержимому окна.
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])Ширина окна карты.
-
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
¶ Видимая область в координатах окна (пиксели).
- Тип результата
- Результат
Прямоугольник в координатах окна.
-
property
device_to_scene_transform
¶ Объект трансформации из координат окна в координаты карты.
- Тип результата
- Результат
Объект трансформации.
-
property
editable_layer
¶ Редактируемый слой на карте.
- Тип результата
- Результат
Редактируемый слой. Если не определен, возвращает None.
-
property
editable_layer_changed
¶ Сигнал о том, что редактируемый слой сменился.
- Тип результата
Signal
-
mouse_moved
(x, 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
¶ Размер и положение окна.
Предупреждение
Не рекомендуется, начиная с версии 4.0: Используйте
position
.- Тип результата
-
redo
()¶ Производит откат на один шаг вперед. При этом возвращается состояние до последней отмены.
-
scale_with_center
(scale, center)¶ Установка нового центра с заданным масштабированием.
-
property
scene_changed
¶ «Сигнал об изменении контента окна.
- Тип результата
Signal
-
property
scene_rect
¶ Видимая область в координатах карты (в единицах измерения СК).
- Тип результата
- Результат
Прямоугольник в координатах карты.
-
property
scene_to_device_transform
¶ Объект трансформации из координат карты в координаты окна.
- Тип результата
- Результат
Объект трансформации.
-
property
selected_layer
¶ Выделенный слой на карте.
- Тип результата
- Результат
Выделенный слой. Если выделение отсутствует, возвращает 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
snap_mode
¶ Включает режим привязки координат при редактировании геометрии в окне карты или отчета.
- Тип результата
-
undo
()¶ Производит откат на один шаг назад.
-
property
unit
¶ Единицы измерения координат карты.
- Тип результата
-
property
widget
¶ Виджет, соответствующий содержимому окна.
- Тип результата
- Результат
Qt5 виджет содержимого.
-
zoom
(unit=None)¶ Ширина окна карты.
- Параметры
unit (
Optional
[LinearUnit
]) – Единицы измерения. Если не заданы, берутся текущие для карты.- Тип результата
-