2016-04-27 47 views
0

嘿,我在這個任務遇到問題,在NA_Cities.shp中循環每個特徵,使用光標讀取每個城市點的x/y座標;使用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

不要害怕運行你的代碼。這是調試和優化的最佳方式。對於你的問題:存儲x和y值很有用。一個有用的格式將是這樣的字典:{city_name:(x,y,more_data)}

+0

謝謝,我跑的代碼,我得到一個錯誤,'名稱城市長度未定義' –

+0

現在的作品?或者你需要幫助嗎? –

+0

它現在不起作用,如果可能的話,我可以使用一些幫助? –

0

您是否定義了city_X_list?你在哪一行得到錯誤? 從memoy中刪除數據也不是必須的,因爲python在退出函數或腳本時會自動執行此操作。只有當你使用大數據集,並且需要使用del時,才能在一個函數中將它從ram中刪除。

+0

我之前已經定義了city_X_list,但我不這麼認爲。我試圖在這裏做我想做的事 –

+0

您可以參考以下邏輯來構建您的Python腳本:à第1步:將NA_Big_Lakes.shp複製到新的shapefile文件,爲城市信息添加空字段; 步驟2:在NA_Cities.shp中循環每個要素,使用光標讀取每個城市點的x/y座標;第三步:在新的湖泊shapefile中循環每個要素,使用幾何光標讀取該湖泊多邊形的頂點座標,確定最接近湖泊頂點的城市,並將城市信息添加到該湖泊特徵的字段中。 –

+0

我認爲它在你修正city_X_list時有效,或者不是? –