嘿所有我遇到此任务的问题,在NA_Cities.shp中循环每个要素,使用游标读取每个城市点的x / y坐标;
import arcpy
import math
arcpy.env.overwriteOutput = True
folderpath = r'C:\Users\Michaelf\Desktop\GEOG M173\LabData'
In_Lakes = folderpath + '\NA_Big_Lakes.shp'
In_Cities = folderpath + '\NA_Cities.shp'
Out_Lakes = folderpath + '\New_Lakes.shp'
arcpy.CopyFeatures_management (In_Lakes, Out_Lakes)
fields = [
('City', 'TEXT'),
('Admin', 'TEXT'),
('Country_', 'TEXT'),
('Population', 'LONG'),
]
for field in fields:
arcpy.AddField_management(*(Out_Lakes,) + field)
city_name_list = []
city_admin_list = []
city_country_list = []
city_pop_list = []
city_cursor = arcpy.SearchCursor(In_Cities)
for city in city_cursor:
city_name_list.append(city.CITY_NAME)
city_admin_list.append(city.ADMIN_NAME)
city_country_list.append(city.CNTRY_NAME)
city_pop_list.append(city.POPULATION)
lakes_cursor = arcpy.UpdateCursor(Out_Lakes)
city_length = len(city_X_list)
for lake in lakes_cursor:
distance_to_shore = []
for city in range(0, city_length - 1):
distance_to_shore = arcpy.Near_analysis(import_cities_feature, import_lake_feature)
distance_shore.append(distance_to_shore)
closest_city = min(distance_cntrd_list)
closest_city_index = distance_cntrd_list.index(closest_city)
lake.city = city_name_list[closest_city_index]
lake.Admin = city_admin_list [closest_city_index]
lake.Population = city_pop_list [closest_city_index]
lake.Country_ = city_country_list [closest_city_index]
lakes_cursor.updateRow(lake)
del city_cursor, lakes_cursor, city, lake
这是我的完整代码的更新版本, 提前感谢您的任何反馈或建议!
答案 0 :(得分:0)
不要害怕运行您的代码。这是调试和优化的最佳方式。对于您的问题:存储x和y值很有用。一个有用的格式是这样的字典:{city_name:(x,y,more_data)}
答案 1 :(得分:0)
你定义了city_X_list吗?你在哪条线上得到错误? 同时删除memoy中的数据也是不必要的,因为python在退出函数或脚本时会自动执行此操作。只有在使用大数据集并且需要在函数中途从ram中删除时,才需要使用del。