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))
-
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
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
scene_rect
¶ Видимая область в координатах карты (в единицах измерения СК).
- Тип результата
- Результат
Прямоугольник в координатах карты.
-
property
scene_to_device_transform
¶ Объект трансформации из координат карты в координаты окна.
- Тип результата
- Результат
Объект трансформации.
-
property
selected_layer
¶ Выделенный слой на карте.
- Тип результата
- Результат
Выделенный слой. Если выделение отсутствует, возвращает None.
-
set_zoom
(v, unit=None)¶ «Задание ширины окна карты.
- Параметры
unit (
Optional
[LinearUnit
]) – Единицы измерения. Если не заданы, берутся текущие для карты.
-
show_all
()¶ Полностью показывает все слои карты.
-
property
unit
¶ Единицы измерения координат карты.
- Тип результата
-
zoom
(unit=None)¶ Ширина окна карты.
- Параметры
unit (
Optional
[LinearUnit
]) – Единицы измерения. Если не заданы, берутся текущие для карты.- Тип результата
-
property