Obtenir le chemin du projet ou du fichier de couches dans PyQGIS?


13

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?

Réponses:


17

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

14

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.


3
Sachez que dans le cas d'une couche vectorielle, le chemin après le nom du fichier contient également l'id du tuyau et de la couche (C: /shapes/test.shp | layerid = 0). J'utilise path = path [: path.rfind ('|')] pour le supprimer.
Miro

8

Si vous souhaitez accéder à un chemin de fichier vectoriel, sur un calque actif, cela semble fonctionner:

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

puis pour ouvrir une image ou un texte situé dans le même répertoire que mylayer:

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

Réponse utile mais qu'en est-il du nom de fichier? Vous utilisez "[%" FILE "%]" mais je ne comprends pas ce que cela signifie ...
GM

1

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»

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.