Ich generiere neue Rasterdateien aus Vektorebenen in einem Projekt. Ich möchte sie im selben Verzeichnis wie das Projekt oder die Layer-Dateien speichern.
Wie finde ich diesen Pfad mit PyQGIS?
Für die Python-Konsole:
QgsProject.instance().readPath("./") # also try "../"
Oder mit
dir(QgsProject.instance())
du findest so etwas wie
fileName()
Für Python-Plugin (nicht getestet!):
from PyQt4.QtGui import QMessageBox
from qgis.core import QgsProject
path_absolute = QgsProject.instance().readPath("./")
QMessageBox.information(None, "Title", "AP: " + unicode(path_absolute))
Um auf einen Vektordateipfad auf einer aktiven Ebene zuzugreifen, funktioniert dieser Code in Python Console gut:
>>>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'
Es wurde mit meinem Raster "tiznados_canoa.tif" als aktive Ebene getestet.
Wenn Sie auf einer aktiven Ebene auf einen Vektordateipfad zugreifen möchten, scheint dies zu funktionieren:
dann, um ein Bild oder einen Text zu öffnen, der sich in demselben Verzeichnis wie mylayer befindet:
quelle
Ich habe dies auf QGIS 3.4 getestet
QgsProject.instance().fileName()
Gibt den gesamten Pfad zur Datei zurück
'C: /MyDirectory/18809_US66.qgz'
quelle