for循环,索引,取lis的最小值

2024-06-26 17:44:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两种形状:湖泊和城市。我需要找到离每个湖最近的城市,并将城市名称添加到湖形状文件中。我有:

for lake in lake_cursor:
    lake_geom = lake.Shape
    city_dist_list = [] #create a city dis list = a list of dist from one lake to each city
    for cityID in range(0, city_length-1):
        #obtaining x and y for both cities and lakes
        cityX = citylist_X_Coor[cityID]
        cityY = citylist_Y_Coor[cityID]
        lakeX = lake_geom.centroid.X
        lakeY = lake_geom.centroid.Y
        #calculate distance
        dist = math.sqrt((cityX-lakeX)**2 + (cityY-lakeY)**2)
        #add the dist to the city dist list
        city_dist_list.append(dist)
    closest = min(city_dist_list)
    closestID = city_dist_list.index(closest)

    lake.City_Name = citylist_City_Name[closestID]
    lake.X_Coor = citylist_X_Coor[closestID]
    lake.Y_Coor = citylist_Y_Coor[closestID]
    print closest

但是我一直从lake.City_Name开始得到一条错误消息。pythonshell没有告诉我出了什么问题-有什么想法吗?如何修复它呢?谢谢!在

回溯显示:

^{pr2}$

Tags: nameincityfordistlist形状geom
1条回答
网友
1楼 · 发布于 2024-06-26 17:44:36

在没有看到代码的其余部分的情况下,很难确定,但从回溯中看,它确实看起来就像你试图在搜索游标中进行更新一样。搜索游标的行没有setter。确保您使用的是updateCurr,并且不要忘记为您更新的每个湖执行^{cd1>}。下面是一个简单的例子,说明如何使用updatecurr。

import arcpy
fc = 'c:/temp/temp.shp'
rows = arcpy.UpdateCursor(fc)
for row in rows:
    print row.Mapname
    row.Mapname = 'Some Value'
    rows.updateRow(row)

del row, rows    

本示例使用正则^{cd2>}。如果您有ArcGIS 10.1,那么可以使用^{cd3>},它将运行得更快。请阅读有关这些updateUsersherehere

相关问题 更多 >