Công nghệ GIS

Note viết plugin python QGIS – phần 2

Note viết plugin python QGIS – phần 1 Tiếp tục hôm qua..

Vấn đề hiển thị tiếng Việt trong QMessageBox

Để hiển thị tiếng Việt trong QMessageBox, ta dùng hàm u và chuyển encoding của tệp python về UTF-8 [caption id="attachment_52" align="aligncenter" width="439"]Tiếng Việt Python Tiếng Việt Python[/caption]
Combobox Lấy vị trí đang được chọn: currentIndex() Lấy giá trị đang được chọn: itemData(index) Thêm item vào combobox: addItem(tên, giá trị)
self.dlg.layerCombo.addItem( lyr.name(), lyr )
index=self.dlg.layerCombo.currentIndex()
layer = self.dlg.layerCombo.itemData(index)
Lấy danh sách các lớp bản đồ đang mở
lyrs=QgsMapLayerRegistry.instance().mapLayers().values()
  Thêm lớp bản đồ, dùng thư viện OGR
#add layer
layer1=QgsVectorLayer("C:/Users/dtlong/Desktop/pyqgis_code_data/pyqgis_data/alaska.shp","layer_name_you_like", "ogr")
QgsMapLayerRegistry.instance().addMapLayer(layer1)
  LineEdit (Textbox) Lấy giá trị của textbox
fname=self.dlg.lineEdit.text()
fname=self.dlg.lineEdit.text()
  Bảng thuộc tính của bản đồ Lấy tất cả các tên field
fields=layer.pendingFields()
fieldnames=[]
for field in fields:
#QMessageBox.information(self.iface.mainWindow(),"duong dan",'%s'%(field.name()))
fieldnames.append(field.name())
#cach viet tat
#fieldnames = [field.name() for field in fields]
  Full code ghi thông tin thuộc tính các đối tượng bản đồ
index=self.dlg.layerCombo.currentIndex()
layer = self.dlg.layerCombo.itemData(index)
#QMessageBox.information(self.iface.mainWindow(),"hello world","%s has %d features." %(layer.name(),layer.featureCount()))
#ghi file
fname=self.dlg.lineEdit.text()
#QMessageBox.information(self.iface.mainWindow(),"duong dan",'haha%s'%(layer))
fghi=open(fname,'w')
#get field layer
fields=layer.pendingFields()
#QMessageBox.information(self.iface.mainWindow(),"duong dan",'haha%s'%(fields))
#QMessageBox.information(self.iface.mainWindow(),"duong dan",'haha%d'%(len(fields)))
#for i in range(0,len(fields)):
#QMessageBox.information(self.iface.mainWindow(),"duong dan",'%d'%(i))
fieldnames=[]
for field in fields:
#QMessageBox.information(self.iface.mainWindow(),"duong dan",'%s'%(field.name()))
fieldnames.append(field.name())
#cach viet tat
#fieldnames = [field.name() for field in fields]
for fieldname in fieldnames:
QMessageBox.information(self.iface.mainWindow(),"duong dan",'%s'%(fieldname))
for f in layer.getFeatures():
line = ','.join(unicode(f[x]) for x in fieldnames) + '\n'
unicode_line = line.encode('utf-8')
fghi.write(unicode_line)
fghi.close()
#fghi.write('hahahahah')
  Kết quả [caption id="attachment_54" align="aligncenter" width="1165"]plugin ghi thuộc tính qgis plugin ghi thuộc tính qgis[/caption] -Kết thúc^^

Có thể xem phần 1 ở đây Note viết plugin python QGIS – phần 1

-soiqualant_chentreu  ]]>

Leave a Reply

Your email address will not be published. Required fields are marked *