ฉันพยายามพัฒนาปลั๊กอินเพื่อเพิ่มเลเยอร์ postgis ลงใน qgis จากปลั๊กอินซึ่งเป็นส่วนหนึ่งของการเรียนรู้ภาษาไพ ธ อน
รหัสสำหรับการเพิ่มเลเยอร์ postgis ถูกนำมาจากตำราอาหารและทำงานได้ดีถ้าฉันเรียกใช้จากคอนโซล Python ภายใน qgis (หากกดปุ่ม OK ในกล่องโต้ตอบผลลัพธ์ == 1 และควรเพิ่มเลเยอร์ของฉันไปยัง qgis)
แต่ถ้าฉันเรียกใช้จากปลั๊กอินมันจะพ่นข้อความ NameError: ชื่อ 'QgsDataSourceURI' ไม่ได้ถูกกำหนดไว้ เหตุใดฉันจึงได้รับข้อผิดพลาดในการเรียกใช้จากปลั๊กอิน
ฉันจะเพิ่มเลเยอร์จากปลั๊กอิน / ภายในฟังก์ชั่นกับความแตกต่างจากคอนโซลหลามได้หรือไม่
def run(self):
"""Run method that performs all the real work"""
# show the dialog
self.dlg.show()
# Run the dialog event loop
result = self.dlg.exec_()
# See if OK was pressed
if result == 1:
# Do something useful here - delete the line containing pass and
# substitute with your code.
uri = QgsDataSourceURI()
uri.setConnection("localhost", "5432", "test", "postgres", "postgres")
#set database schema, table name, geometry column and optionaly subset(WHERE clause)
uri.setDataSource ("basic", "cities", "geom")
# Defining the layer name and layer type for QGIS?
vlayer=QgsVectorLayer (uri .uri() ,"cities","postgres")