Map - Карта
- class axipy.Map
Класс карты. Рассматривается как группа слоев, объединенная в единую сущность. Вне зависимости от СК входящих в карту слоев, карта отображает все слои в одной СК. Найти наиболее подходящую для этого можно с помощью
get_best_coordsystem()
или же установить другую.Единицы измерения расстояний
distanceUnit
и площадейareaUnit
берутся из настроек по умолчанию.- Параметры:
layers – Список слоев, с которым будет создана карта.
- Исключение:
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) >>> Единицы измерения расстояний: километры >>> Единицы измерения расстояний (изменено): мили '''
Свойства:
Единицы измерения площадей карты.
Косметический слой карты.
Пользовательские метки
Единицы измерения расстояний на карте.
Слой, установленный для текущего редактирования в карте.
Список слоев и групп слоев.
Методы:
draw
(context)Рисует карту в контексте.
Определяет координатную системы карты, наиболее подходящую исходя из содержимого перечня слоев.
get_best_rect
([coordsystem])Определяет ограничивающий прямоугольник карты.
to_image
(width, height[, coordsystem, bbox])Рисует карту в изображение.
Сигналы:
Сигнал о необходимости перерисовки карты.
- property cosmetic: CosmeticLayer
Косметический слой карты.
- property custom_labels: CustomLabels
Пользовательские метки
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: 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: VectorLayer
Слой, установленный для текущего редактирования в карте.
- Исключение:
ValueError – При попытке установить слой, не принадлежащий этой карте.
- get_best_coordsystem() CoordSystem
Определяет координатную системы карты, наиболее подходящую исходя из содержимого перечня слоев.
- get_best_rect(coordsystem: Optional[CoordSystem] = None) Rect
Определяет ограничивающий прямоугольник карты.
- Параметры:
coordsystem – Координатная система, в которой необходимо получить результат. Если отсутствует, будет выдан результат для наиболее подходящей координатной системы.
- property layers: ListLayers
Список слоев и групп слоев.
Примечание
Не содержит косметический слой
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
Сигнал о необходимости перерисовки карты. Возникает при изменении контента одного или нескольких слоев карты. Это может быть обусловлено изменением данных таблиц.
- Тип результата:
Signal[]
# Смотрим активное окно. if isinstance(view_manager.active, MapView): # Если это карта, подключимся к событию обновления окна этой карты. map_view = view_manager.active map_view.map.need_redraw.connect(lambda: print('Update map'))
- to_image(width: int, height: int, coordsystem: Optional[CoordSystem] = None, bbox: Optional[Rect] = None) QImage
Рисует карту в изображение.
- Параметры:
width – Ширина выходного изображения.
height – Высота выходного изображения.
coordsystem – Координатная система. Если не задана, берется наиболее подходящая.
bbox – Ограничивающий прямоугольник. Если не задан, берется у карты.
- Результат:
Изображение.