Làm cách nào để xác định số thập phân khi thêm trường mới gấp đôi vào bảng thuộc tính với python trong Qgis 2.1?


9

Làm thế nào để thay đổi biểu thức để xác định số thập phân?

layer.dataProvider().addAttributes([QgsField("fieldname",  QVariant.Double)])

Như tôi đã đọc trong Tài liệu API của QGIS:

Parameters
        name Field name
        type Field variant type, currently supported: String / Int / Double
    typeName Field type (eg. char, varchar, text, int, serial, double). 

         len Field length
        prec Field precision

Vì vậy, tôi cố gắng:

layer.dataProvider().addAttributes([QgsField("fieldname",  QVariant.Double, 10, 3)])

Nhưng tôi nhận được lỗi này:

TypeError: arguments did not match any overloaded call:

QgsField(QString name=QString(), Type type=QVariant.Invalid, QString   
typeName=QString(), int len=0, int prec=0, QString comment=QString()): 
argument 3 has unexpected type 'int'

QgsField(QgsField): argument 1 has unexpected type 'str'

Câu trả lời:


7

Thử:

layer.dataProvider().addAttributes([QgsField("fieldname",  QVariant.Double, "double", 10, 3)])

Đây là sửa chữa cho thấy thông báo lỗi.

Tôi đã sử dụng nó trong hệ thống của mình để thêm hai trường (diện tích và chu vi) trong bảng thuộc tính của shapefile của tôi và nó hoạt động.

Mã snipped của tôi

.
.
.
    fields = [ QgsField('area', QVariant.Double, 'double', 20, 2), 
               QgsField('perimeter', QVariant.Double, 'double', 10, 3) ]
.
.
.

Bảng thuộc tính của shapefile của tôi:

nhập mô tả hình ảnh ở đây


cảm ơn nó hoạt động tốt !! vì vậy tôi cho rằng tôi làm tương tự cho các số nguyên như QVariant.Double, "số nguyên", 10 và chuỗi là QVariant.String, "chuỗi", 5?
Eleftheria

Số nguyên sẽ là QVariant.Int . Ví dụ: QssField ('ID', QVariant.Int, len = 4)
BritishSteel
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.