Je génère de nouveaux fichiers raster à partir de couches vectorielles sur un projet. Je voudrais les enregistrer dans le même répertoire que les fichiers de projet ou de couche.
Comment trouver ce chemin à l'aide de PyQGIS?
Pour la console python:
QgsProject.instance().readPath("./") # also try "../"
Ou avec
dir(QgsProject.instance())
vous trouvez quelque chose comme
fileName()
Pour le plugin python (non testé!):
from PyQt4.QtGui import QMessageBox
from qgis.core import QgsProject
path_absolute = QgsProject.instance().readPath("./")
QMessageBox.information(None, "Title", "AP: " + unicode(path_absolute))
Pour accéder à un chemin de fichier vectoriel, sur une couche active, ce code fonctionne bien dans la console 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'
Il a été testé avec mon raster 'tiznados_canoa.tif' en tant que couche active.
Si vous souhaitez accéder à un chemin de fichier vectoriel, sur un calque actif, cela semble fonctionner:
puis pour ouvrir une image ou un texte situé dans le même répertoire que mylayer:
la source
J'ai testé cela sur QGIS 3.4
QgsProject.instance().fileName()
retournera le chemin d'accès complet au fichier
«C: /MyDirectory/18809_US66.qgz»
la source