Я реализую инструмент, который позволяет пользователю создавать профиль объекта (в моем случае городские участки). Можно ли автоматически сделать снимок экрана этой функции (отображается в окне QGIS) и отобразить его в профиле PDF?
На рисунке должны отображаться только размеры функции и, возможно, уровень WMS, выходящий за пределы функции. Уже есть какие-то инструменты, которые вы могли бы предложить?
Ответы:
копи,
Существует несколько подходов к решению, но это может быть один из самых простых (в зависимости от ваших потребностей):
Выберите функцию, используя QgsVectorLayer
Предполагая ссылку на ваш векторный слой (vlayer) и идентификатор объекта (fid). Смотрите также
Увеличьте масштаб выбранной функции с помощью QgsInterface
Отмените выбор функции с помощью QgsVectorLayer
Сохраните холст как изображение, используя QgsMapCanvas
Этот подход позволяет получить максимально возможную фотографию, если окно развернуто до полного размера, поскольку при сохранении холста используется разрешение экрана. Однако это не гарантирует, что ваши изображения будут иметь одинаковый масштаб масштабирования карты, только относительно того же размера пикселя. Есть и другие варианты, например,
QgisInterface::actionPanToSelected()
если вам нужно, чтобы масштаб был согласованным.источник
qgis.utils.iface.mapCanvas().zoomScale(scale)
установить масштаб карты. actionPanToSelected () не принимает параметр, но возвращает ссылку на само действие (как actionZoomToSelected () выше). Используйте его публичный слот,qgis.utils.iface.actionPanToSelected().trigger()
чтобы запустить действие, которое будет обрабатывать выяснение того, что выбрано.