name: geojson-types
version: 0.1
synopsis: GeoJSON data types including JSON/BSON conversion.
homepage: https://github.com/alios/geosjon-types
bug-reports: https://github.com/alios/geosjon-types/issues
license: BSD3
license-file: LICENSE
author: Markus Barenhoff
maintainer: Markus Barenhoff <mbarenh@alios.org>
copyright: Copyright (c) 2016 Markus Barenhoff
category: Data
build-type: Simple
stability: provisional
tested-with: GHC == 7.10.3
cabal-version: >=1.10
description:
Provides data types, lens operators and (de)serialization
of GeoJSON data to/from JSON and BSON using aeson and bson.
.
This library uses a the lens library a lot. It provides
'Iso' / 'Prism' to convert from and to GeoJSON objects.
.
/e.g./ to convert a latitude/longitude given as a pair of
'Double' to a 'Position', use the '_Position' 'Iso' as a
'Getter' on that pair:
.
> _Position :: BaseType t => (t, t) -> Position t
>
> pos :: Position Double
> pos = (57.324, 7.2342) ^. _Position
.
to then convert it to a 'Point' object use '_Point':
.
> _Point :: Iso' (Position t) (GeoJSON Point t)
>
> p :: GeoJSON Point Double
> p = pos ^. _Point
>
> ps :: GeoJSON MultiPoint Double
> ps = [p,p,p,p] ^. _MultiPoint
.
The library also provides type classes for working polymorphic
over user defined data types.
.
/e.g./ for a data type:
.
> data Location =
> Location {
> locationName :: String,
> locationLat :: Double,
> locationLon :: Double
> }
.
one can implement the type class 'HasGeoJSON' to provide a
'Getter' to a any GeoJSON object. In this example a 'Point'.
.
> instance HasGeoJSON Point Double Location where
> geoJSON = to $ \loc ->
> (locationLat loc, locationLon loc) ^. _Position . _Point
library
exposed-modules: Data.GeoJSON,
Data.GeoJSON.Objects,
Data.GeoJSON.Features,
Data.GeoJSON.Classes
other-modules: Data.GeoJSON.Intern
other-extensions: FlexibleInstances,
TypeSynonymInstances,
GADTs,
OverloadedStrings,
FunctionalDependencies,
MultiParamTypeClasses,
FlexibleContexts,
ConstraintKinds,
RankNTypes,
TypeFamilies
build-depends: base >=4.8 && <4.9,
lens >=4.14,
aeson >=0.11,
bson >=0.3,
text >=1.2
hs-source-dirs: src
default-language: Haskell2010