Estoy generando nuevos archivos rasterizados a partir de capas vectoriales en un proyecto. Me gustaría guardarlos en el mismo directorio que los archivos del proyecto o de las capas.
¿Cómo puedo encontrar este camino utilizando PyQGIS?
Estoy generando nuevos archivos rasterizados a partir de capas vectoriales en un proyecto. Me gustaría guardarlos en el mismo directorio que los archivos del proyecto o de las capas.
¿Cómo puedo encontrar este camino utilizando PyQGIS?
Para la consola de python:
QgsProject.instance().readPath("./") # also try "../"
O con
dir(QgsProject.instance())
encuentras algo como
fileName()
Para el plugin 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 la ruta de un archivo vectorial, en una capa activa, este código funciona bien en la consola de 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'
Se ha probado con mi trama 'tiznados_canoa.tif' como capa activa.
En QGIS 2.x, 3.0 y 3.1:
Ruta del proyecto:
QgsProject.instance().fileName() # C:/test/sample_project.qgs
Ruta de la carpeta del proyecto:
QgsProject.instance().homePath() # C:/test
En QGIS 3.2+:
Ruta del proyecto:
QgsProject.instance().fileName()
# OR
QgsProject.instance().absoluteFilePath() # C:/test/sample_project.qgz
Ruta de la carpeta del proyecto:
QgsProject.instance().homePath()
# OR
QgsProject.instance().absolutePath() # C:/test
Si quiere acceder a la ruta de un archivo vectorial, en una capa activa, esto parece funcionar:
myfilepath= os.path.dirname( unicode( qgis.utils.iface.activeLayer().dataProvider().dataSourceUri() ) ) ;
fic = myfilepath + "[% "FILE" %]"
para abrir una imagen o un texto situado en el mismo directorio que mylayer:
from PyQt4 import QtWebKit, QtCore ; vue=QtWebKit.QWebView() vue.setUrl( QtCore.QUrl( fic ) ) ; vue.show()
I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.