An example ( coments, questions, etc: pawel@crwr.utexas.edu).
myprj = EqualAreaAzimuthal.Make(r)
myprj.SetCentralMeridian(-120)
myprj.SetReferenceLatitude(30)theView.SetUnits(#UNITS_LINEAR_METERS) theView.GetDisplay.SetDistanceUnits(#UNITS_LINEAR_METERS)
To set a map projection by hand follow the steps:
Orographic, Lambert Equal-Area Azimuthal (Equatorial), and some other projcetions have two important parameters: Central Meridian and Reference Latitude. To make the illusion of the Earth rotation Avenue script must change in steps the Central Meridian by chosen value from 180 to -180 before the view is exported:
theview = av.getactivedoc theprj = theview.getprojection '=========================================================== 'set files format to bmp (windows bitmap) '=========================================================== exformat = 2 theFormats = theView.GetDisplay.ReturnExportFormats 'Returns a list of available export formats. if (exformat = 1) then filex = ".wmf" end if (exformat = 2) then filex = ".bmp" end ' here lines with other format file extensions can be added theformat = theformats.get(exformat) if (theFormat = nil) then msgbox.error("File format not specified", "") return 0 end '=========================================================== ' set the parameters of the projection '=========================================================== 'central meridian changes from -180 to 180 'reference latitude changes from -90 to 90 'Assume number of steps required to rotate Earth 360 degree 'this is the number of images will be created no_Hsteps = 30 Hstep = 360/no_Hsteps 'stepzero = -180-Hstep 'set the reference latitude to 0 refl = 0 '=========================================================== ' export files (loop) 1 image is redundant (there are two ' images for the cenral meridian = 180 (= -180) ' set the file prefix fprx = "wrda" '=========================================================== i=0 for each k in -180..180 by Hstep i=i+1 cmrd = k theprj.SetCentralMeridian(cmrd) theprj.SetReferenceLatitude(refl) ' apply the projection to the view theView.SetProjection(theprj) if (i < 10) then sname = fprx+"0"+i.asstring+filex else sname = fprx+i.asstring+filex end theFN = sname.asfilename theExportDisplay = theView.GetDisplay.ExportStartFN(theFN, theFormat) 'Starts exporting graphics drawn on aDisplay to aFileName theExportDisplay.Invalidate(FALSE) theView.Draw(theExportDisplay) 'Draws aView onto a Display. theExportDisplay.ExportEnd 'Stops exporting the graphics drawn on aDisplay end |
Open a new script and copy this listing into it. Compile the script and run it ! You should get 31 files named wrda01.bmp ... wrda31.bmp. (number of images is defined in line no_Hsteps = 30 and the file name prefix in the line fprx = "wrda" . You can use these files to construct an animated gif file (GIF89B). It should looks like it is shown below:
<===== oops! Earth rotates wrong direction (?) Let's change one line in our script to: for each k in 180..-180 by -Hstep now it looks better =====> |
It seems to me that Lambert Equal-Area Azimuthal (Equatorial) projection is not good for presenting the Earth rotation, Orographic gives a better picture. You can experiment with different projections. By manipulating projection parameters (Central Meridian and Reference Latitude) you can get the effect of flying above countries, fields, etc. I tried to do such a GIF but unfortunately ArcView (or my old PC) mess up with colors ... flight along N40 latitude .