PyQGIS'te proje yolu veya katman dosyası mı alıyorsunuz?


13

Bir projedeki vektör katmanlarından yeni raster dosyaları oluşturuyorum. Onları proje veya katman dosyaları ile aynı dizine kaydetmek istiyorum.

Bu yolu PyQGIS kullanarak nasıl bulabilirim?

Yanıtlar:


17

Python konsolu için:

QgsProject.instance().readPath("./") # also try "../"

Veya ile

dir(QgsProject.instance())

gibi bir şey buluyorsun

fileName()

Python eklentisi için (test edilmedi!):

from PyQt4.QtGui import QMessageBox
from qgis.core import QgsProject
path_absolute = QgsProject.instance().readPath("./")
QMessageBox.information(None, "Title", "AP: " + unicode(path_absolute))

14

Bir vektör dosyası yoluna erişmek için, etkin bir katmanda, bu kod Python Konsolu'nda iyi çalışır:

>>>import os
>>>myfilepath= iface.activeLayer().dataProvider().dataSourceUri()
>>>myfilepath
u'/home/zeito/tiznados_canoa.tif'
>>>(myDirectory,nameFile) = os.path.split(myfilepath)
>>>myDirectory
u'/home/zeito'
>>>nameFile
u'tiznados_canoa.tif'

Aktif bir katman olarak benim 'tiznados_canoa.tif' rasterimle test edildi.


3
Vektör katmanında dosya adından sonraki yolun ayrıca boru ve katman kimliği içerdiğini unutmayın (C: /shapes/test.shp | layerid = 0). Kaldırmak için path = path [: path.rfind ('|')] kullanıyorum.
Miro

8

Etkin bir katmanda bir vektör dosyası yoluna erişmek istiyorsanız, bu işe yarıyor gibi görünüyor:

myfilepath= os.path.dirname( unicode( qgis.utils.iface.activeLayer().dataProvider().dataSourceUri() ) ) ;
fic = myfilepath + "[% "FILE" %]"

ardından katmanımla aynı dizinde bulunan bir resmi veya metni açmak için:

from PyQt4 import QtWebKit, QtCore ; vue=QtWebKit.QWebView() vue.setUrl( QtCore.QUrl( fic ) ) ; vue.show()

Yararlı cevap ama dosya adı ne olacak? "[%" FILE "%]" kullanıyorsunuz ama bunun ne anlama geldiğini anlamıyorum ...
GM

1

Bunu QGIS 3.4'te test ettim
QgsProject.instance().fileName()

dosyanın tüm yolunu döndürür

'C: /MyDirectory/18809_US66.qgz'

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.