ジオプロセシング ツールでのジオメトリ オブジェクトの使用

多くのジオプロセシング ワークフローでは、座標とジオメトリの情報を使用して特定の操作を行うことだけが必要で、新しい (一時) フィーチャクラスを作成し、カーソルを使用してフィーチャクラスにデータを設定し、そのフィーチャクラスを使用し、最後に一時フィーチャクラスを削除するというプロセスをすべて行う必要はないことがあります。ジオプロセシングを簡単に実行できるように、入力および出力の両フィーチャクラスの代わりにジオメトリ オブジェクトを使用できます。GeometryMultipointPointGeometryPolygon、または Polyline の各クラスを使用して、ジオメトリ オブジェクトを最初から作成できます。

入力としてのジオメトリの使用

次のサンプルでは、x,y 座標のリストを使用して、ポリゴン ジオメトリ オブジェクトを作成します。その後、Clip ツールを使用して、ポリゴン ジオメトリ オブジェクトでフィーチャクラスをクリップします。


import arcpy
# List of coordinates.
coordinates = [
    [2365000, 7355000],
    [2365000, 7455000],
    [2465000, 7455000],
    [2465000, 7355000]]
# Create an array with a point object for each coordinate pair
array = arcpy.Array([arcpy.Point(x, y) for x, y in coordinates])
# Create a polygon geometry object using the array object
boundary = arcpy.Polygon(array, arcpy.SpatialReference(2953))
# Use the geometry to clip an input feature class
arcpy.Clip_analysis('c:/data/rivers.shp', 
                    boundary, 
                    'c:/data/rivers_clipped.shp')

ジオメトリ オブジェクトの出力

空のジオメトリ オブジェクトに対してジオプロセシングツールの出力を設定することによって、出力ジオメトリ オブジェクトを作成できます。出力先を空のジオメトリ オブジェクトに設定してツールを実行すると、ツールはジオメトリ オブジェクトのリストを返します。次の例では、Copy Features ツールを使用してジオメトリ オブジェクトのリストを取得します。このリストをループ処理して、すべてのフィーチャの合計長を累算します。


import arcpy
# Run the CopyFeatures tool, setting the output to a geometry object.  
#  geometries is returned as a list of geometry objects.
#  
geometries = arcpy.CopyFeatures_management('c:/temp/outlines.shp', arcpy.Geometry())
# Walk through each geometry, totaling the length
#
length = sum([g.length for g in geometries])
print('Total length: {}'.format(length))