代わりにarcpy.GetCount_management()からArcPy結果オブジェクトを整数としてキャストしますか?


18

シェイプファイルにあるポイントの数を数えて数字を取得しようとしています。そして、これは機能しますが、その番号を他の場所で使用すると問題が発生します。最終的には、いくつかの数学(フィールド計算機)でそのカウントを使用しますが、デバッグ中にエラーが発生し、後でトラブルが発生します。

このコード:

TotalPoints = arcpy.GetCount_management(Path_Pts)
arcpy.AddMessage(">>>> PROCESS: COUNT PATH POINTS {" + TotalPoints + "}")

このエラーを与えます:

TypeError: cannot concatenate 'str' and 'Result' objects

私はそれをintとしてキャストしようとしましたが、それも好きではありません:

TypeError: int() argument must be a string or a number, not 'Result'

そこで、「Result」オブジェクトを取得し、それを数値に変換する必要があります。

どうすればそれを行うことができますか?または、ここでArcPy関数を使用する必要がないか、過度に複雑です

回答:


45

Resultオブジェクトで次のメソッドを使用すると、intとしてキャストできます。

.getOutput(0)は、ツールの最初のインデックス位置の値を返します。

int(arcpy.GetCount_management(Path_Pts).getOutput(0))


3

GetCountは、整数または文字列ではなく、Resultオブジェクトを返します。

文字列を取得するには、結果オブジェクトのgetOuputメソッドを使用して、その最初の部分を引き出します。他の部分を見るには、1、2などの0を切り替えてみてください。

その文字列を整数に変換する必要がある場合は、int()関数を使用します。

ResultオブジェクトとそのgetOutputメソッドの詳細については、オンラインヘルプを参照してください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.