将几何对象与地理处理工具配合使用

在许多地理处理工作流中,您可能需要使用坐标和几何信息运行特定操作,但不一定想经历创建新(临时)要素类、使用光标填充要素类、使用要素类,然后删除临时要素类的过程。可以使用几何对象替代输入和输出,从而使地理处理变得更简单。可以使用 GeometryMultipointPointGeometryPolygonPolyline 类从头开始创建几何对象。

使用几何作为输入

以下示例使用一个 x,y 坐标列表创建了一个多边形几何对象。然后使用裁剪工具来裁剪具有多边形几何对象的要素类。

import arcpy

# Create an Array object.
#
array = arcpy.Array()

# List of coordinates.
#
coordList = ['1.0;1.0','1.0;10.0','10.0;10.0','10.0;1.0']

# For each coordinate set, create a point object and add the x- and 
#   y-coordinates to the point object, then add the point object 
#   to the array object.
#
for coordPair in coordList:
    x, y = coordPair.split(";")
    pnt = arcpy.Point(x,y)
    array.add(pnt)

# Add in the first point of the array again to close the polygon boundary
#
array.add(array.getObject(0))

# Create a polygon geometry object using the array object
#
boundaryPolygon = arcpy.Polygon(array)

# Use the geometry to clip an input feature class
#
arcpy.Clip_analysis("c:/data/rivers.shp", boundaryPolygon, "c:/data/rivers_clipped.shp")

输出几何对象

可通过将地理处理工具的输出设置为空几何对象来创建输出几何对象。如果工具在设置为空几何对象后运行,该工具将返回几何对象的列表。在下面的示例中,复制要素工具用于返回几何对象的列表,然后可循环该列表以累积所有要素的总长度。

import arcpy

# Create an empty Geometry object
#
g = arcpy.Geometry()

# Run the CopyFeatures tool, setting the output to the geometry object.  GeometryList
#  is returned as a list of geometry objects.
#  
geometryList = arcpy.CopyFeatures_management("c:/temp/outlines.shp", g)

# Walk through each geometry, totaling the length
#
length = 0
for geometry in geometryList:
    length += geometry.length

print "Total length: %f" % length

相关主题

9/15/2013