2016-05-26 7 views
-2

属性テーブルに合計領域を追加しようとしましたが、エラーメッセージなしで実行されます。私は私が間違ってやっていることを確認していない:データをリストに追加できません

import os 
import arcpy 
import math 
folderpath = 'C:\Users\Michaelf\Desktop\GEOG M173' 
arcpy.env.workspace = folderpath 
arcpy.env.overwriteOutput = True 
input_shp = folderpath + r'\lower48_county_2012_election.shp' 
equal_shape = folderpath + r'\project_lower48.shp' 

projection = arcpy.SpatialReference('USA Contiguous Albers Equal Area Conic USGS') 
arcpy.Project_management(input_shp, equal_shape, projection) 
print 'step 1' 

arcpy.CopyFeatures_management (input_shp, equal_shape) 
tot_area = [] 

print "step 2" 
fields = [ 
    ("totarea", "FLOAT"), 
] 

for field in fields: 
    arcpy.AddField_management(equal_shape, "totarea") 
print "step 3" 

with arcpy.da.SearchCursor(equal_shape, ("[email protected]", "[email protected]")) as cursor: 
    for row in cursor: 
    print("Feature {0} has an area of {1}".format(row[0], row[1])) 
print "step 4" 

a_cursor = arcpy.SearchCursor(equal_shape) 
for area in a_cursor: 
    tot_area.append(area.totarea,) 
print "step 5" 

アップデート:私は、コードを実行すると wnnmawそれが実行され、印刷し機能/多角形の面積のリストをが、ときに私は新しい列.SHPファイルを開きますそこにあり、データのどれもがリストに追加されません。 ZWikiリストを印刷すると、属性テーブルにリストされているような0の巨大なリストが返されます。コードでは、それをFLOATとして分類しますが、arcmap属性テーブルのプロパティではそれをLONGとして識別していますが、答えは小数点以下の問題なのでしょうか?

+5

あなたが遭遇している*特定の*問題は何ですか?あなたが追加しようとしているリスト、関連する出力、そしてこれまで問題を解決しようとしてきたものを含めてください。 – wnnmaw

+0

ここで私の推測は 'arcpy.SearchCursor'が空のリストを返すか、あなたは期待していません。あなたはそれを印刷し、それが何を返すのか教えてください。また、 'folderpath'でバックスラッシュをエスケープするか、' input_shp'と 'equal_shape'のように生の文字列として与えてください – ZWiki

答えて

0

まず、フィールドのリストを追加するときにデータ型の問題が発生しました。

このコードでは、totareaという名前のフィールドが追加され、fieldsのデータでは何も行われません。代わりに

for field in fields: 
    arcpy.AddField_management(equal_shape, "totarea") 

fields = [("totarea", "FLOAT")] 
for field in fields: 
    arcpy.AddField_management(equal_shape, field[0], field[1]) 

第二:Use an UpdateCursor。検索カーソルには、テーブルのデータを変更する機能がありません。

あなたが領域のそのリストに固執する場合:あなたはSearchCursorを経るよう

tot_area = [] 
with arcpy.da.SearchCursor(equal_shape, ("[email protected]", "[email protected]")) as cursor: 
    for row in cursor: 
     print("Feature {0} has an area of {1}".format(row[0], row[1])) 
     tot_area.append(row[1]) 
print "step 4" 

sum_area = sum(tot_area) 
with arcpy.da.UpdateCursor(equal_shape, ["TOTAREA"]) as cursor: 
    for row in cursor: 
     row[0] = sum_area 
     cursor.updateRow(row) 
print "step 5" 

それとも合計:

tot_area = 0 
with arcpy.da.SearchCursor(equal_shape, ("[email protected]", "[email protected]")) as cursor: 
    for row in cursor: 
     print("Feature {0} has an area of {1}".format(row[0], row[1])) 
     tot_area += row[1] 
print "step 4" 

with arcpy.da.UpdateCursor(equal_shape, ["TOTAREA"]) as cursor: 
    for row in cursor: 
     row[0] = tot_area 
     cursor.updateRow(row) 
print "step 5" 
+0

助けてくれてありがとう、私は最初と合計を使用しようとしましたが、すべてのポリゴンは値を持っています0,1または2である。面積は0.300735193692ですが、10進値を属性テーブルに追加する方法はありますか? –

+0

'TOTAREA'フィールドがfloat型である限り、小数点を追加することができます。 – Erica

+0

助けてくれてありがとう、私はそれが浮動小数点であることを確かめた、そして常に同じ値をフィールドに設定する817.129。どんなフィードバックも非常に高く評価されます –

関連する問題