Python kullanarak QGIS'de seçtiğim özelliğin bir “ekran görüntüsünü” otomatik olarak almak mümkün müdür?


11

Kullanıcının bir özellik profili oluşturmasına izin veren bir araç kullanıyorum (benim durumumda kentsel parseller). Bu özelliğin (QGIS penceresinde görüntülenen) ekran görüntüsünü otomatik olarak alıp PDF profilinde görüntülemek mümkün müdür?

Resim yalnızca özelliğin kapsamını ve belki de özelliğin ötesinde bir WMS katmanını göstermelidir. Önerebileceğiniz bazı araçlar var mı?


PNG yerine JPG'yi nasıl kaydedebilirim? QgsMapCanvas.saveAsImage (QString theFileName, QPixmap * QPixmap = 0, QString = "PNG") Son parametre olarak "JPG" yi kullanabileceğimi biliyorum, ancak QPixmap'in gerçek harita ile tamamen aynı olduğunu nasıl tanımlayacağımı bilmiyorum qgis penceresinde. Yardım için teşekkürler. Micha
gismic

Yanıtlar:


10

kopi,

Bir çözüme birkaç yaklaşım vardır, ancak bu en basitlerinden biri olabilir (ihtiyaçlarınıza bağlı olarak):

QgsVectorLayer kullanarak özelliği seçin

Vektör katmanınıza (vlayer) ve özelliğin kimliğine (fid) başvuru varsayarsak. Ayrıca bakınız

vlayer.select(fid)

QgsInterface kullanarak seçilen özelliği yakınlaştırın

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

QgsVectorLayer kullanarak özelliğin seçimini kaldırın

vlayer.deselect(fid)

QgsMapCanvas kullanarak tuvali resim olarak kaydet

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

Pencereniz tam olarak genişletilirse, bu yaklaşım mümkün olduğunca büyük bir fotoğraf üretir, çünkü tuvali kaydetmek ekran çözünürlüğündedir. Ancak, resimlerinizin aynı harita zum ölçeğinde olmasını sağlamaz, yalnızca nispeten aynı piksel boyutundadır. QgisInterface::actionPanToSelected()Yakınlaştırma ölçeğini tutarlı tutmanız gerekip gerekmediği gibi başka seçenekler de vardır .


Vay. Cevabınız için teşekkür ederim! Bu çok iyi çalışıyor!
kopi

1
"kolay baskı" eklentisine de bir göz atın, muhtemelen ihtiyacınız olan şey değil, ancak ilham için yararlı olabilir.
Giovanni Manghi

Ekran görüntüsünü almadan önce ölçeği ayarlamak mümkün müdür? Ve "actionPanToSelected" ı nasıl kullanabilirim? Ben bu şekilde deniyorum: qgis.utils.iface.actionPanToSelected (işlevi kaydırmak zorunda özelliği ...), ancak bu bir hata iletisi döndürür: "Attritbute Hata: QgisInterface nesnesi hiçbir özelliği vardır actionPanToSelected
kopi

1
qgis.utils.iface.mapCanvas().zoomScale(scale)Harita ölçeğini ayarlamaya çalışın . actionPanToSelected () bir parametre almaz, ancak eylemin kendisine bir başvuru döndürür (yukarıdaki actionZoomToSelected () gibi). qgis.utils.iface.actionPanToSelected().trigger()Seçileni bulmak için eylemi başlatmak için genel yuvasını kullanın .
dakcarto

1
Hmmm. qgis.utils.iface.actionPanToSelected (). trigger () benim için QGIS 1.8.0 sürümü altında çalışır. En son kararlı sürümü (1.8.0) mı kullanıyorsunuz? Özellik Ocak ayında tekrar eklendi , bu yüzden 1.7.x sürümünde değil .
dakcarto
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.