File Geodatabase içine bir çokgen özelliği sınıfı çıktılar arcpy kullanarak bir python komut dosyası yazdım. Öznitelikleri ayrı bir CSV dosyasına vermek için bir işlev ekledim. Mükemmel çalışan bu yazıda bulduğum kodu kullanıyorum . Ancak, bu kod özellik sınıfındaki her sütunu dışa aktarır. : Ben yalnızca aşağıdaki adları yok alanları vermek istiyorsanız OBJECTID
, Shape
ya Shape_Length
.
Benim CSV dosyası başarıyla oluşturur ve doğru değildir içerir OBJECTID
veya Shape_Length
alanları. Ancak, Shape
saha olan dosyaya yazılır. Bu alana yazılan bir örnek değer:
<geoprocessing describe geometry object object at 0x28CB90A0>
Alan adlarını yineleyerek yazdırmak için bir satır ekledim ve şaşırtıcı bir şekilde Shape
yazdırılmadı. ArcGIS onu gizliyor ya da farklı bir isim veriyor gibi.
Benim fonksiyonumun kodu aşağıdadır:
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()
Burada neler olduğunu bilen var mı?
@Sgrieve tavsiyesini takip etmek için kodumu değiştirdim ve hala Shape
alan yazıyordu . Onlara arasında dolaşır gibi alan adlarını yazdırmak için bir satır eklerseniz, tüm alanları listeler hariçShape
alanda, henüz hala CSV yazar. Ayrıca çokgenin X ve Y koordinatlarını iki yeni sütun olarak ekledi ve sütunlar artık sütun adlarıyla hizalanmadı.
@Sgrieve alanların aşağıdaki gibi olduğunu bildiren satırı değiştirdim:
fields = [f.name for f in arcpy.ListFields('FinalCadastre') if f.type <> 'Geometry']
Yeni kod iyi çalışıyor, ancak hala sorunun ne olduğundan emin değilim. Neler olup bittiğini bilen var mı? Shape
Saha ile olan anlaşma nedir ?
Shape
Alanın dosyaya neden yazıldığını bilen var mı ? @ Sgrieve kodu muhtemelen kodumu geliştirirken, sorunu çözmedi.