home products news downloads documentation support gallery online maps resellers search
TNTmips Downloads Menu

HOME

CONTACT US

CURRENT RELEASE
  TNT 2013

DEVELOPMENT VERSION
  TNT 2014

TNTmips Pro
PRIOR RELEASES
  TNT 2012

FREE SOFTWARE
  TNTmips Free
  TNTatlas
  TNTsdk

MORE DOWNLOADS
  HASP Key Driver
  Screen Recorder
  TNT Language Kits
  Sample Geodata
  TNT Scripts

DOCUMENTATION
  TNTmips Tutorials
  Tutorial Datasets
  Technical Guides
  Scripts
  Quick Guides

MORE INFO
  Download FAQs
  FTP
  Download Managers
  Find Reseller

SITE MAP


TERCOR.sml

See other Scripts by Jack? ...


# ------------------------------------------------------------
# TERCOR.sml
# ------------------------------------------------------------
# SET WARNING LEVEL: Refer to B5 & B6.
  $warnings 3
# ------------------------------------------------------------
# DEFINE VARIABLES RELATED TO TERCOR MODEL:
  numeric p,flr;
  numeric s,fCB,fBL,fGL,fYL,fRL,fRE;
  numeric fNA,fNB,fMA,fMB,fMC,fMD,fME,fMF,fMG;
  numeric srfi1,srfi,srfimax;
  flr = 0.12;
  p = 2.0;
  srfimax = 10000;
# ------------------------------------------------------------
# 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("TERCOR.sml:\n");
     printf("         VERSION: November 15, 2005\n");
     printf("         PURPOSE: CORRECT SRFI RASTERS ");
     printf("FOR TERRAIN-SHADING EFFECTS\n");
     printf("         DETAILS: FAQs_by_Jack A & D\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$ = "Stockton, CA";
  numeric imager,vnir;
# ------------------------------------------------------------
# DECLARE VARIABLES DIRECTLY RELATED TO USER PROVIDED VALUES:
# Refer to B15 & B16.
  string imager$;
# ------------------------------------------------------------
# DECLARE STRING VARIABLE RELATED TO SRFI RASTERS:
# Refer to DXX. 
  string rtype$ = "16-bit unsigned";
  string stype$ =  "8-bit unsigned";
# ------------------------------------------------------------
# DECLARE STRING VARIABLE RELATED TO ALL RASTER TYPES:
# Refer to DXX. 
# ------------------------------------------------------------
# DECLARE VARIABLES RELATED TO BOOLEAN ENABLERS:
# Refer to B15 & B16
  numeric pCB,pBL,pGL,pYL,pRL,pRE;
  numeric pNA,pNB,pMA,pMB,pMC,pMD,pME,pMF,pMG,iip,isp,ipp;
# ------------------------------------------------------------
# DECLARE VARIBLES RELATED TO FOR-EACH LOOPS:
  numeric i,nlins,ncols,maxi;
# ------------------------------------------------------------
# DECLARE VARIABLES RELATED TO PVI & PBI: Refer to B15 & B16.
  numeric pfac,angrad,sinang,cosang;
  numeric pbioff,pvioff,srfiNRint,bslineslope,maxpvipbi;
  numeric srfiRL,srfiNR,tsrfiNR,pbif,pbi,pvif,pvi;
# ------------------------------------------------------------
# DECLARE LIST OF POSSIBLE INPUT RASTERS:
  raster SRFICB1,SRFIBL1,SRFIGL1,SRFIYL1,SRFIRL1,SRFIRE1;
  raster SRFINA1,SRFINB1,SRFIMA1,SRFIMB1,SRFIMC1,SRFIMD1;
  raster SRFIME1,SRFIMF1,SRFIMG1;
  raster PBI1,PVI1,SHADING;
# ------------------------------------------------------------
# DECLARE LIST OF POSSIBLE OUTPUT RASTERS:
  raster SRFICB,SRFIBL,SRFIGL,SRFIYL,SRFIRL,SRFIRE;
  raster SRFINA,SRFINB,SRFIMA,SRFIMB,SRFIMC,SRFIMD,SRFIME;
  raster SRFIMF,SRFIMG;
  raster PBI,PVI;
# ------------------------------------------------------------
# DECLARE VARIABLES RELATED TO WAVELENGTH-BASED MODELS:
# Refer to B15 & B16.
  numeric wLenCB,wLenBL,wLenGL,wLenYL,wLenRL,wLenRE;
  numeric wLenNA,wLenNB,wLenMA,wLenMB,wLenMC,wLenMD,wLenME;
  numeric wLenMF,wLenMG;
# ------------------------------------------------------------
# DECLARE VARIABLES RELATED TO SUN ANGLES:
  numeric sunelevang,sunaziang;
# ------------------------------------------------------------
# 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$,site$,t$);
  printf("           SITE NAME: %s\n",site$);
# ------------------------------------------------------------
# GET IMAGER NUMBER FROM THE USER: Refer to B17.
  p1$  = "IMAGER-NUMBER:\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$ = "NUMBER ENTERED:";
  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$,4,1,14,0);
# ------------------------------------------------------------
# GENERATE IMAGER-SPECIFIC PARAMETERS: Refer to B25.
  if (imager == 1) then begin
     imager$ = "QuickBird 2 MS";
     pBL=1; pNA=1;
     wLenBL=0.482; wLenGL=0.548; wLenRL=0.654; wLenNA=0.809;
  end
  if (imager == 2) then begin
     imager$ = "Ikonos 2 MS"; pBL=1; pNA=1;
     wLenBL=0.480; wLenGL=0.551; wLenRL=0.665; wLenNA=0.805;
  end
  if (imager == 3) then begin
     imager$ = "OrbView 3 MS"; pBL=1; pNA=1;
     wLenBL=0.482; wLenGL=0.548; wLenRL=0.654; wLenNA=0.809;
  end
  if (imager == 4) then begin
     imager$ = "Landsat 7 ETM+"; pBL=1; pNA=1;
     pMB=1; pMC=1;
     wLenBL=0.482; wLenGL=0.565; wLenRL=0.660; wLenNA=0.825;
     wLenMB=1.650; wLenMC=2.220;
  end
  if (imager == 5) then begin
     imager$ = "Landsat 5 TM";
     pBL=1; pNA=1; pMB=1; pMC=1;
     wLenBL=0.482; wLenGL=0.565; wLenRL=0.660; wLenNA=0.825;
     wLenMB=1.650; wLenMC=2.220;
  end
  if (imager == 6) then begin
     imager$ = "Landsat 5 MSS"; pRE=1; pNB=1;
     wLenGL=0.550; wLenRL=0.650; wLenRE=0.750;
     wLenNB=0.950;
  end
  if (imager == 7) then begin
     imager$ = "Landsat 4 TM"; 
     pBL=1; pNA=1; pMB=1; pMC=1;
     wLenBL=0.482; wLenGL=0.548; wLenRL=0.660; wLenNA=0.825;
     wLenMB=1.650; wLenMC=2.220;
  end
  if (imager == 8) then begin
     imager$ = "Landast 4 MSS"; pRE=1; pNB=1;
     wLenGL=0.550; wLenRL=0.650; wLenRE=0.750;
     wLenNB=0.950;
  end
  if (imager == 9) then begin
     imager$ = "Landsat 3 MSS"; pRE=1; pNB=1;
     wLenGL=0.550; wLenRL=0.650; wLenRE=0.750;
     wLenNB=0.950;
  end
  if (imager == 10) then begin
     imager$ = "Landsat 2 MSS"; pRE=1; pNB=1;
     wLenGL=0.550; wLenRL=0.650; wLenRE=0.750;
     wLenNB=0.950;
  end
  if (imager == 11) then begin
     imager$ = "Landsat 1 MSS"; pRE=1; pNB=1;
     wLenGL=0.550; wLenRL=0.650; wLenRE=0.750;
     wLenNB=0.950;
  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 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
     wLenGL=0.560; wLenRL=0.660; wLenNA=0.820;
     wLenMB=1.650; wLenMC=2.165; wLenMD=2.205; wLenME=2.260;
     wLenMF=2.330; wLenMG=2.395;
 end
  if (imager == 13) then begin
     imager$ = "Terra MODIS"; 
     pBL=1; pNA=1; pMA=1; pMB=1; pMC=1;
     wLenBL=0.469; wLenGL=0.555; wLenRL=0.645; wLenNA=0.8585;
     wLenMA=1.240; wLenMB=1.640; wLenMC=2.013;
  end
  if (imager == 14) then begin
     imager$ = "Aqua MODIS";
     pBL=1; pNA=1; pMA=1; pMB=1; pMC=1;
     wLenBL=0.469; wLenGL=0.555; wLenRL=0.645; wLenNA=0.8585;
     wLenMA=1.240; wLenMB=1.640; wLenMC=2.013;
  end
  printf("              IMAGER: %s\n\n",imager$);
# ------------------------------------------------------------
# GET fGL VALUE FROM USER: Refer to D2.
  p1$ = "GL SKY SPECTRAL-IRRADIANCE FRACTION:\n";
  p2$ = "   fGL ROLE: Determines f for Other Bands)\n";
  p3$ = "  fGL RANGE: 0.20 to 0.90\n";
  p4$ = "* Either ACCEPT the Default FRACTION,\n";
  p5$ = "* Or, ENTER a Different FRACTION.\n";
  p6$ = "* Then, CLICK the OK Button.\n\n";
  p7$ = "FRACTION ENTERED:";
  p$  = p1$ + p2$ + p3$ + p4$ + p5$ + p6$ + p7$;
  fGL = PopupNum(p$,0.40,0.10,1.0,2);
# ------------------------------------------------------------
# ASSIGN VALUES TO f-FACTORS: Refer to D2.
  printf("SKY SPECTRAL-IRRADIANCE FRACTIONS, fBAND:\n");
  printf("   BAND   wLen  fBAND\n");
  if (pCB) then begin
     fCB = flr + (fGL - flr) * (wLenGL / wLenCB)^p;
     printf("     CB%7.3f%7.3f  (MODEL)\n",wLenCB,fCB);
  end
  if (pBL) then begin
     fBL = flr + (fGL - flr) * (wLenGL / wLenBL)^p;
     printf("     BL%7.3f%7.3f  (MODEL)\n",wLenBL,fBL);
  end
  printf("     GL%7.3f%7.3f  (INPUT)\n",wLenGL,fGL);
  if (pYL) then begin
     fYL = flr + (fGL - flr) * (wLenGL / wLenYL)^p;
     printf("     YL%7.3f%7.3f  (MODEL)\n",wLenYL,fYL);
  end
  fRL = flr + (fGL - flr) * (wLenGL / wLenRL)^p;
  printf("     RL%7.3f%7.3f  (MODEL)\n",wLenRL,fRL);
  if (pRE) then begin
     fRE = flr + (fGL - flr) * (wLenGL / wLenRE)^p;
     printf("     RE%7.3f%7.3f  (MODEL)\n",wLenRE,fRE);
  end
  if (pNA) then begin
     fNA = flr + (fGL - flr) * (wLenGL / wLenNA)^p;
     printf("     NA%7.3f%7.3f  (MODEL)\n",wLenNA,fNA);
  end
  if (pNB) then begin
     fNB = flr + (fGL - flr) * (wLenGL / wLenNB)^p;
     printf("     NB%7.3f%7.3f  (MODEL)\n",wLenNB,fNB);
  end
  if (pMA) then begin
     fMA = flr + (fGL - flr) * (wLenGL / wLenMA)^p;
     printf("     MA%7.3f%7.3f  (MODEL)\n",wLenMA,fMA);
  end
  if (pMB) then begin
     fMB = flr + (fGL - flr) * (wLenGL / wLenMB)^p;
     printf("     MB%7.3f%7.3f  (MODEL)\n",wLenMB,fMB);
  end
  if (pMC) then begin
     fMC = flr + (fGL - flr) * (wLenGL / wLenMC)^p;
     printf("     MC%7.3f%7.3f  (MODEL)\n",wLenMC,fMC);
  end
  if (pMD) then begin
     fMD = flr + (fGL - flr) * (wLenGL / wLenMD)^p;
     printf("     MD%7.3f%7.3f  (MODEL)\n",wLenMD,fMD);
  end
  if (pME) then begin
     fME = flr + (fGL - flr) * (wLenGL / wLenME)^p;
     printf("     ME%7.3f%7.3f  (MODEL)\n",wLenME,fME);
  end
  if (pMF) then begin
     fMF = flr + (fGL - flr) * (wLenGL / wLenMF)^p;
     printf("     MF%7.3f%7.3f  (MODEL)\n",wLenMC,fMC);
  end
  if (pMG) then begin
     fMG = flr + (fGL - flr) * (wLenGL / wLenMG)^p;
     printf("     MC%7.3f%7.3f  (MODEL)\n",wLenMC,fMC);
  end
  printf("\n  fBAND MODEL EXPONENT: %6.2f\n",p);
  printf("     fBAND MODEL FLOOR: %6.2f\n",flr);
# ------------------------------------------------------------
# GET SUN ELEVATION ANGLE FROM THE USER: Refer to B17.
  p1$ = "SUN-ELEVATION-ANGLE ENTRY\n";
  p2$ = "   UNITS: degrees (above the horizon)\n";
  p3$ = "  FORMAT: NN.NN\n";
  p4$ = "   RANGE: 10.00  to 90.00 degrees\n";
  p5$ = "* Either ACCEPT the Default ANGLE,\n";
  p6$ = "* Or, ENTER a Different ANGLE.\n";
  p7$ = "* Then, CLICK the OK Button.\n\n";
  p8$ = "SUN-ELEVATION-ANGLE (degrees) ENTERED:";
  p$  = p1$ + p2$ + p3$ + p4$ + p5$ + p6$ + p7$ + p8$;
  sunelevang = PopupNum(p$,45.18,10,90,2);
  printf("       SUN ELEV. ANGLE: %6.2f deg\n",sunelevang);
# ------------------------------------------------------------
# GET SUN AZIMUTH ANGLE FROM THE USER: Refer to EXX.
  p1$ = "SUN-AZIMUTH-ANGLE:\n";
  p2$ = "   UNITS: degrees (relative to true north)\n";
  p3$ = "  FORMAT: NNN.NN\n";
  p4$ = "   RANGE: 0.00  to 360.00 degrees\n";
  p5$ = "* Either ACCEPT the Default ANGLE,\n";
  p6$ = "* Or, ENTER a Different ANGLE.\n";
  p7$ = "* Then, CLICK the OK Button.\n\n";
  p8$ = "ANGLE ENTERED:";
  p$  = p1$ + p2$ + p3$ + p4$ + p5$ + p6$ + p7$ + p8$;
  sunaziang = PopupNum(p$,149.41,0,360,2);
  printf("        SUN AZI. ANGLE: %6.2f deg\n\n",sunaziang);
# ------------------------------------------------------------
# OPEN INPUT RASTERS: Refer to EXX.
  printf("INPUT RASTERS:\n");
  if (pCB) then begin
     printf(" SRFICB");
     GetInputRaster(SRFICB1);
     nlins = NumLins(SRFICB1); ncols = NumCols(SRFICB1);
     checkHisto(SRFICB1);
  end
  if (pCB) then begin
     if (pBL) then begin
        printf(" SRFIBL");
        GetInputRaster(SRFIRL1,nlins,ncols,rtype$);
     checkHisto(SRFIRL1);
     end
  end
  else begin
     if (pBL) then begin
        printf(" SRFIBL");
        GetInputRaster(SRFIBL1);
        nlins = NumLins(SRFIBL1); ncols = NumCols(SRFIBL1);
        checkHisto(SRFIBL1);
     end
  end
  printf(" SRFIGL");
  if (pBL) then begin
     GetInputRaster(SRFIGL1,nlins,ncols,rtype$);
     checkHisto(SRFIGL1);
  end
  else begin
     GetInputRaster(SRFIGL1);
     nlins = NumLins(SRFIGL1); ncols = NumCols(SRFIGL1);
     checkHisto(SRFIGL1);
  end
  if (pYL) then begin
     printf(" SRFIYL");
     GetInputRaster(SRFIYL1,nlins,ncols,rtype$);
     checkHisto(SRFIYL1);
  end
  printf(" SRFIRL");
  GetInputRaster(SRFIRL1,nlins,ncols,rtype$);
  checkHisto(SRFIRL1);
  if (pRE) then begin
     printf(" SRFIRE");
     GetInputRaster(SRFIRE1,nlins,ncols,rtype$);
     checkHisto(SRFIRE1);
  end
  if (pNA) then begin
     printf(" SRFINA");
     GetInputRaster(SRFINA1,nlins,ncols,rtype$);
     checkHisto(SRFINA1);
  end
  if (pNB) then begin
     printf(" SRFINB");
     GetInputRaster(SRFINB1,nlins,ncols,rtype$);
     checkHisto(SRFINB1);
  end
  if (pMA) then begin
     printf(" SRFIMA");
     GetInputRaster(SRFIMA1,nlins,ncols,rtype$);
     checkHisto(SRFIMA1);
  end
  if (pMB) then begin
     printf(" SRFIMB");
     GetInputRaster(SRFIMB1,nlins,ncols,rtype$);
     checkHisto(SRFIMB1);
  end
  if (pMC) then begin
     printf(" SRFIMC");
     GetInputRaster(SRFIMC1,nlins,ncols,rtype$);
     checkHisto(SRFIMC1);
  end
  if (pMD) then begin
     printf(" SRFIMD");
     GetInputRaster(SRFIMD1,nlins,ncols,rtype$);
     checkHisto(SRFIMD1);
  end
  if (pME) then begin
     printf(" SRFIME");
     GetInputRaster(SRFIME1,nlins,ncols,rtype$);
     checkHisto(SRFIME1);
  end
  if (pMF) then begin
     printf(" SRFIMF");
     GetInputRaster(SRFIMF1,nlins,ncols,rtype$);
     checkHisto(SRFIMF1);
  end
  if (pMG) then begin
     printf(" SRFIMG");
     GetInputRaster(SRFIMG1,nlins,ncols,rtype$);
     checkHisto(SRFIMG1);
  end
  printf(" PVI");
  GetInputRaster(PVI1,nlins,ncols,rtype$);
  checkHisto(PVI1);
  printf(" PBI");
  GetInputRaster(PBI1,nlins,ncols,rtype$);
     checkHisto(PBI1);
  printf(" SHADING");
  GetInputRaster(SHADING,nlins,ncols,stype$);
  checkHisto(SHADING);
# ------------------------------------------------------------
# SET UP OUTPUT RASTERS:
  printf("\n\nOUTPUT RASTERS:\n");
  if (pCB) then begin
     printf(" SRFICB");
     GetOutputRaster(SRFICB,nlins,ncols,rtype$);
     SetNull(SRFICB,0);
     CopySubobjects(SRFICB1,SRFICB,"GEOREF");
     CopySubobjects(SRFICB1,SRFICB,"CONTAB");
  end
  if (pBL) then begin
     printf(" SRFIBL");
     GetOutputRaster(SRFIBL,nlins,ncols,rtype$);
     SetNull(SRFIBL,0);
     CopySubobjects(SRFIBL1,SRFIBL,"GEOREF");
     CopySubobjects(SRFIBL1,SRFIBL,"CONTAB");
  end
  printf(" SRFIGL");
  GetOutputRaster(SRFIGL,nlins,ncols,rtype$);
  SetNull(SRFIGL,0);
  CopySubobjects(SRFIGL1,SRFIGL,"GEOREF");
  CopySubobjects(SRFIGL1,SRFIGL,"CONTAB");
  if (pYL) then begin
     printf(" SRFIYL");
     GetOutputRaster(SRFIYL,nlins,ncols,rtype$);
     SetNull(SRFIYL,0);
     CopySubobjects(SRFIYL1,SRFIYL,"GEOREF");
     CopySubobjects(SRFIYL1,SRFIYL,"CONTAB");
  end
  printf(" SRFIRL");
  GetOutputRaster(SRFIRL,nlins,ncols,rtype$);
  SetNull(SRFIRL,0);
  CopySubobjects(SRFIRL1,SRFIRL,"GEOREF");
  CopySubobjects(SRFIRL1,SRFIRL,"CONTAB");
  if (pRE) then begin
     printf(" SRFIRE");
     GetOutputRaster(SRFIRE,nlins,ncols,rtype$);
     SetNull(SRFIRE,0);
     CopySubobjects(SRFIRE1,SRFIRE,"GEOREF");
     CopySubobjects(SRFIRE1,SRFIRE,"CONTAB");
  end
  if (pNA) then begin
     printf(" SRFINA");
     GetOutputRaster(SRFINA,nlins,ncols,rtype$);
     SetNull(SRFINA,0); 
     CopySubobjects(SRFINA1,SRFINA,"GEOREF");
     CopySubobjects(SRFINA1,SRFINA,"CONTAB");
  end
  if (pNB) then begin
     printf(" SRFINB");
     GetOutputRaster(SRFINB,nlins,ncols,rtype$);
     SetNull(SRFINB,0);
     CopySubobjects(SRFINB1,SRFINB,"GEOREF");
     CopySubobjects(SRFINB1,SRFINB,"CONTAB");
  end
  if (pMA) then begin
     printf(" SRFIMA");
     GetOutputRaster(SRFIMA,nlins,ncols,rtype$);
     SetNull(SRFIMA,0);
     CopySubobjects(SRFIMA1,SRFIMA,"GEOREF");
     CopySubobjects(SRFIMA1,SRFIMA,"CONTAB");
  end
  if (pMB) then begin
     printf(" SRFIMB");
     GetOutputRaster(SRFIMB,nlins,ncols,rtype$);
     SetNull(SRFIMB,0);
     CopySubobjects(SRFIMB1,SRFIMB,"GEOREF");
     CopySubobjects(SRFIMB1,SRFIMB,"CONTAB");
  end
  if (pMC) then begin
     printf(" SRFIMC");
     GetOutputRaster(SRFIMC,nlins,ncols,rtype$);
     SetNull(SRFIMC,0);
     CopySubobjects(SRFIMC1,SRFIMC,"GEOREF");
     CopySubobjects(SRFIMC1,SRFIMC,"CONTAB");
  end
  if (pMD) then begin
     printf(" SRFIMD");
     GetOutputRaster(SRFIMD,nlins,ncols,rtype$);
     SetNull(SRFIMD,0);
     CopySubobjects(SRFIMD1,SRFIMD,"GEOREF");
     CopySubobjects(SRFIMD1,SRFIMD,"CONTAB");
  end
  if (pME) then begin
     printf(" SRFIME");
     GetOutputRaster(SRFIME,nlins,ncols,rtype$);
     SetNull(SRFIME,0);
     CopySubobjects(SRFIME1,SRFIME,"GEOREF");
     CopySubobjects(SRFIME1,SRFIME,"CONTAB");
  end
  if (pMF) then begin
     printf(" SRFIMF");
     GetOutputRaster(SRFIMF,nlins,ncols,rtype$);
     SetNull(SRFIMF,0);
     CopySubobjects(SRFIMF1,SRFIMF,"GEOREF");
     CopySubobjects(SRFIMF1,SRFIMF,"CONTAB");
  end
  if (pMG) then begin
     printf(" SRFIMG");
     GetOutputRaster(SRFIMG,nlins,ncols,rtype$);
     SetNull(SRFIMG,0);
     CopySubobjects(SRFIMG1,SRFIMG,"GEOREF");
     CopySubobjects(SRFIMG1,SRFIMG,"CONTAB");
  end
  printf(" PVI");
  GetOutputRaster(PVI,nlins,ncols,rtype$);
  SetNull(PVI,0);
  CopySubobjects(PVI1,PVI,"GEOREF");
  CopySubobjects(PVI1,PVI,"CONTAB");
  CloseRaster(PVI1);
  printf(" PBI");
  GetOutputRaster(PBI,nlins,ncols,rtype$);
  SetNull(PBI,0);
  CopySubobjects(PBI1,PBI,"GEOREF");
  CopySubobjects(PBI1,PBI,"CONTAB");
  CloseRaster(PBI1);
# ------------------------------------------------------------
# PRODUCE OUTPUT RASTERS:  Refer to EXX.
  printf("\n\n");
  printf("CORRECTING SRFT RASTERS:\n");
  array numeric tc[256];
  for i=0 to 254 begin
     tc[i] = i / 180;
  end
# CB DATA:
  if (pCB) then begin
     printf(" SRFICB");
     for each SRFICB1 begin
        iip = 1; isp = 1;
        if (IsNull(SRFICB1)) then iip = 0;
        if (IsNull(SHADING)) then isp = 0;
        ipp = iip * isp;
        if (ipp) then begin
           srfi1   = SRFICB1; s = SHADING; s = tc[s];
           srfi = round(srfi1/(s*(1-fCB)+fCB));
           if (srfi < 1)    then srfi = 1;
           if (srfi > srfimax) then srfi = srfimax;
           SRFICB = srfi;
        end
     end
     CreateHistogram(SRFICB,0); CreatePyramid(SRFICB,0);
     CloseRaster(SRFICB1); CloseRaster(SRFICB);
  end
# BL DATA:
  if (pBL) then begin
     printf(" SRFIBL");
     for each SRFIBL1 begin
        iip = 1; isp = 1;
        if (IsNull(SRFIBL1)) then iip = 0;
        if (IsNull(SHADING)) then isp = 0;
        ipp = iip * isp;
        if (ipp) then begin
           srfi1   = SRFIBL1; s = SHADING; s = tc[s];
           srfi = round(srfi1/(s*(1-fBL)+fBL));
           if (srfi < 1)    then srfi = 1;
           if (srfi > srfimax) then srfi = srfimax;
           SRFIBL = srfi;
        end
     end
     CreateHistogram(SRFIBL,0); CreatePyramid(SRFIBL,0);
     CloseRaster(SRFIBL1); CloseRaster(SRFIBL);
  end
# GL DATA: 
  printf(" SRFIGL");
  for each SRFIGL1 begin
     iip = 1; isp = 1;
     if (IsNull(SRFIGL1)) then iip = 0;
     if (IsNull(SHADING)) then isp = 0;
     ipp = iip * isp;
     if (ipp) then begin
        srfi1 = SRFIGL1; s = SHADING; s = tc[s];
        srfi = round(srfi1/(s*(1-fGL)+fGL));
        if (srfi < 1)    then srfi = 1;
        if (srfi > srfimax) then srfi = srfimax;
        SRFIGL = srfi;
     end
  end
  CreateHistogram(SRFIGL,0); CreatePyramid(SRFIGL,0);
  CloseRaster(SRFIGL1); CloseRaster(SRFIGL);
# YL DATA:
  if (pYL) then begin
     printf(" SRFIYL");
     for each SRFIYL1 begin
        iip = 1; isp = 1;
        if (IsNull(SRFIYL1)) then iip = 0;
        if (IsNull(SHADING)) then isp = 0;
        ipp = iip * isp;
        if (ipp) then begin
           srfi1 = SRFIYL1; s = SHADING; s = tc[s];
           srfi = round(srfi1/(s*(1-fYL)+fYL));
           if (srfi < 1)    then srfi = 1;
           if (srfi > srfimax) then srfi = srfimax;
           SRFIYL = srfi;
        end
     end
     CreateHistogram(SRFIYL,0); CreatePyramid(SRFIYL,0);
     CloseRaster(SRFIYL1); CloseRaster(SRFIYL);
  end
# RL DATA:
  printf(" SRFIRL");
  for each SRFIRL1 begin
     iip = 1; isp = 1;
     if (IsNull(SRFIRL1)) then iip = 0;
     if (IsNull(SHADING)) then isp = 0;
     ipp = iip * isp;
     if (ipp) then begin
        srfi1 = SRFIRL1; s = SHADING; s = tc[s];
        srfi = round(srfi1/(s*(1-fRL)+fRL));
        if (srfi < 1)    then srfi = 1;
        if (srfi > srfimax) then srfi = srfimax;
        SRFIRL = srfi;
     end
  end
  CreateHistogram(SRFIRL,0); CreatePyramid(SRFIRL,0);
  CloseRaster(SRFIRL1);
# RE DATA:
  if (pRE) then begin
     printf(" SRFIRE");
     for each SRFIRE1 begin 
        iip = 1; isp = 1;
        if (IsNull(SRFIRE1)) then iip = 0;
        if (IsNull(SHADING)) then isp = 0;
        ipp = iip * isp;
        if (ipp) then begin
           srfi1 = SRFIRE1; s = SHADING; s = tc[s];
           srfi = round(srfi1/(s*(1-fRE)+fRE));
           if (srfi < 1)    then srfi = 1;
           if (srfi > srfimax) then srfi = srfimax;
           SRFIRE = srfi;
        end
     end
     CreateHistogram(SRFIRE,0); CreatePyramid(SRFIRE,0);
     CloseRaster(SRFIRE1); CloseRaster(SRFIRE);
   end
# NA DATA:
  if (pNA) then begin
     printf(" SRFINA");
     for each SRFINA1 begin
        iip = 1; isp = 1;
        if (IsNull(SRFINA1)) then iip = 0;
        if (IsNull(SHADING)) then isp = 0;
        ipp = iip * isp;
        if (ipp) then begin
           srfi1 = SRFINA1; s = SHADING; s = tc[s];
           srfi = round(srfi1/(s*(1-fNA)+fNA));
           if (srfi < 1)    then srfi = 1;
           if (srfi > srfimax) then srfi = srfimax;
           SRFINA = srfi;
        end
     end
     CreateHistogram(SRFINA,0); CreatePyramid(SRFINA,0);
     CloseRaster(SRFINA1);
  end
# NB DATA:
  if (pNB) then begin
     printf(" SRFINB");
     for each SRFINB1 begin
        iip = 1; isp = 1;
        if (IsNull(SRFINB1)) then iip = 0;
        if (IsNull(SHADING)) then isp = 0;
        ipp = iip * isp;
        if (ipp) then begin
           srfi1 = SRFINB1; s = SHADING; s = tc[s];
           srfi = round(srfi1/(s*(1-fNB)+fNB));
           if (srfi < 1)    then srfi = 1;
           if (srfi > srfimax) then srfi = srfimax;
           SRFINB = srfi;
        end
     end
     CreateHistogram(SRFINB,0); CreatePyramid(SRFINB,0);
     CloseRaster(SRFINB1);
  end
# MA DATA:
  if (pMA) then begin
     printf(" SRFIMA");
     for each SRFIMA1 begin
        iip = 1; isp = 1;
        if (IsNull(SRFIMA1)) then iip = 0;
        if (IsNull(SHADING)) then isp = 0;
        ipp = iip * isp;
        if (ipp) then begin
           srfi1 = SRFIMA1; s = SHADING; s = tc[s];
           srfi = round(srfi1/(s*(1-fMA)+fMA));
           if (srfi < 1)    then srfi = 1;
           if (srfi > srfimax) then srfi = srfimax;
           SRFIMA = srfi;
        end
     end
     CreateHistogram(SRFIMA,0); CreatePyramid(SRFIMA,0);
     CloseRaster(SRFIMA1); CloseRaster(SRFIMA);
  end
# MB DATA:
  if (pMB) then begin
     printf(" SRFIMB");
     for each SRFIMB1 begin
        iip = 1; isp = 1;
        if (IsNull(SRFIMB1)) then iip = 0;
        if (IsNull(SHADING)) then isp = 0;
        ipp = iip * isp;
        if (ipp) then begin
           srfi1 = SRFIMB1; s = SHADING; s = tc[s];
           srfi = round(srfi1/(s*(1-fMB)+fMB));
           if (srfi < 1)    then srfi = 1;
           if (srfi > srfimax) then srfi = srfimax;
           SRFIMB = srfi;
        end
     end
     CreateHistogram(SRFIMB,0); CreatePyramid(SRFIMB,0);
     CloseRaster(SRFIMB1); CloseRaster(SRFIMB);
  end
# MC DATA:
  if (pMC) then begin
     printf(" SRFIMC");
     for each SRFIMC1 begin
        iip = 1; isp = 1;
        if (IsNull(SRFIMC1)) then iip = 0;
        if (IsNull(SHADING)) then isp = 0;
        ipp = iip * isp;
        if (ipp) then begin
           srfi1 = SRFIMC1; s = SHADING; s = tc[s];
           srfi = round(srfi1/(s*(1-fMC)+fMC));
           if (srfi < 1) then srfi = 1;
           if (srfi > srfimax) then srfi = srfimax;
           SRFIMC = srfi;
        end
     end
     CreateHistogram(SRFIMC,0); CreatePyramid(SRFIMC,0);
     CloseRaster(SRFIMC1); CloseRaster(SRFIMC);
  end
# MD DATA:
  if (pMD) then begin
     printf(" SRFIMD");
     for each SRFIMD1 begin
        iip = 1; isp = 1;
        if (IsNull(SRFIMD1)) then iip = 0;
        if (IsNull(SHADING)) then isp = 0;
        ipp = iip * isp;
        if (ipp) then begin
           srfi1 = SRFIMD1; s = SHADING; s = tc[s];
           srfi = round(srfi1/(s*(1-fMD)+fMD));
           if (srfi < 1) then srfi = 1;
           if (srfi > srfimax) then srfi = srfimax;
           SRFIMD = srfi;
        end
     end
     CreateHistogram(SRFIMD,0); CreatePyramid(SRFIMD,0);
     CloseRaster(SRFIMD1); CloseRaster(SRFIMD);
  end
# ME DATA:
  if (pME) then begin
     printf(" SRFIME");
     for each SRFIME1 begin
        iip = 1; isp = 1;
        if (IsNull(SRFIME1)) then iip = 0;
        if (IsNull(SHADING)) then isp = 0;
        ipp = iip * isp;
        if (ipp) then begin
           srfi1 = SRFIME1; s = SHADING; s = tc[s];
           srfi = round(srfi1/(s*(1-fME)+fME));
           if (srfi < 1) then srfi = 1;
           if (srfi > srfimax) then srfi = srfimax;
           SRFIME = srfi;
        end
     end
     CreateHistogram(SRFIME,0); CreatePyramid(SRFIME,0);
     CloseRaster(SRFIME1); CloseRaster(SRFIME);
  end
# MF DATA:
  if (pMF) then begin
     printf(" SRFIMF");
     for each SRFIMF1 begin
        iip = 1; isp = 1;
        if (IsNull(SRFIMF1)) then iip = 0;
        if (IsNull(SHADING)) then isp = 0;
        ipp = iip * isp;
        if (ipp) then begin
           srfi1 = SRFIMF1; s = SHADING; s = tc[s];
           srfi = round(srfi1/(s*(1-fMF)+fMF));
           if (srfi < 1) then srfi = 1;
           if (srfi > srfimax) then srfi = srfimax;
           SRFIMF = srfi;
        end
     end
     CreateHistogram(SRFIMF,0); CreatePyramid(SRFIMF,0);
     CloseRaster(SRFIMF1); CloseRaster(SRFIMF);
  end
# MG DATA:
  if (pMG) then begin
     printf(" SRFIMG");
     for each SRFIMG1 begin
        iip = 1; isp = 1;
        if (IsNull(SRFIMG1)) then iip = 0;
        if (IsNull(SHADING)) then isp = 0;
        ipp = iip * isp;
        if (ipp) then begin
           srfi1 = SRFIMG1; s = SHADING; s = tc[s];
           srfi = round(srfi1/(s*(1-fMG)+fMG));
           if (srfi < 1) then srfi = 1;
           if (srfi > srfimax) then srfi = srfimax;
           SRFIMG = srfi;
        end
     end
     CreateHistogram(SRFIMG,0); CreatePyramid(SRFIMG,0);
     CloseRaster(SRFIMG1); CloseRaster(SRFIMG);
  end
  CloseRaster(SHADING);
  printf("\n\n");
# ------------------------------------------------------------
# PRODUCE VALUES FOR PVI & PBI RASTERS:
  printf("PRODUCING PVI & PBI RASTERS.");
  srfiNRint = 254; bslineslope = 1.086;
  pbioff = 100; pvioff = 1000;
  pfac = 0.2723659; maxpvipbi = 3000;
  angrad = -atan(bslineslope);
  sinang = sin(angrad); cosang = cos(angrad);
  for each SRFIRL begin
     srfiRL =  SRFIRL;
     if (srfiRL > 0) then begin
        if (pNA) then srfiNR = SRFINA;
        if (pNB and pNA==0) then begin
           srfiNR = SRFINB;
        end
        tsrfiNR = srfiNR - srfiNRint;
        pbif = srfiRL * cosang - srfiNR * sinang;
        pbi  = round(pfac * pbif)+ pbioff;
        pvif = srfiRL * sinang + srfiNR * cosang;
        pvi  = round(pfac * pvif) + pvioff;
        if (pbi < 1) then pbi = 1;
        if (pbi > maxpvipbi) then pbi = maxpvipbi;
        if (pvi < 1) then pvi = 1;
        if (pvi > maxpvipbi) then pvi = maxpvipbi;
        PBI = pbi; PVI = pvi;
     end
  end
  CreateHistogram(PBI,0); CreateHistogram(PVI,0);
  CreatePyramid(PBI,0); CreatePyramid(PVI,0);
  CloseRaster(PBI); CloseRaster(PVI);
  if (pNA) then CloseRaster(SRFINA);
  if (pNB) then CloseRaster(SRFINB);
  CloseRaster(SRFIRL);
# ------------------------------------------------------------
  printf("TO SAVE THE CONSOLE WINDOW TEXT AS A REPORT:\n");
  printf("   1. RIGHT-CLICK IN THE CONSOLE WINDOW.\n");
  printf("   2. SELECT THE Save As... OPTION.\n");
  printf("   3. NAVIGATE TO THE DESIRED LOCATION.\n");
  printf("   4. PROVIDE A REPORT NAME (or OVERWRITE).\n");
  printf("   5. CLICK OK.");


Back Home ©MicroImages, Inc. 2013 Published in the United States of America
11th Floor - Sharp Tower, 206 South 13th Street, Lincoln NE 68508-2010   USA
Business & Sales: (402)477-9554  Support: (402)477-9562  Fax: (402)477-9559
Business info@microimages.com  Support support@microimages.com  Web webmaster@microimages.com

25 March 2009

page update: 26 May 11