Lấy đường dẫn của dự án, hoặc tệp lớp trong PyQGIS?


13

Tôi đang tạo các tệp raster mới từ các lớp vectơ trong một dự án. Tôi muốn lưu chúng trong cùng thư mục với các tệp dự án hoặc lớp.

Làm cách nào để tìm đường dẫn này bằng PyQGIS?

Câu trả lời:


17

Đối với bảng điều khiển python:

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

Hoặc với

dir(QgsProject.instance())

bạn tìm thấy một cái gì đó như

fileName()

Đối với plugin python (chưa được thử nghiệm!):

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

14

Để truy cập đường dẫn tệp vectơ, trên lớp hoạt động, mã này hoạt động tốt trong Bảng điều khiển Python:

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

Nó đã được thử nghiệm với raster 'tiznados_canoa.tif' của tôi dưới dạng một lớp hoạt động.


3
Lưu ý trong trường hợp lớp vectơ, đường dẫn sau tên tệp cũng chứa id đường ống và lớp (C: /shapes/test.shp | layerid = 0). Tôi sử dụng path = path [: path.rfind ('|')] để xóa nó.
Miro

8

Nếu bạn muốn truy cập một đường dẫn tệp vectơ, trên một lớp hoạt động, điều này dường như hoạt động:

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

sau đó để mở một hình ảnh hoặc văn bản nằm trong cùng thư mục với mylayer:

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

Câu trả lời hữu ích nhưng còn tên tập tin thì sao? Bạn sử dụng "[%" FILE "%]" nhưng tôi không hiểu ý nghĩa của nó ...
GM

1

Tôi đã thử nghiệm điều này trên QGIS 3.4
QgsProject.instance().fileName()

sẽ trả lại toàn bộ đường dẫn đến tệp

'C: /MyDirectory / 18809_US66.qgz'

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.