أكثر

المعالجة الدفعية حساب حجم السطح في ArcMap؟


أحاول جمع المنطقة ثنائية الأبعاد والمساحة ثلاثية الأبعاد وحجم حوض معين بزيادة 0.5 متر في ارتفاع الطائرة ، ولكن نظرًا لأنني أريد رسم العلاقة بين ارتفاع المستوى والمساحات والحجم ، فأنا أرغب في جمع العديد من النقاط .

القيام بذلك واحدًا تلو الآخر أمر شاق. أتساءل عما إذا كان هناك رمز Python يسمح لي بمعالجة مجموعة كاملة من ارتفاعات المستوى في وقت واحد وتجميع النتائج في ملف .txt واحد أو ملف Excel.

حاليًا ، الكود الذي أستخدمه هو

استيراد نص arcpy = "c:  document  riverside  text.txt" arcpy.SurfaceVolume_3d ("waterheddem"، text، "BELOW"، 250،1،1)

لكن هذا الرمز يسمح لي فقط بقراءة النتيجة على الشريط الجانبي ، عندما أتحقق بالفعل من ملف text.txt ، يكون فارغًا حتى عندما تم تشغيل arcpy.surfacevolume_3d بنجاح.


هذه الأداة ستمر عبر مجموعة من القيم المعرفة من قبل المستخدم وتكتب المخرجات في ملف نصي. يمكنك الحصول على إصدار أداة Arctoolbox هنا https://github.com/gerry1138/ArcGIS-Loop-Surface-Volumes

جرب: استيراد sys و arcpy و traceback arcpy.CheckOutExtension ("3D") arcpy.AddMessage ("Multi-Volumes for ArcGIS 10") arcpy.AddMessage ("Loop the 3D Analyist Surface Volume tools لمجموعة من القيم ...") حدد GetValues ​​(themessage، x): thevaluesatx = str (x) themessage = themessage.split (" n") thevalues ​​= themessage [2] .split ("") للعنصر الموجود في القيم: thevalue = item.split ("=" ) thevalue = thevalue [-1] thevaluesatx = thevaluesatx + "،" + str (thevalue) thevaluesatx = thevaluesatx + " n" arcpy.AddMessage (thevaluesatx) ترجع thevaluesatx #My_txt = r "Z:  GISpublica  Gerrya. txt "# My_surface = r" I:  SurfaceModels  USGS_DEM  ldeltagrid5ft "#direction =" above "#startingplane = 0 #z = 1 #y = .5 #q = 2 My_surface = arcpy.GetParameterAsText (0) My_txt = arcpy .GetParameterAsText (1) direction = arcpy.GetParameterAsText (2) startplane = float (arcpy.GetParameterAsText (3)) z = float (arcpy.GetParameterAsText (4)) graduations = float (arcpy.GetParameter )AsText = Arcpy.GetParameterAsText (6)) di rection = direction.upper () f = open (My_txt، 'a') f.writelines (r "height، 2d_area، 3d_area، volume" + " n") arcpy.AddMessage ("الرجاء الانتظار ، تتم معالجة هذا البرنامج النصي ... ") if direction ==" BELOW ": arcpy.AddMessage (" startplane = "+ str (startplane)) arcpy.AddMessage (" endplane = "+ str (endplane)) أثناء البداية> الطائرة النهائية: arcpy.AddMessage (" الحصول على النتائج " ... ") result = arcpy.SurfaceVolume_3d (My_surface،" "، direction، startplane، z) thevaluesatx = GetValues ​​(result.getMessages (0)، startplane) f.writelines (thevaluesatx) startplane = لوحة البداية - التخرج إذا كان الاتجاه ==" ABOVE ": arcpy.AddMessage (" التنفيذ أعلاه ... ") x = مستوى البداية أثناء بدء الطائرة 


شاهد الفيديو: Excel - Množenje, sabiranje, oduzimanje, IF i (شهر اكتوبر 2021).