আমি আরকি ব্যবহার করে একটি পাইথন স্ক্রিপ্ট লিখেছি যা একটি ফাইল জিওডাটাবেজে বহুভুজ বৈশিষ্ট্য শ্রেণিকে আউটপুট করে। আমি পৃথক সিএসভি ফাইলে গুণাবলী রফতানি করতে একটি ফাংশন যুক্ত করেছি। আমি এই পোস্টে যে কোডটি পেয়েছি তা ব্যবহার করছি যা নিখুঁতভাবে কাজ করে। তবে, কোডটি বৈশিষ্ট্য শ্রেণিতে প্রতিটি কলাম রফতানি করে। আমি শুধুমাত্র ক্ষেত্র নিম্নলিখিত নাম আছে না যে রপ্তানি করতে চান: OBJECTID
, Shape
, অথবা Shape_Length
।
আমার সিএসভি ফাইলটি সাফল্যের সাথে উত্পন্ন করে এবং এতে সঠিকভাবে ক্ষেত্র বা ক্ষেত্র অন্তর্ভুক্ত হয় না । যাইহোক, ক্ষেত্র হয় ফাইলে লেখা। সেই ক্ষেত্রটিতে লিখিত একটি উদাহরণের মানটি হ'ল:OBJECTID
Shape_Length
Shape
<geoprocessing describe geometry object object at 0x28CB90A0>
ক্ষেত্রের নামগুলি মুদ্রণের জন্য আমি একটি লাইন যুক্ত করেছি কারণ এটি তাদের মাধ্যমে পুনরাবৃত্তি হয় এবং আশ্চর্যের সাথে, Shape
এটি মুদ্রিত হয় না। এটি যেন আরকিজিআইএস এটিকে লুকিয়ে রাখছে বা একে অন্যরকম নাম দেয়।
আমার ফাংশনের কোডটি নীচে রয়েছে:
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()
কেউ কি জানেন যে এখানে কী চলছে?
@ এসগ্রিভের পরামর্শ অনুসরণ করতে আমি আমার কোডটি পরিবর্তন করেছি এবং এটি এখনও ফিল্ডটি লিখছিল Shape
। যদি ক্ষেত্রের নামগুলি মুদ্রণের জন্য আমি যদি তার মধ্য দিয়ে পুনরাবৃত্তি করে একটি লাইন যুক্ত করি তবে এটি ক্ষেত্র ব্যতীত সমস্ত ক্ষেত্রের তালিকাবদ্ধ করে Shape
, তবুও এটি CSV- এ লেখায়। এটি বহুভুজের এক্স এবং ওয়াই স্থানাঙ্ককে দুটি নতুন কলাম হিসাবে যুক্ত করেছে এবং কলামগুলি আর কলামের নামের সাথে একত্রিত হয় না।
আমি লাইনটি পরিবর্তন করেছি যেখানে @ এসগ্রিভ ক্ষেত্রগুলিকে নিম্নলিখিত হিসাবে ঘোষণা করে:
fields = [f.name for f in arcpy.ListFields('FinalCadastre') if f.type <> 'Geometry']
নতুন কোডটি ঠিকঠাক কাজ করে তবে সমস্যাটি কী তা এখনও আমি নিশ্চিত নই। কেউ কি জানেন কী চলছে? Shape
মাঠের সাথে কী চুক্তি ?
Shape
ফিল্ডে ফিল্ডটি কেন লেখা হচ্ছে তা কি কেউ জানেন ? @ এসগ্রিভের কোডটি সম্ভবত আমার কোডকে উন্নত করার সময় এটি সমস্যার সমাধান করেনি।