-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Geodetic calculations -- -- Geodetic calculations including Vincenty and Great Circle @package Geodetic @version 0.3 module Data.Geo.Accessor.Value class Value a b | a -> b value :: (Value a b) => a -> b module Data.Geo.Accessor.EllipsoidalDistance class EllipsoidalDistance a ellipsoidalDistance :: (EllipsoidalDistance a) => a -> Double module Data.Geo.Sphere data Sphere sphere :: Double -> Sphere earthMean :: Sphere instance Eq Sphere instance Ord Sphere instance Enum Sphere instance Show Sphere instance Num Sphere instance Fractional Sphere instance Floating Sphere instance Value Sphere Double -- | A longitude on earth in degrees. module Data.Geo.Longitude data Longitude -- | Construct a longitude using the given number of degrees between -180 -- and 180. longitude :: Double -> Longitude instance Eq Longitude instance Ord Longitude instance Enum Longitude instance Show Longitude instance Num Longitude instance Fractional Longitude instance Floating Longitude instance Value Longitude Double module Data.Geo.Accessor.Lon class Lon a lon :: (Lon a) => a -> Longitude -- | A latitude on earth in degrees. module Data.Geo.Latitude data Latitude -- | Construct a latitude using the given number of degrees between -90 and -- 90. latitude :: Double -> Latitude instance Eq Latitude instance Ord Latitude instance Enum Latitude instance Show Latitude instance Num Latitude instance Fractional Latitude instance Floating Latitude instance Value Latitude Double module Data.Geo.Accessor.Lat class Lat a lat :: (Lat a) => a -> Latitude -- | An ellipsoid with parameters such as flattening. module Data.Geo.Ellipsoid -- | Ellipsoidal parameters. Some are derivable from others. data Ellipsoid -- | The semi major axis in metres. semiMajor :: Ellipsoid -> Double -- | The semi minor axis in metres. semiMinor :: Ellipsoid -> Double -- | The ellipsoidal flattening. flattening :: Ellipsoid -> Double -- | The inverse of the ellipsoidal flattening. inverseFlattening :: Ellipsoid -> Double -- | Construct an ellipsoid with the given parameters. ellipsoid :: Double -> Double -> Double -> Double -> Ellipsoid -- | Construct an ellipsoid using only a semi major axis and inverse -- flattening. Other parameters are computed. semiMajorInverseF :: Double -> Double -> Ellipsoid -- | Construct an ellipsoid using only a semi major axis and flattening. -- Other parameters are computed. semiMajorFlattening :: Double -> Double -> Ellipsoid wgs84 :: Ellipsoid grs80 :: Ellipsoid grs67 :: Ellipsoid ans :: Ellipsoid wgs72 :: Ellipsoid au1965 :: Ellipsoid krasovsky1940 :: Ellipsoid international1924 :: Ellipsoid hayford1909 :: Ellipsoid airy1830 :: Ellipsoid everest1830 :: Ellipsoid bessel1841 :: Ellipsoid clarke1858 :: Ellipsoid clarke1866 :: Ellipsoid clarke1880 :: Ellipsoid instance Eq Ellipsoid instance Show Ellipsoid -- | An elevation in metres, above 0. module Data.Geo.Elevation data Elevation -- | Construct an elevation with the given number of metres. elevation :: Double -> Elevation instance Eq Elevation instance Ord Elevation instance Enum Elevation instance Show Elevation instance Num Elevation instance Fractional Elevation instance Floating Elevation instance Value Elevation Double module Data.Geo.Accessor.Ele class Ele a ele :: (Ele a) => a -> Elevation -- | A bearing in a degrees between 0 and 360. module Data.Geo.Bearing data Bearing -- | Construct a bearing with the number of degrees. bearing :: Double -> Bearing instance Eq Bearing instance Ord Bearing instance Enum Bearing instance Show Bearing instance Num Bearing instance Fractional Bearing instance Floating Bearing instance Value Bearing Double -- | Convert types to and from radians/degrees. module Data.Geo.Radians class Radians a toRadians :: (Radians a) => a -> Double fromRadians :: (Radians a) => Double -> a -- | Convert two values to radians. radians :: (Radians a, Radians b) => a -> b -> (Double, Double) instance Radians Bearing instance Radians Longitude instance Radians Latitude instance Radians Double -- | A coordinate on earth with a latitude and longitude. module Data.Geo.Coord data Coord -- | Construct a coordinate with the given latitude and longitude. (|.|) :: Latitude -> Longitude -> Coord -- | (!.!) :: Double -> Double -> Coord -- | (|..|) :: Double -> Double -> Coord -- | Convert the latitude and longitude of the given coordinate to radians. radians' :: Coord -> (Double, Double) instance Eq Coord instance Show Coord instance Lon Coord instance Lat Coord -- | Represent a value in degrees, minutes and seconds. module Data.Geo.DMS -- | The structure of a type convertible to degrees, minutes and seconds. data DMS positive :: DMS -> Bool degrees :: DMS -> Int minutes :: DMS -> Int seconds :: DMS -> Double -- | Construct a value of degrees, minutes and seconds. dms :: Bool -> Int -> Int -> Double -> DMS class DMSable a toDMS :: (DMSable a) => a -> DMS fromDMS :: (DMSable a) => DMS -> a showNegPos :: (DMSable a) => a -> String -- | Show a value in degrees, minutes and seconds. showDMS :: (DMSable a) => a -> String -- | Show a coordinate in degrees, minutes and seconds. coordDMS :: Coord -> String instance Eq DMS instance Ord DMS instance Show DMS instance DMSable Longitude instance DMSable Latitude module Data.Geo.Accessor.Coordinate class Coordinate a coordinate :: (Coordinate a) => a -> Coord -- | A coordinate on earth with an elevation in metres. module Data.Geo.Position data Position -- | Construct a position with the given coordinate and elevation in -- metres. (|*|) :: Coord -> Elevation -> Position instance Eq Position instance Show Position instance Ele Position instance Coordinate Position module Data.Geo.GreatCircle sphericalLaw :: Sphere -> Coord -> Coord -> Double module Data.Geo.Haversine haversine :: Sphere -> Coord -> Coord -> Double -- | An azimuth in degrees between 0 and 360). module Data.Geo.Azimuth data Azimuth -- | Construct an azimuth with the number of degrees. azimuth :: Double -> Azimuth instance Eq Azimuth instance Ord Azimuth instance Enum Azimuth instance Show Azimuth instance Num Azimuth instance Fractional Azimuth instance Floating Azimuth instance Value Azimuth Double module Data.Geo.Accessor.Azi class Azi a azi :: (Azi a) => a -> Azimuth module Data.Geo.Accessor.ReverseAzi class ReverseAzi a reverseAzi :: (ReverseAzi a) => a -> Azimuth -- | A geodetic curve is made of a distance in metres, an azimuth and a -- reverse azimuth. module Data.Geo.GeodeticCurve data GeodeticCurve -- | Construct a geodetic curve with the given parameters. geodeticCurve :: Double -> Azimuth -> Azimuth -> GeodeticCurve instance Eq GeodeticCurve instance Show GeodeticCurve instance ReverseAzi GeodeticCurve instance Azi GeodeticCurve instance EllipsoidalDistance GeodeticCurve -- | An implementation of Thaddeus Vincenty's direct and inverse geodetic -- algorithms. http://www.ngs.noaa.gov/PUBS_LIB/inverse.pdf module Data.Geo.Vincenty -- | An acceptable convergence value. convergence :: Double class VincentyDirect a direct :: (VincentyDirect a) => a -> Coord -> Bearing -> Double -> (Coord, Bearing) class VincentyInverse a inverse :: (VincentyInverse a) => a -> Coord -> Coord -> GeodeticCurve instance Eq InverseResult instance Show P instance VincentyInverse () instance VincentyInverse Ellipsoid instance VincentyInverse Double instance VincentyInverse (Double, Ellipsoid) instance VincentyDirect () instance VincentyDirect Ellipsoid instance VincentyDirect Double instance VincentyDirect (Double, Ellipsoid) module Data.Geo.Accessor.Curve class Curve a curve :: (Curve a) => a -> GeodeticCurve -- | An elevated curve is a geodetic curve with an elevation in metres. module Data.Geo.ElevatedCurve data ElevatedCurve -- | Construct an elevated curve. elevatedCurve :: GeodeticCurve -> Elevation -> ElevatedCurve -- | Compute the length of an elevated curve. curveLength :: ElevatedCurve -> Double instance Eq ElevatedCurve instance Show ElevatedCurve instance Ele ElevatedCurve instance Curve ElevatedCurve module Data.Geo