Datum.frink

View or download Datum.frink in plain text format


// References:
// http://www.uwgb.edu/dutchs/UsefulData/UTMFormulas.HTM

// This represents the shape of the spheroid in a geographic datum.
// It also calculates features of each datum so they can be addressed
// as member variables.
//
// NOTE:  Please ensure that you have the 2006-05-16 or later release of Frink
// as previous versions do not handle cyclical class definitions properly.
class Datum
{
   // The name of the datum/projection
   var name

   // Equatorial radius (generally called "a" in calculations so this
   // makes it easier to write.
   var a

   // Polar radius (generally called "a" in calculations so this
   // makes it easier to write.
   var b

   // Eccentricity
   var e

   // eprime is another eccentricity value.  It is only used as squares,
   // fourth powers, sixth, etc., but it is stored here as the first power.
   var eprime

   // The "flattening" of the sphere
   var flattening

   var n

   // Constructor
   new[dName is string, equatorialRadius is length, polarRadius is length] :=
   {
      name = dName
      a = equatorialRadius
      b = polarRadius

      // Calculate other values
      e = sqrt[1-b^2/a^2]

      eprime = e a / b

      n = (a-b)/(a+b)

      flattening = (a-b)/a
   }

   // Make common datums.
   class var WGS84 = new Datum["WGS84", 6378137 m, 6356752.3142 m]
   class var NAD83 = new Datum["NAD83", 6378137 m, 6356752.3142 m]
   class var GRS80 = new Datum["GRS 80",6378137 m, 6356752.3141 m]
   class var WGS72 = new Datum["WGS72", 6378135 m, 6356750.5 m] 
   class var Australian1965 = new Datum["Australian 1965",
                                        6378160 m, 6356774.7 m]
   class var Krasovsky1940 = new Datum["Krasovsky 1940",
                                       6378245 m, 6356863.0 m]
   class var Hayford1909 = new Datum["Hayford 1909", 6378388 m, 6356911.9 m]
   class var Clake1880 = new Datum["Clake 1880",     6378249.1 m, 6356514.9 m]
   class var Clarke1866 = new Datum["Clarke 1866",   6378206.4 m, 6356583.8 m]
   class var Airy1830 = new Datum["Airy 1830",       6377563.4 m, 6356256.9 m]
   class var Bessel1841 = new Datum["Bessel 1841",   6377397.2 m, 6356079.0 m]
   class var Everest1830 = new Datum["Everest 1830", 6377276.3 m, 6356075.4 m]
}

"Datum.frink included"


View or download Datum.frink in plain text format


This is a program written in the programming language Frink.
For more information, view the Frink Documentation or see More Sample Frink Programs.

Alan Eliasen was born 17645 days, 8 hours, 39 minutes ago.