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:

areaUnit

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

cosmetic

Косметический слой карты.

distanceUnit

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

editable_layer

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

layers

Список слоев и групп слоев.

need_redraw

Signal[] Сигнал о необходимости перерисовки карты.

Methods:

draw(context)

Рисует карту в контексте.

get_best_coordsystem()

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

get_best_rect([coordsystem])

Определяет ограничивающий прямоугольник карты.

to_image(width, height[, coordsystem, bbox])

Рисует карту в изображение.

property areaUnit

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

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

AreaUnit

property cosmetic

Косметический слой карты.

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

VectorLayer

property distanceUnit

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

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

LinearUnit

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 – При попытке установить слой, не принадлежащий этой карте.

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

VectorLayer

get_best_coordsystem()

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

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

CoordSystem

get_best_rect(coordsystem=None)

Определяет ограничивающий прямоугольник карты.

Параметры

coordsystem (Optional[CoordSystem]) – Координатная система, в которой необходимо получить результат. Если отсутствует, будет выдан результат для наиболее подходящей координатной системы.

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

Rect

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.ungroup(1)
# Удаление слоя из карты
map.layers.remove(1)
# Добавление пустой группы
map.layers.add_group('Новая группа')
Тип результата

ListLayers

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)

Рисует карту в изображение.

Параметры
  • width (int) – Ширина выходного изображения.

  • height (int) – Высота выходного изображения.

  • coordsystem (Optional[CoordSystem]) – Координатная система. Если не задана, берется наиболее подходящая.

  • bbox (Optional[Rect]) – Ограничивающий прямоугольник. Если не задан, берется у карты.

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

QImage

Результат

Изображение.