Mais

Processamento em lote Cálculo do volume de superfície no ArcMap?

Processamento em lote Cálculo do volume de superfície no ArcMap?


Estou tentando coletar a área 2D, a área 3D e o volume de uma determinada bacia em incrementos de 0,5 metros na altura do plano, mas como quero representar graficamente a relação entre a altura do plano e as áreas e o volume, quero coletar muitos pontos .

Fazer isso um por um é entediante. Estou me perguntando se existe um código python que me permite processar um monte de alturas de planos de uma vez e reunir os resultados em um arquivo .txt ou arquivo excel.

atualmente, o código que estou usando é

import arcpy text = "c:  document  riverside  text.txt" arcpy.SurfaceVolume_3d ("watersheddem", text, "ABAIXO", 250,1,1)

mas este código só me permite ler o resultado na barra lateral, quando eu realmente verifico o arquivo text.txt, ele está vazio mesmo quando meu arcpy.surfacevolume_3d foi executado com sucesso.


Essa ferramenta percorrerá uma gama de valores definidos pelo usuário e gravará as saídas em um arquivo de texto. Você pode obter a versão da ferramenta Arctoolbox aqui https://github.com/gerry1138/ArcGIS-Loop-Surface-Volumes

try: import sys, arcpy, traceback arcpy.CheckOutExtension ("3D") arcpy.AddMessage ("Multi-Volumes for ArcGIS 10") arcpy.AddMessage ("Loop as ferramentas 3D Analyist Surface Volume para uma gama de valores ...") def GetValues ​​(themessage, x): thevaluesatx = str (x) themessage = themessage.split (" n") thevalues ​​= themessage [2] .split ("") para o item nos valores: thevalue = item.split ("=" ) thevalue = thevalue [-1] thevaluesatx = thevaluesatx + "," + str (thevalue) thevaluesatx = thevaluesatx + " n" arcpy.AddMessage (thevaluesatx) return thevaluesatx #My_txt = r "Z:  GISpublic  GerryG  aaaa. 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) startupplane = float (arcpy.GetParameterAsText (3)) z = float (arcpy.GetParameterAsText (4)) graduations = float (arcpy.GetParameterAsText (5)) finalizando plano = float (5)) arcpy.GetParameterAsText (6)) di rection = direction.upper () f = open (My_txt, 'a') f.writelines (r "elevação, 2d_area, 3d_area, volume" + " n") arcpy.AddMessage ("Aguarde, este script está processando… ") if direction ==" BELOW ": arcpy.AddMessage (" Startingplane = "+ str (Startingplane)) arcpy.AddMessage (" Endplane = "+ str (Endplane)) while startsplane> Endplane: arcpy.AddMessage (" Getting Results … ") Result = arcpy.SurfaceVolume_3d (My_surface," ", direção, plano inicial, z) thevaluesatx = GetValues ​​(result.getMessages (0), plano inicial) f.writelines (thevaluesatx) plano inicial = plano inicial - graduações se direção ==" ACIMA ": arcpy.AddMessage (" Executing above… ") x = plano inicial enquanto plano inicial