-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Geodetic calculations -- -- Geodetic calculations including Vincenty and Great Circle using a -- Latitude and Longitude pair @package Geodetic @version 0.4 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 Show P instance Eq InverseResult 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