Qgis 2.1でpythonを使用して新しいフィールドをdoubleとして属性テーブルに追加するときの小数点以下の桁数を定義する方法は?


9

小数を定義するために式を変更するにはどうすればよいですか?

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

QGIS APIドキュメントを読んだとき:

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

だから私は試してみます:

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

しかし、私はこのエラーを受け取ります:

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'

回答:


7

試してください:

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

これは、エラーメッセージを示唆する修正です。

私のシステムで、シェープファイルの属性テーブルに2つのフィールド(面積と周長)を追加するために使用しましたが、機能します。

私の盗んだコード

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

私のシェープファイルの属性テーブル:

ここに画像の説明を入力してください


ありがとうございます。QVariant.Double、 "integer"、10の整数とQVariant.String、 "string"、5の文字列についても同じことをすると思いますか?
Eleftheria 2015

整数はQVariant.Intになります。例:QgsField( 'ID'、QVariant.Int、len = 4)
BritishSteel
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.