さて、本日はArcPyを使用してラインの頂点数を取得してみようと思います。頂点数が多いとパフォーマンスにも影響が出てしまうため、余分な頂点数がありそうなラインを抽出するのに役立つかと思います。
実行環境
- Windows7 64bit
- ArcGIS10.2
- Python2.7
事前準備
- 「Line」フィーチャクラスを作成します。「頂点数」格納用のカラムも用意します。
- 「Line」フィーチャクラスにラインを作図します。
サンプルコード
ラインの頂点数を取得して属性テーブルに格納するサンプルです。
# -*- coding: utf-8 -*- import arcpy #対象のGDB arcpy.env.workspace = "C:\ArcPySample.gdb" #対象のフィーチャクラス infc = "Line" dictTop = {} cnt = 0 #ラインフィーチャの頂点数を検索 for row in arcpy.da.SearchCursor(infc, ("OID@","SHAPE@")): for part in row[1]: for pnt in part: if pnt: cnt += 1 else: print("error") continue #ディクショナリにOIDと頂点数を格納 dictTop[row[0]] = cnt cnt = 0 del row #各フィーチャの頂点数を更新 for i in dictTop: cursor = arcpy.da.UpdateCursor(infc, ("OID@","Top")) for row in cursor: if i == row[0]: row[1] = dictTop[i] cursor.updateRow(row) del row
こんな感じになれば成功です。今回は属性に頂点数を格納しましたが、CSV出力したりしてもいいかもしれませんね。
簡単ではありますが、本日は以上です。