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

सक्रिय स्तर पर एक वेक्टर फ़ाइल पथ तक पहुंचने के लिए, यह कोड पायथन कंसोल में अच्छी तरह से काम करता है:

>>>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
सदिश परत के मामले में जागरूक रहें, फ़ाइल नाम के बाद पथ में पाइप और लेयर आईडी भी है (C: /shapes/test.shp | layerid = 0)। मैं इसे हटाने के लिए पथ = पथ [: path.rfind ('|' ') का उपयोग करता हूं।
मिरो

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

उपयोगी उत्तर लेकिन फ़ाइल नाम के बारे में क्या? आप "[%" फ़ाइल "%] का उपयोग करते हैं" लेकिन मुझे समझ में नहीं आता कि इसका क्या अर्थ है ...
GM

1

मैंने QGIS 3.4 पर यह परीक्षण किया
QgsProject.instance().fileName()

फ़ाइल के लिए संपूर्ण पथ लौटाएगा

'सी: /MyDirectory/18809_US66.qgz'

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.