Map ================= .. currentmodule:: axioma.render .. class:: Map Класс карты. Предназначен для предоставления доступа к своим элементам: слоям и группам слоев. .. py:method:: Map(parent=None) Конструктор :param parent: Родительский объект. При удалении владельца так же удаляется и сам элемент :type parent: :class:`~PyQt5.QtCore.QObject` .. py:method:: Map(layers, parent=None) Конструктор :param layers: Первоначальный список слоев для инициализации карты :type layers: :class:`list` [ :class:`Layer` ] :param parent: Родительский объект. При удалении владельца так же удаляется и сам элемент :type parent: :class:`~PyQt5.QtCore.QObject` .. py:method:: rootLayerGroup() Корневая группа слоев карты. :return: Группа слоев :rtype: :class:`RootLayerGroup` .. py:method:: renderSelection(context) Отрисовка выделения в карте :param context: Контекст, в котором будет отрисовано выделение :type context: :class:`~axioma.render.Context` .. py:method:: findBestCoordSys() Возвращает координатную систему, в которой может быть нарисовано наибольшее число слоев. :return: Координатная система :rtype: :class:`~axioma.cs.CoordSystem` .. py:method:: boundingRect(cs) Определение области карты. :param `~axioma.cs.CoordSystem` cs: КС для области :return: Область карты, в которую попадают все слои :rtype: :class:`~axioma.core.dp.GeoRect` .. py:method:: canRenderAllLayersInCS(cs) Определение, могут ли все слои карты быть отображены в переданной координатной системе. :param `~axioma.cs.CoordSystem` cs: КС для проверки :return: True, если да. В противном случае False :rtype: :class:`bool` .. py:method:: editableLayer() Редактируемый слой карты :return: Слой или :any:`None`, если таковой отсутствует :rtype: :class:`Layer` .. py:method:: setEditableLayer(layer) Установка редактируемого слоя. :param layer: Слой, который нужно сделать редактируемым. :type layer: :class:`Layer` .. py:method:: flatLayerList() Список слоев карты. :return: "Плоский" список слоев карты со всех уровней вложенности :rtype: :class:`list` [ :class:`Layer` ] .. py:method:: mapProperties() Текущие настройки карты. :return: Настройки :rtype: :class:`MapProperties` .. py:method:: setMapProperties(mapProperties) Установка настроек карты. :param mapProperties: Новый набор настроек :type mapProperties: :class:`MapProperties` .. py:method::hidden: cloneForRendering() .. py:method:: labelContainer() Контейнер параметров подписывания :return: контейнер параметров подписывания :rtype: :class:`~axioma.render.FeatureLabelContainer` .. method:: needRedraw() [signal] Сигнал испускается, когда необходимо перерисовать содержимое карты. .. method:: visibilityChanged() [signal] Сигнал испускается, когда меняются параметры видимости содержимого карты. .. method:: editableLayerChanged() [signal] Сигнал испускается, когда производится смена редактируемого слоя. Пример использования: .. code-block:: python def renderMap(table): # Рисование карты c одним слоем try: layer = axioma.app.gui.createLayerForDataObject(table) # временный слой br = layer.boundingRect() # rect слоя baseSize = 800 imRect = QRect (0, 0, baseSize, baseSize * br.height() / br.width()) # размер растра image = QImage(imRect.size(), QImage.Format_ARGB32_Premultiplied) # Сам растр, куда будем рисовать image.fill(Qt.white) painter = QPainter(image) sceneRect = QRectF(br.left(), br.top(), br.width(), br.height()) # Будем рисовать всю область слоя viewport = MapViewport(QRectF(imRect), sceneRect, layer.coordSystem()) context = MapContext (painter,viewport) # контекст, куда рисуем #layer.render(context) # Если мы хотим просто отрисовать существующий слой, не создавая карты (Вместо следующих строчек с созданием карты) map = Map() # Создаем карту renderer = ConcurrentMapRenderer() # Объект, занимающийся многопоточной отрисовкой props = layer.featureLayerProperties() # Свойства слоя #Если мы хотим управлять видимостью #constraints = props.visibilityConstraints() # Ограничение по видимости #print(constraints.zoomMin(), constraints.zoomMax()) # Текущие значения #constraints.setZoomMax(2) # #constraints.setEnabled(True) # Включаем #props.setVisibilityConstraints(constraints) # Подменяем props.setLabelingAttributeName(self.tr("Страна")) # устанавливаем выражение для метки props.setShowLabels(True) # Показ меток props.setCentroidsVisible(True) # Показ центроидов layer.setProperties(props) # Устанавливаем новые свойства слоя map.rootLayerGroup() .append(layer) # добавляем слой в карту renderer.blockingRender(map, context) # отрисовка #self.image.save("/tmp/out.png") # Если мы хотим сохранить как растр в файловой системе except Exception as ex: print(ex)