Generuję nowe pliki rastrowe z warstw wektorowych w projekcie. Chciałbym zapisać je w tym samym katalogu, co pliki projektu lub warstwy.
Jak znaleźć tę ścieżkę za pomocą PyQGIS?
W przypadku konsoli Python:
QgsProject.instance().readPath("./") # also try "../"
Lub z
dir(QgsProject.instance())
znajdziesz coś takiego
fileName()
W przypadku wtyczki Python (nie testowane!):
from PyQt4.QtGui import QMessageBox
from qgis.core import QgsProject
path_absolute = QgsProject.instance().readPath("./")
QMessageBox.information(None, "Title", "AP: " + unicode(path_absolute))
Aby uzyskać dostęp do ścieżki pliku wektorowego na aktywnej warstwie, ten kod działa dobrze w konsoli Pythona:
>>>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'
Został przetestowany z moim rastrem „tiznados_canoa.tif” jako warstwą aktywną.
Jeśli chcesz uzyskać dostęp do ścieżki pliku wektorowego na aktywnej warstwie, wydaje się, że działa:
następnie, aby otworzyć zdjęcie lub tekst znajdujące się w tym samym katalogu co mylayer:
źródło
Testowałem to na QGIS 3.4
QgsProject.instance().fileName()
zwróci całą ścieżkę do pliku
„C: /MyDirectory/18809_US66.qgz”
źródło