Wdrażam narzędzie, które pozwala użytkownikowi utworzyć profil funkcji (w moim przypadku działki miejskie). Czy możliwe jest automatyczne wykonanie zrzutu ekranu tej funkcji (wyświetlanego w oknie QGIS) i wyświetlenie go w profilu PDF?
Zdjęcie powinno pokazywać jedynie zasięg funkcji i być może warstwę WMS, która leży poza tą funkcją. Czy są już jakieś narzędzia, które możesz zasugerować?
Odpowiedzi:
kopi,
Istnieje kilka podejść do rozwiązania, ale może to być jedno z najprostszych (w zależności od potrzeb):
Wybierz funkcję za pomocą QgsVectorLayer
Zakładając odniesienie do twojej warstwy wektorowej (vlayer) i identyfikatora obiektu (fid). Zobacz też
Powiększ wybraną funkcję za pomocą QgsInterface
Odznacz funkcję za pomocą QgsVectorLayer
Zapisz płótno jako obraz za pomocą QgsMapCanvas
Dzięki takiemu podejściu powstaje możliwie największe zdjęcie, jeśli okno jest rozszerzone do pełnego, ponieważ zapisywanie obszaru roboczego jest w rozdzielczości ekranu. Nie gwarantuje to jednak, że zdjęcia będą miały tę samą skalę powiększenia mapy, a jedynie względnie ten sam rozmiar pikseli. Istnieją inne opcje, takie jak
QgisInterface::actionPanToSelected()
konieczność zachowania stałej skali powiększenia.źródło
qgis.utils.iface.mapCanvas().zoomScale(scale)
ustawić skalę mapy. actionPanToSelected () nie przyjmuje parametru, ale zwraca odwołanie do samej akcji (jak powyżej actionZoomToSelected ()). Skorzystaj z jego publicznego slotu,qgis.utils.iface.actionPanToSelected().trigger()
aby wystrzelić akcję, która poradzi sobie z ustaleniem, co zostało wybrane.