使用x / y坐标

时间:2016-04-27 22:40:34

标签: python gis

嘿所有我遇到此任务的问题,在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    

这是我的完整代码的更新版本, 提前感谢您的任何反馈或建议!

2 个答案:

答案 0 :(得分:0)

不要害怕运行您的代码。这是调试和优化的最佳方式。对于您的问题:存储x和y值很有用。一个有用的格式是这样的字典:{city_name:(x,y,more_data)}

答案 1 :(得分:0)

你定义了city_X_list吗?你在哪条线上得到错误? 同时删除memoy中的数据也是不必要的,因为python在退出函数或脚本时会自动执行此操作。只有在使用大数据集并且需要在函数中途从ram中删除时,才需要使用del。