Mendapatkan jalur proyek, atau file layer di PyQGIS?

13

Saya membuat file raster baru dari layer vektor pada sebuah proyek. Saya ingin menyimpannya di direktori yang sama dengan proyek atau file layer.

Bagaimana cara menemukan jalur ini menggunakan PyQGIS?

fccoelho
sumber

Jawaban:

17

Untuk konsol python:

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

Atau dengan

dir(QgsProject.instance())

Anda menemukan sesuatu seperti

fileName()

Untuk plugin python (tidak diuji!):

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

Untuk mengakses jalur file vektor, pada lapisan aktif, kode ini berfungsi dengan baik di Python Console:

>>>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'

Itu diuji dengan raster 'tiznados_canoa.tif' saya sebagai lapisan aktif.

xunilk
sumber
3
Waspada jika ada layer vektor path setelah nama file juga berisi id pipa dan layer (C: /shapes/test.shp | layerid = 0). Saya menggunakan path = path [: path.rfind ('|')] untuk menghapusnya.
Miro
8

Jika Anda ingin mengakses jalur file vektor, pada lapisan aktif, ini sepertinya berfungsi:

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

lalu untuk membuka gambar atau teks yang terletak di direktori yang sama dengan mylayer:

from PyQt4 import QtWebKit, QtCore ; vue=QtWebKit.QWebView() vue.setUrl( QtCore.QUrl( fic ) ) ; vue.show()
rha
sumber
Jawaban yang berguna tetapi bagaimana dengan nama file? Anda menggunakan "[%" FILE "%]" tapi saya tidak mengerti apa artinya ...
GM
1

Saya melakukan tes ini pada QGIS 3.4
QgsProject.instance().fileName()

akan mengembalikan seluruh jalur ke file

'C: /MyDirectory/18809_US66.qgz'

Cary H
sumber