coordinate-0.0.5: A representation of latitude and longitude

Safe HaskellNone

Data.Geo.Coordinate.Latitude

Synopsis

Documentation

dmsLatitude :: Iso' (DegreesLatitude, Minutes, Seconds) LatitudeSource

An isomorphism on the triple of degrees latitude, minutes, seconds to a latitude.

>>> do deg <- 7 ^? nDegreesLatitude; min <- 7 ^? nMinutes; sec <- 7 ^? nSeconds; (deg, min, sec) ^? dmsLatitude
Just (Latitude (DegreesLatitude 7) (Minutes 7) (Seconds 7.0000))
>>> do deg <- 89 ^? nDegreesLatitude; min <- 59 ^? nMinutes; sec <- 59 ^? nSeconds; (deg, min, sec) ^? dmsLatitude
Just (Latitude (DegreesLatitude 89) (Minutes 59) (Seconds 59.0000))
>>> do deg <- (-7) ^? nDegreesLatitude; min <- 7 ^? nMinutes; sec <- 7 ^? nSeconds; (deg, min, sec) ^? dmsLatitude
Just (Latitude (DegreesLatitude (-7)) (Minutes 7) (Seconds 7.0000))
>>> do deg <- (-89) ^? nDegreesLatitude; min <- 59 ^? nMinutes; sec <- 59 ^? nSeconds; (deg, min, sec) ^? dmsLatitude
Just (Latitude (DegreesLatitude (-89)) (Minutes 59) (Seconds 59.0000))
>>> do deg <- 90 ^? nDegreesLatitude; min <- 59 ^? nMinutes; sec <- 59 ^? nSeconds; (deg, min, sec) ^? dmsLatitude
Nothing
>>> do deg <- 89 ^? nDegreesLatitude; min <- 60 ^? nMinutes; sec <- 59 ^? nSeconds; (deg, min, sec) ^? dmsLatitude
Nothing
>>> do deg <- 89 ^? nDegreesLatitude; min <- 59 ^? nMinutes; sec <- 60 ^? nSeconds; (deg, min, sec) ^? dmsLatitude
Nothing
>>> fmap (dmsLatitude #)  (7 ^? fracLatitude)
Just (DegreesLatitude 7,Minutes 0,Seconds 0.0000)
>>> fmap (dmsLatitude #)  (7.12 ^? fracLatitude)
Just (DegreesLatitude 7,Minutes 7,Seconds 12.0000)

fracLatitude :: Prism' Double LatitudeSource

A prism on latitude to a double between -90 and 90 exclusive.

>>> 7 ^? fracLatitude
Just (Latitude (DegreesLatitude 7) (Minutes 0) (Seconds 0.0000))
>>> (-7) ^? fracLatitude
Just (Latitude (DegreesLatitude (-7)) (Minutes 0) (Seconds 0.0000))
>>> 7.12 ^? fracLatitude
Just (Latitude (DegreesLatitude 7) (Minutes 7) (Seconds 12.0000))
>>> (-7.12) ^? fracLatitude
Just (Latitude (DegreesLatitude (-7)) (Minutes 7) (Seconds 12.0000))
>>> 90 ^? fracLatitude
Nothing
>>> (-90) ^? fracLatitude
Nothing
>>> 15.63791 ^? fracLatitude
Just (Latitude (DegreesLatitude 15) (Minutes 38) (Seconds 16.4760))
>>> 89.1 ^? fracLatitude
Just (Latitude (DegreesLatitude 89) (Minutes 5) (Seconds 60.0000))
>>> 89.2 ^? fracLatitude
Just (Latitude (DegreesLatitude 89) (Minutes 12) (Seconds 0.0000))
>>> fmap (fracLatitude #) (do deg <- 7 ^? nDegreesLatitude; min <- 7 ^? nMinutes; sec <- 7 ^? nSeconds; (deg, min, sec) ^? dmsLatitude)
Just 7.118611111111111
>>> fmap (fracLatitude #) (do deg <- 89 ^? nDegreesLatitude; min <- 15 ^? nMinutes; sec <- 6 ^? nSeconds; (deg, min, sec) ^? dmsLatitude)
Just 89.25166666666667

radianLatitude :: Prism' Double LatitudeSource

A prism on latitude to a double between -π2 and π2 exclusive.

>>> 0.2 ^? radianLatitude
Just (Latitude (DegreesLatitude 11) (Minutes 27) (Seconds 32.9612))
>>> 1.3 ^? radianLatitude
Just (Latitude (DegreesLatitude 74) (Minutes 29) (Seconds 4.2481))
>>> (-1.3) ^? radianLatitude
Just (Latitude (DegreesLatitude (-74)) (Minutes 29) (Seconds 4.2481))
>>> 1.5707963 ^? radianLatitude
Just (Latitude (DegreesLatitude 89) (Minutes 59) (Seconds 59.9945))
>>> 1.58 ^? radianLatitude
Nothing
>>> (-1.58) ^? radianLatitude
Nothing
>>> fmap (radianLatitude #) (do deg <- 7 ^? nDegreesLatitude; min <- 7 ^? nMinutes; sec <- 7 ^? nSeconds; (deg, min, sec) ^? dmsLatitude)
Just 0.12424320205794079
>>> fmap (radianLatitude #) (do deg <- 89 ^? nDegreesLatitude; min <- 15 ^? nMinutes; sec <- 6 ^? nSeconds; (deg, min, sec) ^? dmsLatitude)
Just 1.5577354462258057