/* Program: GRADIENT.AML /* Purpose: Calculates the gradient of a line coverage based on elevation /*=================================================================================== /* Usage: GRADIENT <COVER> <GRID> <SUMITEM> <OUTITEM> /* /* Arguments: COVER - Line cover to calculate gradient. /* GRID - Elevation grid. /* SUMITEM - INFO item in line cover to summarize gradients by. /* OUTITEM - Item in coverage INFO file to hold gradient value. /*=================================================================================== /* Calls: MUST BE RUN FROM ARC (Calls ARCPLOT, GRID, and TABLES) /*=================================================================================== /* Jeffrey Evans - Senior Landscape Ecologist /* The Nature Conservancy, Central Science /* Laramie, WY /* jeffrey_evans@tnc.org /*=================================================================================== &args cov grid item infoitem &if [show PROGRAM] <> ARC &then &return &inform CAN ONLY BE RUN FROM ARC &if [NULL %cov%] = .TRUE. &then &return &inform Usage: GRADIENT <COVER> <GRID> <SUMITEM> <OUTITEM> &if [NULL %grid%] = .TRUE. &then &return &inform Usage: GRADIENT <COVER> <GRID> <SUMITEM> <OUTITEM> &if [NULL %item%] = .TRUE. &then &return &inform Usage: GRADIENT <COVER> <GRID> <SUMITEM> <OUTITEM> &if [NULL %infoitem%] = .TRUE. &then &return &inform Usage: GRADIENT <COVER> <GRID> <SUMITEM> <OUTITEM> &if [iteminfo %cov%.aat -info %infoitem% -exists] = .TRUE. &then &return &inform Item [upcase %infoitem%] already exist! &if [exists %grid% -grid] = .FALSE. &then &return &inform Grid [upcase %grid%] does not exist! &if [iteminfo %cov%.aat -info %item% -exists] = .FALSE. &then &return &inform Item [upcase %item%] does not exist! &if [exists %cov% -cover] = .FALSE. &then &return &inform Coverage [upcase %cov%] does not exist! &if [exists %cov% -line] = .FALSE. &then &return &inform [upcase %cov%] does not appear to be a line coverage or lacks topology! &s tmp1 [scratchname -prefix xx1] &s tmp2 [scratchname -prefix xx2] &s tmp3 [scratchname -prefix xx3] &s tmp4 [scratchname -prefix xx4] /*=================================================================================== &TYPE /& CREATING BASE FILES FOR GRADIENT CALCULATION /& /*=================================================================================== NODEPOINT %cov% %tmp1% BUILD %tmp1% point /*=================================================================================== &TYPE /& GENERATING ELEVATION VALUES FOR EACH NODE /& /*=================================================================================== additem %tmp1%.pat %tmp1%.pat %grid% 4 12 f 3 display 0 ARCPLOT &messages &off cursor ptcur declare %tmp1% points rw cursor ptcur open &echo &off &do &while %:ptcur.aml$next% &s temp [show cellvalue %grid% [show select %tmp1% point 1 xy]] &if [type %temp%] = 1 &then &s :ptcur.%grid% -9999 &else &s :ptcur.%grid% %temp% cursor ptcur next &end QUIT &messages &on /*=================================================================================== &TYPE /& RELATING LINE COVERAGE TO POINT SAMPLES /& /*=================================================================================== PULLITEMS %cov%.aat %tmp2% FNODE# TNODE# LENGTH %item% END TABLES ADDITEM %tmp2% RISE 4 6 F 3 SEL %tmp2% RELATE ADD R1 %tmp1%.PAT INFO FNODE# %tmp1%# ORDERED RO R2 %tmp1%.PAT INFO TNODE# %tmp1%# ORDERED RO [UNQUOTE ' '] /*=================================================================================== &TYPE /& CALCULATING RISE FOR EACH ARC /& /*=================================================================================== SEL %tmp2% RESELECT R1//%grid% > R2//%grid% CALCULATE RISE = R1//%grid% - R2//%grid% NSELECT %tmp2% CALCULATE RISE = R2//%grid% - R1//%grid% /*=================================================================================== &TYPE /& SUMARIZING LENGTH AND RISE BY [upcase %item%] /& /*=================================================================================== SEL %tmp2% STATISTICS %item% %tmp3% SUM LENGTH SUM RISE END ADDITEM %tmp3% %infoitem% 4 6 F 3 /*=================================================================================== &TYPE /& CALCULATING GRADIENT /& /*=================================================================================== SEL %tmp3% CALCULATE %infoitem% = SUM-RISE / SUM-LENGTH * 100 QUIT /*=================================================================================== &TYPE /& ADDING [upcase %infoitem%] TO [upcase %cov%] /& /*=================================================================================== PULLITEMS %tmp3% %tmp3% %item% %infoitem% END JOINITEM %cov%.aat %tmp3% %cov%.aat %item% /*=================================================================================== &TYPE /& CLEANING UP /& /*=================================================================================== KILL %tmp1% all KILLINFO (!%tmp2% %tmp3%!) RELATE DROP r1 r2 [UNQUOTE ' ']
Aangemelde leden kunnen berichten plaatsen, updates volgen en meer. Nieuw hier? Registreer een gratis account.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.