使用ArcPy检索起点和终点坐标?[关闭]


9

如何使用ArcPy检索折线要素类的起点和终点坐标?

我希望将段标识符传递给子例程,并使其传回开始和结束坐标。字段计算器方法对我不起作用,因为我需要在其中无法执行的其他计算的值。(我也不想更改数据以将这些坐标存储为属性。)我正在尝试计算“中心出”寻址方案的地址范围。地址值取决于到“县中心”的距离。

Answers:


15

在ArcGIS 10.0和10.1之间,此过程似乎已更改。我将同时提供两个示例。

这是有关使用arcpy 读取10.1中的几何的帮助文档: 读取几何10.1
本文档讨论了折线几何类型的参数: 折线(arcpy)

10.1

import arcpy

infc = arcpy.GetParameterAsText(0)

# Enter for loop for each feature
#
for row in arcpy.da.SearchCursor(infc, ["OID@", "SHAPE@"]):
    # Print the current line ID

    print("Feature {0}:".format(row[0]))

    #Set start point
    startpt = row[1].firstPoint

    #Set Start coordinates
    startx = startpt.X
    starty = startpt.Y

    #Set end point
    endpt = row[1].lastPoint

    #Set End coordinates
    endx = endpt.X
    endy = endpt.Y

10.0

这是有关使用arcpy在10.0中读取几何的帮助文档: 读取10.0几何
本文档讨论了几何对象的参数: 几何

import arcpy

infc = arcpy.GetParameterAsText(0)

# Identify the geometry field
#
desc = arcpy.Describe(infc)
shapefieldname = desc.ShapeFieldName

# Create search cursor
#
rows = arcpy.SearchCursor(infc)

# Enter for loop for each feature/row
#
for row in rows:
    # Create the geometry object
    #
    feat = row.getValue(shapefieldname)

    # Print the current line ID
    #
    print "Feature %i:" % row.getValue(desc.OIDFieldName)

    #Set start point
    startpt = feat.firstPoint

    #Set Start coordinates
    startx = startpt.X
    starty = startpt.Y

    #Set end point
    endpt = feat.lastPoint

    #Set End coordinates
    endx = endpt.X
    endy = endpt.Y

两者之间的区别主要在于如何访问要素几何。10.1中添加了一些快捷方式,以使访问几何对象更加容易。


6

我之前已经做过此操作,并且更喜欢使用搜索光标来读取几何图形。它创建一个循环,并允许您对每个形状进行计算。

inFeatures = "Feature"
shapeName = arcpy.Describe (inFeatures).shapeFieldName
rows = arcpy.SearchCursor(inFeatures)
for row in rows:
    feat = row.getValue(shapeName)
    xy1 = feat.firstPoint
    xy2 = feat.lastPoint

该循环允许您添加一些计算并逐个形状进行。

帮助中还有一些额外的帮助:在Python中使用几何


1

您应该能够使用Polyline对象的firstPoint和lastPoint属性。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.