Я создаю новые растровые файлы из векторных слоев в проекте. Я хотел бы сохранить их в том же каталоге, что и файлы проекта или слоя.
Как мне найти этот путь с помощью PyQGIS?
Для консоли Python:
QgsProject.instance().readPath("./") # also try "../"
Или с
dir(QgsProject.instance())
вы найдете что-то вроде
fileName()
Для плагина Python (не проверено!):
from PyQt4.QtGui import QMessageBox
from qgis.core import QgsProject
path_absolute = QgsProject.instance().readPath("./")
QMessageBox.information(None, "Title", "AP: " + unicode(path_absolute))
Чтобы получить доступ к пути к векторному файлу на активном слое, этот код хорошо работает в консоли 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'
Он был протестирован с моим растром 'tiznados_canoa.tif' в качестве активного слоя.
Если вы хотите получить доступ к пути к векторному файлу на активном слое, это работает:
затем открыть картинку или текст, расположенный в том же каталоге, что и mylayer:
источник
Я проверил это на QGIS 3.4
QgsProject.instance().fileName()
вернет весь путь к файлу
'C: /MyDirectory/18809_US66.qgz'
источник