proj4-hs-bindings: Haskell bindings for the Proj4 C dynamic library.

[ data, library ] [ Propose Tags ]

Haskell bindings for the Proj.4 map projection C library.

You need to have Proj.4 already installed as a shared library.

Example transformations (from http://www.mysqludf.org/lib_mysqludf_fPROJ4/):

import Geo.Proj4

lon0 = 22.350 * pi / 180 -- Test longitude in radians.
lat0 = 40.084 * pi / 180 -- Test latitude in radians.
alt0 = 2843 -- Test altitude in meters.

-- | Test projection:
pj = newProjection "+proj=utm +zone=34"

-- | Another test (null, e.g. cylindrical) projction:
pj0 = newProjection "+proj=latlong +ellps=clrk66"

-- | A projection of our test longitude & latitude, using @pj:
(x, y) = pjFwd pj (lon0, lat0)

-- | An inverse projection from (x, y) to (longitude, latitude):
(lon, lat) = pjInv pj (x, y)

-- | Convert our test position from one projection to another (pj0 -> pj):
(x2, y2, z2) = pjTransformPt pj0 pj (lon0, lat0, alt0)

main :: IO ()
main = do
putStrLn $"(x, y): " ++ (show (x, y)) putStrLn$ "(lon, lat): " ++ (show (lon * 180 / pi, lat * 180 / pi))
putStrLn $"(x, y, z): " ++ (show$ (x2, y2, z2))
return ()

You should see the following when you compile and run the above:

(x, y): (615096.1096381239,4437953.6592040695)
(lon, lat): (22.350000000000662,40.083999999999584)
(x, y, z): (615096.1096381239,4437953.6592040695,2843.0)
Versions [faq] 0.1 base (<5), ghc-prim [details] LicenseRef-GPL (C) 2012–2013 Pavel M. Penev, LaRouche Policy Institute Pavel M. Penev Pavel M. Penev Data by PavelPenev at 2013-09-22T06:09:10Z NixOS:0.1 978 total (3 in the last 30 days) (no votes yet) [estimated by Bayesian average] λ λ λ Docs not available All reported builds failed as of 2016-12-20

Modules

• Geo
• Geo.Proj4
• Geo.Proj4.Internal