# ------------------------------------------------------------ # DIAG.sml # ------------------------------------------------------------ # SET WARNING LEVEL: Refer to B5 & B6. $warnings 3 # ------------------------------------------------------------ # DEFINE VARIABLES FOR GENERAL CHARACTER STRINGS: # Refer to B7. string t$,p$,p1$,p2$,p3$,p4$,p5$,p6$,p7$,p8$,p9$; string p10$,p11$,p12$,p13$,p14$,p15$,p16$,p17$,p18$,p19$; string p20$,p21$; # ------------------------------------------------------------ # CLEAR CONSOLE WINDOW & REQUEST REPOSITIONING: # Refer to B7, B8 & B9. clear(); p1$ = "CONSOLE-WINDOW ADJUSTMENT\n"; p2$ = "* REPOSITION the CONSOLE WINDOW.\n"; p3$ = "* Then, CLICK the OK Button."; p$ = p1$ + p2$ + p3$; PopupMessage(p$); # ------------------------------------------------------------ # DEFINE proc checkHisto(Band) # PURPOSE: Check that Input Raster has a Full (Unsampled) # Histogram. If Not, Then Recompute Histogram. proc checkHisto (raster Band) begin local numeric sampleInt; sampleInt = HistogramGetSampleInterval(Band); if (sampleInt > 1) begin DeleteHistogram(Band); CreateHistogram(Band,0); end else if (sampleInt == -1) then begin CreateHistogram(Band,0); end end # ------------------------------------------------------------ # DEFINE PROCEDURE writeTitle: Refer to B13 & B14. # PURPOSE: WRITES TITLE & AUTHOR INFO TO CONSOLE WINDOW. proc writeTitle() begin printf("DIAG.sml:\n"); printf(" VERSION: November 15, 2005\n"); printf(" PURPOSE: PRODUCE DIAG PRODUCTS "); printf("RELATED TO SRFIs, PVI & PBI.\n"); printf(" DETAILS: FAQs_by_Jack A & C\n"); printf(" AUTHOR: Dr. Jack F. Paris\n"); printf(" CONTACT INFO: jparis37@msn.com "); printf(" 303-775-1195\n"); printf(" ALLOWED USE: ONLY NON-COMMERCIAL\n\n"); end # ------------------------------------------------------------ # WRITE TITLE & AUTHOR INFORMATION: Refer to B14. writeTitle(); # ------------------------------------------------------------ # DECLARE VARIABLES RELATED TO USER INPUTS: # Refer to B15 & B16. string site$; numeric imager,vnir; # ------------------------------------------------------------ # DECLARE VARIABLES DIRECTLY RELATED TO USER PROVIDED VALUES: # Refer to B15 & B16. string imager$; # ------------------------------------------------------------ # DECLARE STRING VARIABLE RELATED TO ALL RASTER TYPES: # Refer to B17. string rtype$; # ------------------------------------------------------------ # DECLARE VARIABLES RELATED TO BARE-SOIL & DENSE VEG SEARCHES: # Refer to B17. numeric wpvis,pbi2s,pvi1v; numeric pvi1s,pvi2s,pbi1s,pbi2s; # ------------------------------------------------------------ # DECLARE VARIABLES RELATED TO PURE-PIXEL SEARCH: # Refer to B17. numeric boxsize,sdmaxs,sdmaxv,oddcheck; # ------------------------------------------------------------ # DECLARE VARIABLES RELATED TO BOOLEAN ENABLERS: # Refer to B15 & B16 numeric pCB,pBL,pGL,pYL,pRL,pRE,pNA,pNB; numeric pMA,pMB,pMC,pMD,pME,pMF,pMG; # ------------------------------------------------------------ # DECLARE VARIBLES RELATED TO FOR-EACH LOOPS: numeric mk,pvi,pbi,pvisd,nlins,ncols; # ------------------------------------------------------------ # DECLARE LIST OF POSSIBLE INPUT RASTERS: raster MK,SRFICB,SRFIBL,SRFIGL,SRFIYL,SRFIRL,SRFIRE; raster SRFINA,SRFINB,SRFIMA,SRFIMB,SRFIMC,SRFIMD; raster SRFIME,SRFIMF,SRFIMG,PVI,PBI; # ------------------------------------------------------------ # DECLARE LIST OF POSSIBLE OUTPUT RASTERS: raster DCB,DBL,DGL,DYL,DRL,DRE,DNA,DNB; raster DMA,DMB,DMC,DMD,DME,DMF,DMG; # ------------------------------------------------------------ # GET NAME OF SITE FROM THE USER: Refer to B17. t$ = "SITE NAME"; p1$ = "SITE-NAME ENTRY\n"; p2$ = "* ENTER the SITE NAME.\n"; p3$ = "* Then, CLICK the OK Button.\n\n"; p4$ = "SITE-NAME ENTERED:"; p$ = p1$ + p2$ + p3$ + p4$; site$ = PopupString(p$,"",t$); printf(" SITE NAME: %s\n",site$); # ------------------------------------------------------------ # GET IMAGER NUMBER FROM THE USER: Refer to B17. p1$ = "IMAGER-NUMBER SELECTION\n"; p2$ = " IMAGER\n"; p3$ = " NUMBER: SYSTEM NAME\n"; p4$ = " 1: QuickBird 2 MS\n"; p5$ = " 2: Ikonos 2 MS\n"; p6$ = " 3: OrbView 3 MS\n"; p7$ = " 4: Landsat 7 ETM+\n"; p8$ = " 5: Landsat 5 TM\n"; p9$ = " 6: Landsat 5 MSS\n"; p10$ = " 7: Landsat 4 TM\n"; p11$ = " 8: Landsat 4 MSS\n"; p12$ = " 9: Landsat 3 MSS\n"; p13$ = " 10: Landsat 2 MSS\n"; p14$ = " 11: Landsat 1 MSS\n"; p15$ = " 12: Terra ASTER\n"; p16$ = " 13: Terra MODIS\n"; p17$ = " 14: Aqua MODIS\n"; p18$ = "* Either ACCEPT the Default NUMBER,\n"; p19$ = "* Or, SELECT a Different NUMBER.\n"; p20$ = "* Then, CLICK the OK Button.\n\n"; p21$ = "IMAGER-NUMBER SELECTED:"; p$ = p1$ + p2$ + p3$ + p4$ + p5$ + p6$ + p7$ + p8$ + p9$; p$ = p$ + p10$ + p11$ + p12$ + p13$ + p14$ + p15$ + p16$; p$ = p$ + p17$ + p18$ + p19$ + p20$ + p21$; imager = PopupNum(p$,1,1,14,0); # ------------------------------------------------------------ # GENERATE IMAGER-SPECIFIC PARAMETERS: Refer to B25. if (imager == 1) then begin imager$ = "QuickBird 2 MS"; pBL=1; pNA=1; end if (imager == 2) then begin imager$ = "Ikonos 2 MS"; pBL=1; pNA=1; end if (imager == 3) then begin imager$ = "OrbView 3 MS"; pBL=1; pNA=1; end if (imager == 4) then begin imager$ = "Landsat 7 ETM+"; pBL=1; pNA=1; pMB=1; pMC=1; end if (imager == 5) then begin imager$ = "Landsat 5 TM"; pBL=1; pNA=1; pMB=1; pMC=1; end if (imager == 6) then begin imager$ = "Landsat 5 MSS"; pRE=1; pNB=1; end if (imager == 7) then begin imager$ = "Landsat 4 TM"; pBL=1; pNA=1; pMB=1; pMC=1; end if (imager == 8) then begin imager$ = "Landast 4 MSS"; pRE=1; pNB=1; end if (imager == 9) then begin imager$ = "Landsat 3 MSS"; pRE=1; pNB=1; end if (imager == 10) then begin imager$ = "Landsat 2 MSS"; pRE=1; pNB=1; end if (imager == 11) then begin imager$ = "Landsat 1 MSS"; pRE=1; pNB=1; end if (imager == 12) then begin imager$ = "Terra ASTER"; pNA=1; pMB=1; pMC=1; pMD=1; pME=1; pMF=1; pMG=1; p1$ = "VNIR ONLY or ALL OPTION:\n"; p2$ = " OPTION 1: VNIR ONLY\n"; p3$ = " OPTION 2: ALL 9 BANDS\n"; p4$ = "OPTION ENTERED:"; p$ = p1$ + p2$ + p3$ + p4$; vnir = PopupNum(p$,2,1,2,0); if (vnir == 1) then begin pMB=0; pMC=0; pMD=0; pME=0; pMF=0; pMG=0; end end if (imager == 13) then begin imager$ = "Terra MODIS"; pBL=1; pNA=1; pMA=1; pMB=1; pMC=1; end if (imager == 14) then begin imager$ = "Aqua MODIS"; pBL=1; pNA=1; pMA=1; pMB=1; pMC=1; end printf(" IMAGER: %s\n",imager$); # ------------------------------------------------------------ # GET SOIL-SEARCH PVI-WIDTH PARAMETER: Refer to C3. p1$ = "SOIL-SEARCH PVI-WIDTH ENTRY\n"; p2$ = " FORMAT: NNN\n"; p3$ = " RANGE: 2 to 500\n"; p4$ = "* Either ACCEPT the Default WIDTH,\n"; p5$ = "* Or, ENTER a Different WIDTH.\n"; p6$ = "* Then, CLICK the OK Button.\n\n"; p7$ = "SOIL-SEARCH PVI-WIDTH ENTERED:"; p$ = p1$ + p2$ + p3$ + p4$ + p5$ + p6$ + p7$; wpvis = PopupNum(p$,200,2,500,0); pvi1s = 1000 - int(wpvis / 2); pvi2s = 1000 + int(wpvis / 2); printf(" SOIL BOX: "); printf("%4d < PVI < %4d\n",pvi1s,pvi2s); # ------------------------------------------------------------ # GET SOIL-SEARCH PBI-MAX PARAMETER: Refer to C4. p1$ = "SOIL-SEARCH PBI-MAX ENTRY\n"; p2$ = " FORMAT: NNN\n"; p3$ = " RANGE: 500 to 2500\n"; p4$ = "* Either ACCEPT the Default PBI-MAX,\n"; p5$ = "* Or, ENTER a Different PBI-MAX.\n"; p6$ = "* Then, CLICK the OK Button.\n\n"; p7$ = "SOIL-SEARCH PBI-MAX ENTERED:"; p$ = p1$ + p2$ + p3$ + p4$ + p5$ + p6$ + p7$; pbi2s = PopupNum(p$,1100,500,2500,0); pbi1s = int(0.3 * pbi2s); printf(" "); printf("%4d < PBI < %4d\n",pbi1s,pbi2s); # ------------------------------------------------------------ # GET VEG-SEARCH PVI-MIN PARAMETER: Refer to C5. p1$ = "VEG-SEARCH PVI-MIN ENTRY\n"; p2$ = " FORMAT: NNNN\n"; p3$ = " RANGE: 900 to 2500\n"; p4$ = "* Either ACCEPT the Default PVI-MIN,\n"; p5$ = "* Or, ENTER a Different PVI-MIN.\n"; p6$ = "* Then, CLICK the OK Button.\n\n"; p7$ = "VEG-SEARCH PVI-MIN ENTERED:"; p$ = p1$ + p2$ + p3$ + p4$ + p5$ + p6$ + p7$; pvi1v = PopupNum(p$,1300,900,2500,0); printf(" "); printf("VEG TEST: %4d < PVI\n",pvi1v); # ------------------------------------------------------------ # GET TEXTURE-FILTER PARAMETER FOR SOIL: Refer to C6. p1$ = "PURE-SOIL-PIXEL SOIL-SD-MAX ENTRY\n"; p2$ = " FORMAT: NN\n"; p3$ = " RANGE: 1 to 42\n"; p4$ = "* Either ACCEPT the Default SOIL-SD-MAX,\n"; p5$ = "* Or, ENTER a Different SOIL-SD-MAX.\n"; p6$ = "* Then, CLICK the OK Button.\n\n"; p7$ = "PURE-PIXEL SOIL-SD-MAX ENTERED:"; p$ = p1$ + p2$ + p3$ + p4$ + p5$ + p6$ + p7$; sdmaxs = PopupNum(p$,14,1,42,0); printf(" SOIL PVI-SD MAX: %2d\n",sdmaxs); sdmaxv = int(sdmaxs * (pvi1v + 2000) / 2000); # ------------------------------------------------------------ # TEXTURE-FILTER PARAMETER FOR VEG: Refer to C6. p1$ = "PURE-VEG-PIXEL VEG-SD-MAX ENTRY\n"; p2$ = " FORMAT: NN\n"; p3$ = " RANGE: 1 to 42\n"; p4$ = "* Either ACCEPT the Default VEG-SD-MAX,\n"; p5$ = "* Or, ENTER a Different PVI-SD-MAX.\n"; p6$ = "* Then, CLICK the OK Button.\n\n"; p7$ = "PURE-PIXEL PVI-SD-MAX ENTERED:"; p$ = p1$ + p2$ + p3$ + p4$ + p5$ + p6$ + p7$; sdmaxv = PopupNum(p$,sdmaxv,1,84,0); printf(" VEG PVI-SD MAX: %2d\n",sdmaxv); # ------------------------------------------------------------ # TEXTURE-FILTER BOX-SIZE: Refer to C6. p1$ = "PURE-PIXEL BOX-SIZE ENTRY\n"; p2$ = " FORMAT: NN\n"; p3$ = " RANGE: 3 to 11\n"; p4$ = " NOTE: MUST be an ODD INTEGER\n"; p5$ = "* Either ACCEPT the Default BOX-SIZE,\n"; p6$ = "* Or, ENTER a Different BOX-SIZE.\n"; p7$ = "* Then, CLICK the OK Button.\n\n"; p8$ = "PURE-PIXEL BOX-SIZE ENTERED:"; p$ = p1$ + p2$ + p3$ + p4$ + p5$ + p6$ + p7$ + p8$; boxsize = PopupNum(p$,5,3,11,0); oddcheck = boxsize / 2 - int(boxsize * 1.01 / 2); if (oddcheck < 0.1) then boxsize = boxsize + 1; printf(" FILTER BOX SIZE: %d\n\n",boxsize); # ------------------------------------------------------------ # RASTER DATA TYPE (16-bit unsigned integers): rtype$ = "16-bit unsigned"; # ------------------------------------------------------------ # OPEN INPUT RASTERS: printf("LIST OF INPUT RASTERS:\n"); if (pCB) then begin printf(" SRFICB"); GetInputRaster( SRFICB); nlins = NumLins(SRFICB); ncols = NumCols(SRFICB); checkHisto(SRFICB); end if (pCB) then begin if (pBL) then begin printf(" SRFIBL"); GetInputRaster(SRFIBL,nlins,ncols,rtype$); checkHisto(SRFIBL); end end else begin if (pBL) then begin printf(" SRFIBL"); GetInputRaster(SRFIBL); checkHisto(SRFIBL); nlins = NumLins(SRFIBL); ncols = NumCols(SRFIBL); end end printf(" SRFIGL"); if (pBL) then begin printf(" SRFIGL"); GetInputRaster(SRFIGL,nlins,ncols,rtype$); checkHisto(SRFIGL); end else begin printf(" SRFIGL"); GetInputRaster(SRFIGL); nlins = NumLins(SRFIGL); ncols = NumCols(SRFIGL); checkHisto(SRFIGL); end if (pYL) then begin printf(" SRFIYL"); GetInputRaster(SRFIYL,nlins,ncols,rtype$); checkHisto(SRFIYL); end GetInputRaster(SRFIRL,nlins,ncols,rtype$); if (pRE) then begin printf(" SRFIRE"); GetInputRaster(SRFIRE,nlins,ncols,rtype$); checkHisto(SRFIRE); end if (pNA) then begin printf(" SRFINA"); GetInputRaster(SRFINA,nlins,ncols,rtype$); checkHisto(SRFINA); end if (pNB) then begin printf(" SRFINB"); GetInputRaster(SRFINB,nlins,ncols,rtype$); checkHisto(SRFINB); end if (pMA) then begin printf(" SRFIMA"); GetInputRaster(SRFIMA,nlins,ncols,rtype$); checkHisto(SRFIMA); end if (pMB) then begin printf(" SRFIMB"); GetInputRaster(SRFIMB,nlins,ncols,rtype$); checkHisto(SRFIMB); end if (pMC) then begin printf(" SRFIMC"); GetInputRaster(SRFIMC,nlins,ncols,rtype$); checkHisto(SRFIMC); end if (pMD) then begin printf(" SRFIMD"); GetInputRaster(SRFIMD,nlins,ncols,rtype$); checkHisto(SRFIMD); end if (pME) then begin printf(" SRFIME"); GetInputRaster(SRFIME,nlins,ncols,rtype$); checkHisto(SRFIME); end if (pMF) then begin printf(" SRFIMF"); GetInputRaster(SRFIMF,nlins,ncols,rtype$); checkHisto(SRFIMF); end if (pMG) then begin printf(" SRFIMG"); GetInputRaster(SRFIMG,nlins,ncols,rtype$); checkHisto(SRFIMG); end GetInputRaster(MK,nlins,ncols,"binary"); checkHisto(MK); printf(" MK"); GetInputRaster(PVI,nlins,ncols,rtype$); checkHisto(PVI); printf(" PVI"); GetInputRaster(PBI,nlins,ncols,rtype$); checkHisto(PBI); printf(" PBI\n\n"); # ------------------------------------------------------------ # SET UP OUTPUT RASTERS: printf("LIST OF OUTPUT RASTERS:\n"); if (pCB) then begin printf(" DCB"); GetOutputRaster(DCB,nlins,ncols,rtype$); IgnoreNull(DCB); CopySubobjects(SRFICB,DCB,"GEOREF"); CopySubobjects(SRFICB,DCB,"CONTAB"); end if (pBL) then begin printf(" DBL"); GetOutputRaster(DBL,nlins,ncols,rtype$); IgnoreNull(DBL); CopySubobjects(SRFIBL,DBL,"GEOREF"); CopySubobjects(SRFIBL,DBL,"CONTAB"); end printf(" DGL"); GetOutputRaster(DGL,nlins,ncols,rtype$); IgnoreNull(DGL); CopySubobjects(SRFIGL,DGL,"GEOREF"); CopySubobjects(SRFIGL,DGL,"CONTAB"); if (pYL) then begin printf(" DYL"); GetOutputRaster(DYL,nlins,ncols,rtype$); IgnoreNull(DYL); CopySubobjects(SRFIYL,DYL,"GEOREF"); CopySubobjects(SRFIYL,DYL,"CONTAB"); end printf(" DRL"); GetOutputRaster(DRL,nlins,ncols,rtype$); IgnoreNull(DRL); CopySubobjects(SRFIRL,DRL,"GEOREF"); CopySubobjects(SRFIRL,DRL,"CONTAB"); if (pRE) then begin printf(" DRE"); GetOutputRaster(DRE,nlins,ncols,rtype$); IgnoreNull(DRE); CopySubobjects(SRFIRE,DRE,"GEOREF"); CopySubobjects(SRFIRE,DRE,"CONTAB"); end if (pNA) then begin printf(" DNA"); GetOutputRaster(DNA,nlins,ncols,rtype$); IgnoreNull(DNA); CopySubobjects(SRFINA,DNA,"GEOREF"); CopySubobjects(SRFINA,DNA,"CONTAB"); end if (pNB) then begin printf(" DNB"); GetOutputRaster(DNB,nlins,ncols,rtype$); IgnoreNull(DNB); CopySubobjects(SRFINB,DNB,"GEOREF"); CopySubobjects(SRFINB,DNB,"CONTAB"); end if (pMA) then begin printf(" DMA"); GetOutputRaster(DMA,nlins,ncols,rtype$); IgnoreNull(DMA); CopySubobjects(SRFIMA,DMA,"GEOREF"); CopySubobjects(SRFIMA,DMA,"CONTAB"); end if (pMB) then begin printf(" DMB"); GetOutputRaster(DMB,nlins,ncols,rtype$); IgnoreNull(DMB); CopySubobjects(SRFIMB,DMB,"GEOREF"); CopySubobjects(SRFIMB,DMB,"CONTAB"); end if (pMC) then begin printf(" DMC"); GetOutputRaster(DMC,nlins,ncols,rtype$); IgnoreNull(DMC); CopySubobjects(SRFIMC,DMC,"GEOREF"); CopySubobjects(SRFIMC,DMC,"CONTAB"); end if (pMD) then begin printf(" DMD"); GetOutputRaster(DMD,nlins,ncols,rtype$); IgnoreNull(DMD); CopySubobjects(SRFIMD,DMD,"GEOREF"); CopySubobjects(SRFIMD,DMD,"CONTAB"); end if (pME) then begin printf(" DME"); GetOutputRaster(DME,nlins,ncols,rtype$); IgnoreNull(DME); CopySubobjects(SRFIME,DME,"GEOREF"); CopySubobjects(SRFIME,DME,"CONTAB"); end if (pMF) then begin printf(" DMF"); GetOutputRaster(DMF,nlins,ncols,rtype$); IgnoreNull(DMF); CopySubobjects(SRFIMF,DMF,"GEOREF"); CopySubobjects(SRFIMF,DMF,"CONTAB"); end if (pMG) then begin printf(" DMG"); GetOutputRaster(DMG,nlins,ncols,rtype$); IgnoreNull(DMG); CopySubobjects(SRFIMG,DMG,"GEOREF"); CopySubobjects(SRFIMG,DMG,"CONTAB"); end # ------------------------------------------------------------ # SEARCH FOR BARE-SOIL & DENSE VEGETATION PIXELS: # Refer to C7. printf("\n\nSEARCHING FOR BARE-SOIL & DENSE-VEG PIXELS.\n"); printf(" This takes a few minutes. Please Wait.\n"); for each MK begin mk = MK; if (mk) then begin pvi = PVI; # BARE-SOIL & PVI-TEXTURE FILTER: if (pvi < pvi2s and pvi > pvi1s) then begin pbi = PBI; if (pbi < pbi2s and pbi > pbi1s) then begin pvisd = FocalSD(PVI,boxsize,boxsize); if (pvisd < sdmaxs) then begin if (pCB) then DCB = SRFICB; if (pBL) then DBL = SRFIBL; DGL = SRFIGL; if (pYL) then DYL = SRFIYL; DRL = SRFIRL; if (pRE) then DRE = SRFIRE; if (pNA) then DNA = SRFINA; if (pNB) then DNB = SRFINB; if (pMA) then DMA = SRFIMA; if (pMB) then DMB = SRFIMB; if (pMC) then DMC = SRFIMC; if (pMD) then DMD = SRFIMD; if (pME) then DME = SRFIME; if (pMF) then DMF = SRFIMF; if (pMG) then DMG = SRFIMG; end end end # DENSE-VEG & PVI-TEXTURE FILTER: if (pvi > pvi1v) then begin pvisd = FocalSD(PVI,boxsize,boxsize); if (pvisd < sdmaxv) then begin if (pCB) then DCB = SRFICB; if (pBL) then DBL = SRFIBL; DGL = SRFIGL; if (pYL) then DYL = SRFIYL; DRL = SRFIRL; if (pRE) then DRE = SRFIRE; if (pNA) then DNA = SRFINA; if (pNB) then DNB = SRFINB; if (pMA) then DMA = SRFIMA; if (pMB) then DMB = SRFIMB; if (pMC) then DMC = SRFIMC; if (pMD) then DMD = SRFIMD; if (pME) then DME = SRFIME; if (pMF) then DMF = SRFIMF; if (pMG) then DMG = SRFIMG; end end end end # ------------------------------------------------------------ # CREATE PYRAMIDS & CLOSE RASTERS: Refer to C7 printf("\nCREATE PYRAMIDS & CLOSE RASTERS:\n"); CloseRaster(PVI); CloseRaster(PBI); if (pCB) then begin printf(" DCB"); CloseRaster(SRFICB); SetNull(DCB,0); CreateHistogram(DCB,0); CreatePyramid(DCB,0); CloseRaster(DCB); end if (pBL) then begin printf(" DBL"); CloseRaster(SRFIBL); SetNull(DBL,0); CreateHistogram(DBL,0); CreatePyramid(DBL,0); CloseRaster(DBL); end printf(" DGL"); CloseRaster(SRFIGL); SetNull(DGL,0); CreateHistogram(DGL,0); CreatePyramid(DGL,0); CloseRaster(DGL); if (pYL) then begin printf(" DYL"); CloseRaster(SRFIYL); SetNull(DYL,0); CreateHistogram(DYL,0); CreatePyramid(DYL,0); CloseRaster(DYL); end printf(" DRL"); CloseRaster(SRFIRL); SetNull(DRL,0); CreateHistogram(DRL,0); CreatePyramid(DRL,0); CloseRaster(DRL); if (pRE) then begin printf(" DRE"); CloseRaster(SRFIRE); SetNull(DRE,0); CreateHistogram(DRE,0); CreatePyramid(DRE,0); CloseRaster(DRE); end if (pNA) then begin printf(" DNA"); CloseRaster(SRFINA); SetNull(DNA,0); CreateHistogram(DNA,0); CreatePyramid(DNA,0); CloseRaster(DNA); end if (pNB) then begin printf(" DNB"); CloseRaster(SRFINB); SetNull(DNB,0); CreateHistogram(DNB,0); CreatePyramid(DNB,0); CloseRaster(DNB); end if (pMA) then begin printf(" DMA"); CloseRaster(SRFIMA); SetNull(DMA,0); CreateHistogram(DMA,0); CreatePyramid(DMA,0); CloseRaster(DMA); end if (pMB) then begin printf(" DMB"); CloseRaster(SRFIMB); SetNull(DMB,0); CreateHistogram(DMB,0); CreatePyramid(DMB,0); CloseRaster(DMB); end if (pMC) then begin printf(" DMC"); CloseRaster(SRFIMC); SetNull(DMC,0); CreateHistogram(DMC,0); CreatePyramid(DMC,0); CloseRaster(DMC); end if (pMD) then begin printf(" DMD"); CloseRaster(SRFIMD); SetNull(DMD,0); CreateHistogram(DMD,0); CreatePyramid(DMD,0); CloseRaster(DMD); end if (pME) then begin printf(" DME"); CloseRaster(SRFIME); SetNull(DME,0); CreateHistogram(DME,0); CreatePyramid(DME,0); CloseRaster(DME); end if (pMF) then begin printf(" DMF"); CloseRaster(SRFIMF); SetNull(DMF,0); CreateHistogram(DMF,0); CreatePyramid(DMF,0); CloseRaster(DMF); end if (pMG) then begin printf(" DMG"); CloseRaster(SRFIMG); SetNull(DMG,0); CreateHistogram(DMG,0); CreatePyramid(DMG,0); CloseRaster(DMG); end printf("\n\n"); printf("FOR ANALYSIS HINTS: Read FAQs_by_Jack: C\n"); printf(" Especially: C8\n");