Python을 사용하여 QGIS에서 선택한 기능의 "스크린 샷"을 자동으로 찍을 수 있습니까?


11

사용자가 지형지 물 (제 경우 도시 소포)의 프로파일을 만들 수있는 도구를 구현하고 있습니다. 이 기능의 스크린 샷 (QGIS 창에 표시)을 자동으로 생성하여 PDF 프로파일에 표시 할 수 있습니까?

그림에는 기능의 범위와 기능을 넘어서는 WMS 계층 만 표시되어야합니다. 이미 제안 할 수있는 도구가 있습니까?


PNG 대신 JPG를 저장하려면 어떻게해야합니까? QgsMapCanvas.saveAsImage (QString theFileName, QPixmap * QPixmap = 0, QString = "PNG") 마지막 매개 변수로 "JPG"를 사용할 수 있다는 것을 알고 있지만 실제 맵과 같은 QPixmap을 정의하는 방법을 모르겠습니다. qgis의 창. 도움에 감사드립니다. Micha
gismic

답변:


10

코피,

솔루션에 대한 몇 가지 접근 방식이 있지만 이는 가장 간단한 방법 중 하나 일 수 있습니다 (필요에 따라 다름).

QgsVectorLayer를 사용하여 기능을 선택하십시오.

벡터 레이어 (vlayer)와 기능의 id (fid)에 대한 참조를 가정합니다. 또한보십시오

vlayer.select(fid)

QgsInterface를 사용하여 선택한 기능으로 확대

qgis.utils.iface.actionZoomToSelected().trigger()

QgsVectorLayer를 사용하여 기능 선택 해제

vlayer.deselect(fid)

QgsMapCanvas를 사용하여 캔버스를 그림으로 저장

qgis.utils.iface.mapCanvas().saveAsImage('/Users/me/Desktop/feature.png')

캔버스를 저장하면 화면 해상도에 있기 때문에이 방법을 사용하면 창을 전체로 확장 한 경우 가능한 한 큰 사진이 만들어집니다. 그러나 사진이 동일한지도 확대 / 축소 비율로 유지되는 것은 아니며 상대적으로 동일한 픽셀 크기 만 보장합니다. QgisInterface::actionPanToSelected()줌 배율을 일정하게 유지해야하는 경우 와 같은 다른 옵션이 있습니다 .


와. 답변 주셔서 감사합니다! 이것은 매우 잘 작동합니다!
kopi

1
"쉬운 인쇄"플러그인도 살펴보십시오. 필요한 것은 아니지만 영감을주는 데 유용 할 수 있습니다.
Giovanni Manghi

스크린 샷을 찍기 전에 스케일을 설정할 수 있습니까? "actionPanToSelected"는 어떻게 사용합니까? qgis.utils.iface.actionPanToSelected (함수에 ... 이동하는 기능)하지만,이 반환 오류 메시지 : 나는이 방법을 시도하고있다 "Attritbute 오류 : QgisInterface 객체에는 속성이 actionPanToSelected 없다
코피

1
qgis.utils.iface.mapCanvas().zoomScale(scale)지도 축척을 설정 하십시오 . actionPanToSelected () 는 매개 변수를 사용하지 않지만 액션 자체에 대한 참조를 반환합니다 (위의 actionZoomToSelected ()). 공개 슬롯 qgis.utils.iface.actionPanToSelected().trigger()을 사용 하여 작업을 실행하면 선택한 항목을 파악할 수 있습니다.
dakcarto

1
흠. qgis.utils.iface.actionPanToSelected (). trigger ()는 QGIS 버전 1.8.0에서 작동합니다. 최신 안정 버전 (1.8.0)을 사용하고 있습니까? 이 기능은 1 월다시 추가 되었으므로 버전 1.7.x에는 없습니다 .
dakcarto
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.