আমি আমার পাইথন স্ক্রিপ্টের মধ্যে বহুভুজের ক্ষেত্রটি গণনা করার চেষ্টা করছি। আমি দুটি একসাথে একত্রীকরণ থেকে একটি নতুন বহুভুজ তৈরি করেছি এবং আমি ফলাফল বহুভুজের ক্ষেত্র আউটপুট ফাইলের একটি ক্ষেত্রের সাথে যুক্ত করতে চাই। বহুভুজ একটি নিয়মিত শেফফাইলে সংরক্ষণ করা হয় এবং এটি অনুমান করা হয়। মানচিত্র ইউনিটগুলিতে অগ্রাধিকারযোগ্য অঞ্চল।
আমি এটিকে একটি সাধারণ ও সাধারণ কাজ বলে মনে করতাম তবে অনেকগুলি গুগলিং সত্ত্বেও আমি এ পর্যন্ত একটি কার্যকরী সমাধান খুঁজে পেতে সক্ষম হয়েছি।
আমি arcpy.updateCursor
একবার এটি গণনা করা হলে মান সন্নিবেশ করার জন্য ব্যবহার করার পরিকল্পনা করছিলাম (এফসিতে এই পর্যায়ে কেবল একটি বৈশিষ্ট্য রয়েছে), তাই যদি ভেরিয়েবল হিসাবে ফিরে পাওয়া যায় তবে সবচেয়ে সহজ। যে কোনও বিকল্প সমাধান যা একই কাজটি সম্পাদন করে (ক্ষেত্রের মানটি সঠিক ক্ষেত্রের দিকে নিয়ে যাওয়া) এছাড়াও কাজ করবে।
আমি পাইথন থেকে ফিল্ড ক্যালকুলেটর চেষ্টা করেছি। সহায়তা পৃষ্ঠাগুলি থেকে পরিবর্তিত আমি ভেবেছিলাম নিম্নলিখিতগুলি কাজ করবে, তবে এখনও ভাগ্য নেই।
arcpy.AddField_management(tempPgs, "Shape_area", 'DOUBLE')
exp = "float(!SHAPE.AREA!.split())"
arcpy.CalculateField_management(tempPgs, "Shape_area", exp)
উইন্ডোজ 7 এ পাইথন 2.7 সহ আরকিজিআইএস বেসিক 10.1 এসপি 1 চালানো হচ্ছে।
আমার বর্তমান কোডের প্রাসঙ্গিক অংশগুলি এর মতো দেখাচ্ছে:
#/.../
arcpy.Copy_management(inpgs, outpgs)
arcpy.AddField_management(outpgs, 'Shape_area', 'LONG')
fields = AM.FieldLst(outpgs)
#/.../
# Identify and search for shapes smaller than minimum area
where1 = '"' + 'Shape_Area' + '" < ' + str(msz)
polyrows = arcpy.SearchCursor(inpgs, where1)
for prow in polyrows:
grd1 = prow.GridID # GridID on the current polygon
grd2 = nDD.get(grd1) # GridID on the polygon downstream
# Update features
if grd2
geometry1 = prow.Shape
geometry2 = geometryDictionary[grd2]
# Update temporary features
arcpy.Merge_management([geometry1, geometry2], tempMerged)
arcpy.Dissolve_management(tempMerged, tempPgs)
fds = AM.FieldLst(tempPgs)
for field in fields[2:]:
arcpy.AddField_management(tempPgs, field, 'DOUBLE')
for fd in fds[2:]:
arcpy.DeleteField_management(tempPgs, fd)
exp = "float(!SHAPE.AREA!.split())"
arcpy.CalculateField_management(tempPgs, "Shape_area", exp)
# Append them to output FC
try:
arcpy.Append_management(tempPgs, outpgs, "TEST")
except arcgisscripting.ExecuteError:
arcpy.Append_management(tempPgs, outpgs, "NO_TEST")
elif ...
else ...
SHAPE@AREA
অঞ্চলটি পড়তে আপনি আপনার কার্সারের অংশ হিসাবে যা চান তা অর্জন করতে পারেন ; তবে কোডটির কাঠামোর উপর নির্ভর করে আপনার অঞ্চলটি আপনি কী লিখতে চান সেই একই ইউনিটে রয়েছে কিনা।