Name: proj4-hs-bindings Version: 0.1 Stability: experimental License: GPL Build-Type: Simple Cabal-Version: >= 1.2 Synopsis: Haskell bindings for the Proj4 C dynamic library. -- 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 ): -- . -- > 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: -- . -- >>> main -- (x, y): (615096.1096381239,4437953.6592040695) -- (lon, lat): (22.350000000000662,40.083999999999584) -- (x, y, z): (615096.1096381239,4437953.6592040695,2843.0) Description: 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 ): . > 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) Author: Pavel M. Penev Maintainer: Pavel M. Penev License: GPL Copyright: (C) 2012–2013 Pavel M. Penev, LaRouche Policy Institute Category: Data Library Hs-Source-Dirs: src C-Sources: src/c/c_proj4.c, include/c_proj4.h Include-Dirs: include Extra-Libraries: proj Exposed-Modules: Geo.Proj4, Geo.Proj4.Internal Build-Depends: base < 5, ghc-prim