PyQGIS에서 프로젝트 또는 레이어 파일의 경로를 얻습니까?


13

프로젝트의 벡터 레이어에서 새 래스터 파일을 생성 중입니다. 프로젝트 또는 레이어 파일과 같은 디렉토리에 저장하고 싶습니다.

PyQGIS를 사용하여이 경로를 어떻게 찾습니까?

답변:


17

파이썬 콘솔의 경우 :

QgsProject.instance().readPath("./") # also try "../"

또는

dir(QgsProject.instance())

당신은 같은 것을 발견

fileName()

파이썬 플러그인의 경우 (테스트되지 않았습니다!) :

from PyQt4.QtGui import QMessageBox
from qgis.core import QgsProject
path_absolute = QgsProject.instance().readPath("./")
QMessageBox.information(None, "Title", "AP: " + unicode(path_absolute))

14

벡터 파일 경로에 액세스하려면 활성 레이어에서이 코드가 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'래스터를 활성 레이어로 테스트했습니다.


3
벡터 레이어의 경우 파일 이름 뒤에 경로에는 파이프 및 레이어 ID (C : /shapes/test.shp | layerid = 0)도 포함됩니다. path = path [: path.rfind ( '|')]를 사용하여 제거합니다.
Miro

8

활성 레이어에서 벡터 파일 경로에 액세스하려면 다음과 같이 작동합니다.

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

그런 다음 mylayer와 같은 디렉토리에있는 그림 또는 텍스트를 열려면

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

유용한 답변이지만 파일 이름은 어떻습니까? "[%"FILE "%]"을 사용하지만 그게 무슨 뜻인지 모르겠습니다.
GM

1

QGIS 3.4에서 이것을 테스트했습니다.
QgsProject.instance().fileName()

파일의 전체 경로를 반환합니다

'C : /MyDirectory/18809_US66.qgz'

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.