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