Map - Карта¶
-
class
axipy.render.
Map
(layers=[])¶ Класс карты. Рассматривается как группа слоев, объединенная в единую сущность. Вне зависимости от СК входящих в карту слоев, карта отображает все слои в одной СК. Найти наиболее подходящую для этого можно с помощью
get_best_coordsystem()
или же установить другую.Единицы измерения расстояний
distanceUnit
и площадейareaUnit
берутся из настроек по умолчанию.- Параметры
layers (
List
[Layer
]) – Список слоев, с которым будет создана карта.- Исключение
ValueError – Если один и тот же слой был передан несколько раз.
table_world = provider_manager.openfile(filepath) world = Layer.create(table_world) map = Map([ world ]) print('СК:', map.get_best_coordsystem().prj) print('Охват:', map.get_best_rect()) print('Единицы измерения расстояний:', map.distanceUnit.description) map.distanceUnit = Unit.mi print('Единицы измерения расстояний (изменено):', map.distanceUnit.description) ''' >>> СК: Earth Projection 12, 62, "m", 0 >>> Охват: (-16194966.287183324 -8621185.324024437) (16789976.633236416 8326222.646170927) >>> Единицы измерения расстояний: километры >>> Единицы измерения расстояний (изменено): мили '''
Attributes:
Единицы измерения площадей карты.
Косметический слой карты.
Пользовательские метки
Единицы измерения расстояний на карте.
Слой, установленный для текущего редактирования в карте.
Список слоев и групп слоев.
Signal[]
Сигнал о необходимости перерисовки карты.Methods:
draw
(context)Рисует карту в контексте.
Определяет координатную системы карты, наиболее подходящую исходя из содержимого перечня слоев.
get_best_rect
([coordsystem])Определяет ограничивающий прямоугольник карты.
to_image
(width, height[, coordsystem, bbox])Рисует карту в изображение.
-
property
cosmetic
¶ Косметический слой карты.
- Тип результата
-
property
custom_labels
¶ Пользовательские метки
table_world = provider_manager.openfile(filepath) world_layer = Layer.create(table_world) map_ = Map([ world_layer ]) # Определим свойства p = CustomLabelProperties() # Переназначим выражение p.expression = 'Новое выражение' # Угол поворота p.angle = 30 # Выноска будет в виде стрелки p.endType = CustomLabelEndType.Arrow # Положение выноски p.position = Point(100, 200) # Установим свойства map_.custom_labels.set(map_.layers[0], 1, p) # Запрос свойств props = map_.custom_labels.get(map_.layers[0], 1)
- Тип результата
-
property
distanceUnit
¶ Единицы измерения расстояний на карте.
- Тип результата
-
draw
(context)¶ Рисует карту в контексте.
- Параметры
context (
Context
) – Контекст рисования.
# Пример получения карты как растра map = Map([ world ]) image = QImage(1600, 800, QImage.Format_ARGB32_Premultiplied) image.fill(Qt.white) painter = QPainter(image) context = Context(painter) map.draw(context)
-
property
editable_layer
¶ Слой, установленный для текущего редактирования в карте.
- Исключение
ValueError – При попытке установить слой, не принадлежащий этой карте.
- Тип результата
-
get_best_coordsystem
()¶ Определяет координатную системы карты, наиболее подходящую исходя из содержимого перечня слоев.
- Тип результата
CoordSystem
-
get_best_rect
(coordsystem=None)¶ Определяет ограничивающий прямоугольник карты.
-
property
layers
¶ Список слоев и групп слоев.
Примечание
Не содержит косметический слой
cosmetic
.# Создадим карту с тремя слоями map = Map([ world, worldcap, russia ]) print(len(map.layers)) ''' >>> 3 ''' print(map.layers[0].title) ''' >>> world ''' # Группировка первый двух слоев с именем "Мир" map.layers.group([0,1], 'Мир') # Перечень элементов for l in map.layers: if isinstance(l, Layer): print('Слой:', l.title) elif isinstance(l, ListLayers): print('Группа:', l.title) ''' >>> Группа: Мир >>> Слой: russia ''' # Изменение позиции map.layers.move(0,1) # Управление видимостью группы слоев map.layers[1].visible = False # Разгруппировка ранее созданной группы map.layers.ungroup(1) # Удаление слоя из карты map.layers.remove(1) # Добавление пустой группы map.layers.add_group('Новая группа')
- Тип результата
-
property
need_redraw
¶ Signal[]
Сигнал о необходимости перерисовки карты. Возникает при изменении контента одного или нескольких слоев карты. Это может быть обусловлено изменением данных таблиц.# Смотрим активное окно. if isinstance(view_manager.active, MapView): # Если это карта, подключимся к событию обновления окна этой карты. map_view = view_manager.active map_view.map.need_redraw.connect(lambda : print('Update map'))
- Тип результата
Signal
-
to_image
(width, height, coordsystem=None, bbox=None)¶ Рисует карту в изображение.
- Параметры
- Тип результата
- Результат
Изображение.