Estoy generando nuevos archivos ráster a partir de capas vectoriales en un proyecto. Me gustaría guardarlos en el mismo directorio que el proyecto o los archivos de capa.
¿Cómo encuentro esta ruta usando PyQGIS?
Para la consola de Python:
QgsProject.instance().readPath("./") # also try "../"
O con
dir(QgsProject.instance())
encuentras algo como
fileName()
Para el complemento de Python (¡no probado!):
from PyQt4.QtGui import QMessageBox
from qgis.core import QgsProject
path_absolute = QgsProject.instance().readPath("./")
QMessageBox.information(None, "Title", "AP: " + unicode(path_absolute))
Para acceder a una ruta de archivo vectorial, en una capa activa, este código funciona bien en la Consola 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'
Fue probado con mi ráster 'tiznados_canoa.tif' como capa activa.
Si desea acceder a una ruta de archivo vectorial, en una capa activa, esto parece funcionar:
luego para abrir una imagen o texto ubicado en el mismo directorio que mylayer:
fuente
Probé esto en QGIS 3.4
QgsProject.instance().fileName()
devolverá la ruta completa al archivo
'C: /MyDirectory/18809_US66.qgz'
fuente