ポリゴンフィーチャクラスをファイルジオデータベースに出力するarcpyを使用して、Pythonスクリプトを記述しました。属性を別のCSVファイルにエクスポートする機能を追加しました。この投稿で見つけた完全に機能するコードを使用しています。ただし、そのコードは、フィーチャクラスのすべての列をエクスポートします。:私は、以下の名前を持っていないフィールドをエクスポートするOBJECTID
、Shape
またはShape_Length
。
CSVファイルが正常に生成され、またはフィールドが正しく含まれていません。ただし、フィールドはファイルに書き込まれます。そのフィールドに書き込まれる値の例は次のとおりです。OBJECTID
Shape_Length
Shape
<geoprocessing describe geometry object object at 0x28CB90A0>
フィールド名を印刷する行を追加しましたが、フィールド名を繰り返し処理するため、驚くことにShape
印刷されません。ArcGISが非表示にしたり、別の名前を付けたりするようです。
私の関数のコードは次のとおりです。
def exportToTable():
"""
Exports the final outputs to a CSV File.
"""
# Create path to CSV File (note the varialbe outputPath is declared elsewhere).
CSVFile = outputPath+'\\FinalOutput.csv'
arcpy.AddMessage("Created CSV File: %s" %CSVFile)
# Get all fields in FinalOutput feature class and remove unwanted fields.
fields = arcpy.ListFields('FinalOutput')
for field in fields:
arcpy.AddMessage("Field.name is:"+field.name) #not printing 'Shape' field name
if field.name in (['OBJECTID', 'Shape', 'Shape_Length']):
fields.remove(field)
i = 1
f=open(CSVFile, 'w')
for field in fields:
#--write the wanted field names to the output file
if i < len(fields):
f.write('%s,' % field.name)
i += 1
else:
f.write('%s\n' % field.name)
# Use a search cursor to iterate through the rows of the table and write them to the CSV file.
rows = arcpy.SearchCursor('FinalOutput')
for row in rows:
i = 1
for field in fields:
if i < len(fields):
f.write('%s,' % row.getValue(field.name))
i += 1
else:
f.write('%s\n' % row.getValue(field.name))
del rows
f.close()
誰がここで何が起こっているのか知っていますか?
@sgrieveのアドバイスに従うようにコードを変更しましたが、まだShape
フィールドを書いていました。私はそれがそれらを反復処理として、フィールド名を印刷する行を追加すると、それはすべてのフィールド一覧表示を除くShape
フィールドを、まだそれはまだCSVに書き込みます。また、ポリゴンのX座標とY座標を2つの新しい列として追加し、列は列名と一致しなくなりました。
@sgrieveがフィールドを宣言する行を次のように変更しました。
fields = [f.name for f in arcpy.ListFields('FinalCadastre') if f.type <> 'Geometry']
新しいコードは正常に機能しますが、問題が何であるかはまだわかりません。誰が何が起こっているのか知っていますか?Shape
フィールドとの取引は何ですか?
Shape
フィールドがファイルに書き込まれた理由を誰もが知っていますか?@sgrieveのコードによってコードが改善される可能性はありますが、問題は解決しませんでした。