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?

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

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.


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()

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'

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.