2016-04-27 12 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が自動的にこれを行うからです。大きなデータセットを使用する場合にのみ、デルを使用する必要がある関数の中途半端にRAMから削除する必要があります。

+0

以前はcity_X_listを定義していましたが、私はそれほどよく分かっていないと思います。私はここにしようとしています。 –

+0

Pythonスクリプトを構成するには、次のロジックを参照してください。à>ステップ1:NA_Big_Lakes.shpを新しいlake shapefileにコピーし、都市情報の空欄を追加します。 à→ステップ2:NA_Cities.shpの各機能をループし、カーソルを使用して各都市ポイントのx/y座標を読み取ります。 ◊→ステップ3:新しい湖のshapefileの各フィーチャーをループし、ジオメトリカーソルを使用してこの湖のポリゴンの頂点座標を読み取り、湖の頂点に最も近い都市を特定し、この湖のフィーチャのフィールドに都市情報を追加します。 –

+0

city_X_listを修正したときに動作すると思いますか? –

関連する問題