geojson-3.0.4: A thin GeoJSON Layer above the aeson library

Copyright(C) 2014-2018 HS-GeoJSON Project
LicenseBSD-style (see the file LICENSE.md)
MaintainerAndrew Newman
Safe HaskellNone
LanguageHaskell2010

Data.Geospatial

Contents

Description

Synopsis

Types

data FeatureID #

Instances
Eq FeatureID # 
Instance details

Defined in Data.Geospatial.Internal.BasicTypes

Show FeatureID # 
Instance details

Defined in Data.Geospatial.Internal.BasicTypes

Generic FeatureID # 
Instance details

Defined in Data.Geospatial.Internal.BasicTypes

Associated Types

type Rep FeatureID :: Type -> Type #

ToJSON FeatureID # 
Instance details

Defined in Data.Geospatial.Internal.BasicTypes

FromJSON FeatureID # 
Instance details

Defined in Data.Geospatial.Internal.BasicTypes

NFData FeatureID # 
Instance details

Defined in Data.Geospatial.Internal.BasicTypes

Methods

rnf :: FeatureID -> () #

type Rep FeatureID # 
Instance details

Defined in Data.Geospatial.Internal.BasicTypes

type Rep FeatureID = D1 (MetaData "FeatureID" "Data.Geospatial.Internal.BasicTypes" "geojson-3.0.4-BhqiBF2k2VrIOFbYjYUDem" False) (C1 (MetaCons "FeatureIDText" PrefixI False) (S1 (MetaSel (Nothing :: Maybe Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Text)) :+: C1 (MetaCons "FeatureIDNumber" PrefixI False) (S1 (MetaSel (Nothing :: Maybe Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Int)))

data GeoPositionWithoutCRS #

Instances
Eq GeoPositionWithoutCRS # 
Instance details

Defined in Data.Geospatial.Internal.BasicTypes

Show GeoPositionWithoutCRS # 
Instance details

Defined in Data.Geospatial.Internal.BasicTypes

Generic GeoPositionWithoutCRS # 
Instance details

Defined in Data.Geospatial.Internal.BasicTypes

Associated Types

type Rep GeoPositionWithoutCRS :: Type -> Type #

ToJSON GeoPositionWithoutCRS # 
Instance details

Defined in Data.Geospatial.Internal.BasicTypes

FromJSON GeoPositionWithoutCRS # 
Instance details

Defined in Data.Geospatial.Internal.BasicTypes

NFData GeoPositionWithoutCRS # 
Instance details

Defined in Data.Geospatial.Internal.BasicTypes

Methods

rnf :: GeoPositionWithoutCRS -> () #

HasGeoPositionWithoutCRS GeoPositionWithoutCRS # 
Instance details

Defined in Data.Geospatial.Internal.BasicTypes

type Rep GeoPositionWithoutCRS # 
Instance details

Defined in Data.Geospatial.Internal.BasicTypes

type Rep GeoPositionWithoutCRS = D1 (MetaData "GeoPositionWithoutCRS" "Data.Geospatial.Internal.BasicTypes" "geojson-3.0.4-BhqiBF2k2VrIOFbYjYUDem" False) ((C1 (MetaCons "GeoEmpty" PrefixI False) (U1 :: Type -> Type) :+: C1 (MetaCons "GeoPointXY" PrefixI False) (S1 (MetaSel (Nothing :: Maybe Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 PointXY))) :+: (C1 (MetaCons "GeoPointXYZ" PrefixI False) (S1 (MetaSel (Nothing :: Maybe Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 PointXYZ)) :+: C1 (MetaCons "GeoPointXYZM" PrefixI False) (S1 (MetaSel (Nothing :: Maybe Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 PointXYZM))))

data GeoPosition #

see Section 2.1.1 Position in the GeoJSON Spec, I make the assumption here that the only position types we will use will involve easting or northing (+ve or -ve Altitude) or lon or lat (+ve or -ve Altitude)

newtype GeoPoint #

Instances
Eq GeoPoint # 
Instance details

Defined in Data.Geospatial.Internal.Geometry.GeoPoint

Show GeoPoint # 
Instance details

Defined in Data.Geospatial.Internal.Geometry.GeoPoint

Generic GeoPoint # 
Instance details

Defined in Data.Geospatial.Internal.Geometry.GeoPoint

Associated Types

type Rep GeoPoint :: Type -> Type #

Methods

from :: GeoPoint -> Rep GeoPoint x #

to :: Rep GeoPoint x -> GeoPoint #

ToJSON GeoPoint # 
Instance details

Defined in Data.Geospatial.Internal.Geometry.GeoPoint

FromJSON GeoPoint # 
Instance details

Defined in Data.Geospatial.Internal.Geometry.GeoPoint

NFData GeoPoint # 
Instance details

Defined in Data.Geospatial.Internal.Geometry.GeoPoint

Methods

rnf :: GeoPoint -> () #

type Rep GeoPoint # 
Instance details

Defined in Data.Geospatial.Internal.Geometry.GeoPoint

type Rep GeoPoint = D1 (MetaData "GeoPoint" "Data.Geospatial.Internal.Geometry.GeoPoint" "geojson-3.0.4-BhqiBF2k2VrIOFbYjYUDem" True) (C1 (MetaCons "GeoPoint" PrefixI True) (S1 (MetaSel (Just "_unGeoPoint") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 GeoPositionWithoutCRS)))

data PointXY #

(GeoPositionWithoutCRS is a catch all for indeterminate CRSs and for expression of positions before a CRS has been determined

Constructors

PointXY 

Fields

Instances
Eq PointXY # 
Instance details

Defined in Data.Geospatial.Internal.BasicTypes

Methods

(==) :: PointXY -> PointXY -> Bool #

(/=) :: PointXY -> PointXY -> Bool #

Show PointXY # 
Instance details

Defined in Data.Geospatial.Internal.BasicTypes

Generic PointXY # 
Instance details

Defined in Data.Geospatial.Internal.BasicTypes

Associated Types

type Rep PointXY :: Type -> Type #

Methods

from :: PointXY -> Rep PointXY x #

to :: Rep PointXY x -> PointXY #

NFData PointXY # 
Instance details

Defined in Data.Geospatial.Internal.BasicTypes

Methods

rnf :: PointXY -> () #

type Rep PointXY # 
Instance details

Defined in Data.Geospatial.Internal.BasicTypes

type Rep PointXY = D1 (MetaData "PointXY" "Data.Geospatial.Internal.BasicTypes" "geojson-3.0.4-BhqiBF2k2VrIOFbYjYUDem" False) (C1 (MetaCons "PointXY" PrefixI True) (S1 (MetaSel (Just "_xyX") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 Double) :*: S1 (MetaSel (Just "_xyY") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 Double)))

data PointXYZ #

Constructors

PointXYZ 

Fields

Instances
Eq PointXYZ # 
Instance details

Defined in Data.Geospatial.Internal.BasicTypes

Show PointXYZ # 
Instance details

Defined in Data.Geospatial.Internal.BasicTypes

Generic PointXYZ # 
Instance details

Defined in Data.Geospatial.Internal.BasicTypes

Associated Types

type Rep PointXYZ :: Type -> Type #

Methods

from :: PointXYZ -> Rep PointXYZ x #

to :: Rep PointXYZ x -> PointXYZ #

NFData PointXYZ # 
Instance details

Defined in Data.Geospatial.Internal.BasicTypes

Methods

rnf :: PointXYZ -> () #

type Rep PointXYZ # 
Instance details

Defined in Data.Geospatial.Internal.BasicTypes

type Rep PointXYZ = D1 (MetaData "PointXYZ" "Data.Geospatial.Internal.BasicTypes" "geojson-3.0.4-BhqiBF2k2VrIOFbYjYUDem" False) (C1 (MetaCons "PointXYZ" PrefixI True) (S1 (MetaSel (Just "_xyzX") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 Double) :*: (S1 (MetaSel (Just "_xyzY") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 Double) :*: S1 (MetaSel (Just "_xyzZ") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 Double))))

data PointXYZM #

Constructors

PointXYZM 

Fields

Instances
Eq PointXYZM # 
Instance details

Defined in Data.Geospatial.Internal.BasicTypes

Show PointXYZM # 
Instance details

Defined in Data.Geospatial.Internal.BasicTypes

Generic PointXYZM # 
Instance details

Defined in Data.Geospatial.Internal.BasicTypes

Associated Types

type Rep PointXYZM :: Type -> Type #

NFData PointXYZM # 
Instance details

Defined in Data.Geospatial.Internal.BasicTypes

Methods

rnf :: PointXYZM -> () #

type Rep PointXYZM # 
Instance details

Defined in Data.Geospatial.Internal.BasicTypes

type Rep PointXYZM = D1 (MetaData "PointXYZM" "Data.Geospatial.Internal.BasicTypes" "geojson-3.0.4-BhqiBF2k2VrIOFbYjYUDem" False) (C1 (MetaCons "PointXYZM" PrefixI True) ((S1 (MetaSel (Just "_xyzmX") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 Double) :*: S1 (MetaSel (Just "_xyzmY") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 Double)) :*: (S1 (MetaSel (Just "_xyzmZ") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 Double) :*: S1 (MetaSel (Just "_xyzmM") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 Double))))

newtype GeoMultiPoint #

Instances
Eq GeoMultiPoint # 
Instance details

Defined in Data.Geospatial.Internal.Geometry.GeoMultiPoint

Show GeoMultiPoint # 
Instance details

Defined in Data.Geospatial.Internal.Geometry.GeoMultiPoint

Generic GeoMultiPoint # 
Instance details

Defined in Data.Geospatial.Internal.Geometry.GeoMultiPoint

Associated Types

type Rep GeoMultiPoint :: Type -> Type #

ToJSON GeoMultiPoint # 
Instance details

Defined in Data.Geospatial.Internal.Geometry.GeoMultiPoint

FromJSON GeoMultiPoint # 
Instance details

Defined in Data.Geospatial.Internal.Geometry.GeoMultiPoint

NFData GeoMultiPoint # 
Instance details

Defined in Data.Geospatial.Internal.Geometry.GeoMultiPoint

Methods

rnf :: GeoMultiPoint -> () #

type Rep GeoMultiPoint # 
Instance details

Defined in Data.Geospatial.Internal.Geometry.GeoMultiPoint

type Rep GeoMultiPoint = D1 (MetaData "GeoMultiPoint" "Data.Geospatial.Internal.Geometry.GeoMultiPoint" "geojson-3.0.4-BhqiBF2k2VrIOFbYjYUDem" True) (C1 (MetaCons "GeoMultiPoint" PrefixI True) (S1 (MetaSel (Just "_unGeoMultiPoint") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Seq GeoPositionWithoutCRS))))

splitGeoMultiPoint :: GeoMultiPoint -> Seq GeoPoint #

Split GeoMultiPoint coordinates into multiple GeoPoints

mergeGeoPoints :: Seq GeoPoint -> GeoMultiPoint #

Merge multiple GeoPoints into one GeoMultiPoint

newtype GeoPolygon #

Instances
Eq GeoPolygon # 
Instance details

Defined in Data.Geospatial.Internal.Geometry.GeoPolygon

Show GeoPolygon # 
Instance details

Defined in Data.Geospatial.Internal.Geometry.GeoPolygon

Generic GeoPolygon # 
Instance details

Defined in Data.Geospatial.Internal.Geometry.GeoPolygon

Associated Types

type Rep GeoPolygon :: Type -> Type #

ToJSON GeoPolygon # 
Instance details

Defined in Data.Geospatial.Internal.Geometry.GeoPolygon

FromJSON GeoPolygon # 
Instance details

Defined in Data.Geospatial.Internal.Geometry.GeoPolygon

NFData GeoPolygon # 
Instance details

Defined in Data.Geospatial.Internal.Geometry.GeoPolygon

Methods

rnf :: GeoPolygon -> () #

type Rep GeoPolygon # 
Instance details

Defined in Data.Geospatial.Internal.Geometry.GeoPolygon

type Rep GeoPolygon = D1 (MetaData "GeoPolygon" "Data.Geospatial.Internal.Geometry.GeoPolygon" "geojson-3.0.4-BhqiBF2k2VrIOFbYjYUDem" True) (C1 (MetaCons "GeoPolygon" PrefixI True) (S1 (MetaSel (Just "_unGeoPolygon") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Seq (LinearRing GeoPositionWithoutCRS)))))

newtype GeoMultiPolygon #

Instances
Eq GeoMultiPolygon # 
Instance details

Defined in Data.Geospatial.Internal.Geometry.GeoMultiPolygon

Show GeoMultiPolygon # 
Instance details

Defined in Data.Geospatial.Internal.Geometry.GeoMultiPolygon

Generic GeoMultiPolygon # 
Instance details

Defined in Data.Geospatial.Internal.Geometry.GeoMultiPolygon

Associated Types

type Rep GeoMultiPolygon :: Type -> Type #

ToJSON GeoMultiPolygon # 
Instance details

Defined in Data.Geospatial.Internal.Geometry.GeoMultiPolygon

FromJSON GeoMultiPolygon # 
Instance details

Defined in Data.Geospatial.Internal.Geometry.GeoMultiPolygon

NFData GeoMultiPolygon # 
Instance details

Defined in Data.Geospatial.Internal.Geometry.GeoMultiPolygon

Methods

rnf :: GeoMultiPolygon -> () #

type Rep GeoMultiPolygon # 
Instance details

Defined in Data.Geospatial.Internal.Geometry.GeoMultiPolygon

type Rep GeoMultiPolygon = D1 (MetaData "GeoMultiPolygon" "Data.Geospatial.Internal.Geometry.GeoMultiPolygon" "geojson-3.0.4-BhqiBF2k2VrIOFbYjYUDem" True) (C1 (MetaCons "GeoMultiPolygon" PrefixI True) (S1 (MetaSel (Just "_unGeoMultiPolygon") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Seq (Seq (LinearRing GeoPositionWithoutCRS))))))

splitGeoMultiPolygon :: GeoMultiPolygon -> Seq GeoPolygon #

Split GeoMultiPolygon coordinates into multiple GeoPolygons

mergeGeoPolygons :: Seq GeoPolygon -> GeoMultiPolygon #

Merge multiple GeoPolygons into one GeoMultiPolygon

newtype GeoLine #

Instances
Eq GeoLine # 
Instance details

Defined in Data.Geospatial.Internal.Geometry.GeoLine

Methods

(==) :: GeoLine -> GeoLine -> Bool #

(/=) :: GeoLine -> GeoLine -> Bool #

Show GeoLine # 
Instance details

Defined in Data.Geospatial.Internal.Geometry.GeoLine

Generic GeoLine # 
Instance details

Defined in Data.Geospatial.Internal.Geometry.GeoLine

Associated Types

type Rep GeoLine :: Type -> Type #

Methods

from :: GeoLine -> Rep GeoLine x #

to :: Rep GeoLine x -> GeoLine #

ToJSON GeoLine # 
Instance details

Defined in Data.Geospatial.Internal.Geometry.GeoLine

FromJSON GeoLine # 
Instance details

Defined in Data.Geospatial.Internal.Geometry.GeoLine

NFData GeoLine # 
Instance details

Defined in Data.Geospatial.Internal.Geometry.GeoLine

Methods

rnf :: GeoLine -> () #

type Rep GeoLine # 
Instance details

Defined in Data.Geospatial.Internal.Geometry.GeoLine

type Rep GeoLine = D1 (MetaData "GeoLine" "Data.Geospatial.Internal.Geometry.GeoLine" "geojson-3.0.4-BhqiBF2k2VrIOFbYjYUDem" True) (C1 (MetaCons "GeoLine" PrefixI True) (S1 (MetaSel (Just "_unGeoLine") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (LineString GeoPositionWithoutCRS))))

newtype GeoMultiLine #

Instances
Eq GeoMultiLine # 
Instance details

Defined in Data.Geospatial.Internal.Geometry.GeoMultiLine

Show GeoMultiLine # 
Instance details

Defined in Data.Geospatial.Internal.Geometry.GeoMultiLine

Generic GeoMultiLine # 
Instance details

Defined in Data.Geospatial.Internal.Geometry.GeoMultiLine

Associated Types

type Rep GeoMultiLine :: Type -> Type #

ToJSON GeoMultiLine # 
Instance details

Defined in Data.Geospatial.Internal.Geometry.GeoMultiLine

FromJSON GeoMultiLine # 
Instance details

Defined in Data.Geospatial.Internal.Geometry.GeoMultiLine

NFData GeoMultiLine # 
Instance details

Defined in Data.Geospatial.Internal.Geometry.GeoMultiLine

Methods

rnf :: GeoMultiLine -> () #

type Rep GeoMultiLine # 
Instance details

Defined in Data.Geospatial.Internal.Geometry.GeoMultiLine

type Rep GeoMultiLine = D1 (MetaData "GeoMultiLine" "Data.Geospatial.Internal.Geometry.GeoMultiLine" "geojson-3.0.4-BhqiBF2k2VrIOFbYjYUDem" True) (C1 (MetaCons "GeoMultiLine" PrefixI True) (S1 (MetaSel (Just "_unGeoMultiLine") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Seq (LineString GeoPositionWithoutCRS)))))

splitGeoMultiLine :: GeoMultiLine -> Seq GeoLine #

Split GeoMultiLine coordinates into multiple GeoLines

mergeGeoLines :: Seq GeoLine -> GeoMultiLine #

Merge multiple GeoLines into one GeoMultiLine

data GeospatialGeometry #

See section 2.1 Geometry Objects in the GeoJSON Spec.

Instances
Eq GeospatialGeometry # 
Instance details

Defined in Data.Geospatial.Internal.Geometry

Show GeospatialGeometry # 
Instance details

Defined in Data.Geospatial.Internal.Geometry

Generic GeospatialGeometry # 
Instance details

Defined in Data.Geospatial.Internal.Geometry

Associated Types

type Rep GeospatialGeometry :: Type -> Type #

ToJSON GeospatialGeometry #

encodes Geometry Objects to GeoJSON

Instance details

Defined in Data.Geospatial.Internal.Geometry

FromJSON GeospatialGeometry #

decodes Geometry Objects from GeoJSON

Aeson doesnt decode "null" into Null unfortunately

Instance details

Defined in Data.Geospatial.Internal.Geometry

NFData GeospatialGeometry # 
Instance details

Defined in Data.Geospatial.Internal.Geometry

Methods

rnf :: GeospatialGeometry -> () #

type Rep GeospatialGeometry # 
Instance details

Defined in Data.Geospatial.Internal.Geometry

type Name = Text #

type Code = Int #

type Href = Text #

data CRSObject #

See Section 3 Coordinate Reference System Objects in the GeoJSON Spec NoCRS is required because no crs attribute in a GeoJSON feature is NOT the same thing as a null crs attribute. no crs value implies the default CRS, while a null CRS means you cannot assume a CRS, null will mapped to NoCRS while a non-existent attribute will be mapped to a Nothing Maybe value

Instances
Eq CRSObject # 
Instance details

Defined in Data.Geospatial.Internal.CRS

Show CRSObject # 
Instance details

Defined in Data.Geospatial.Internal.CRS

ToJSON CRSObject #

encode CRS Objects to GeoJSON

Instance details

Defined in Data.Geospatial.Internal.CRS

FromJSON CRSObject #

decode CRS Objects from GeoJSON

Aeson doesnt decode "null" to Null unfortunately

Instance details

Defined in Data.Geospatial.Internal.CRS

data BoundingBoxWithoutCRS #

See Section 4 Bounding Boxes of the GeoJSON spec, The length of the list/array must be 2*n where n is the dimensionality of the position type for the CRS with min values first followed by the max values, wich both the min/max sets following the same axis order as the CRS, e.g for WGS84: minLongitude, minLatitude, maxLongitude, maxLatitude The spec mentions that it can be part of a geometry object too but doesnt give an example, This implementation will ignore bboxes on Geometry objects, they can be added if required.

Instances
Eq BoundingBoxWithoutCRS # 
Instance details

Defined in Data.Geospatial.Internal.BasicTypes

Show BoundingBoxWithoutCRS # 
Instance details

Defined in Data.Geospatial.Internal.BasicTypes

Generic BoundingBoxWithoutCRS # 
Instance details

Defined in Data.Geospatial.Internal.BasicTypes

Associated Types

type Rep BoundingBoxWithoutCRS :: Type -> Type #

ToJSON BoundingBoxWithoutCRS # 
Instance details

Defined in Data.Geospatial.Internal.BasicTypes

FromJSON BoundingBoxWithoutCRS # 
Instance details

Defined in Data.Geospatial.Internal.BasicTypes

NFData BoundingBoxWithoutCRS # 
Instance details

Defined in Data.Geospatial.Internal.BasicTypes

Methods

rnf :: BoundingBoxWithoutCRS -> () #

type Rep BoundingBoxWithoutCRS # 
Instance details

Defined in Data.Geospatial.Internal.BasicTypes

type Rep BoundingBoxWithoutCRS = D1 (MetaData "BoundingBoxWithoutCRS" "Data.Geospatial.Internal.BasicTypes" "geojson-3.0.4-BhqiBF2k2VrIOFbYjYUDem" True) (C1 (MetaCons "BoundingBoxWithoutCRS" PrefixI True) (S1 (MetaSel (Just "unBoundingBoxWithoutCrs") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Seq Double))))

data GeoFeature a #

See Section 2.2 Feature Objects of the GeoJSON spec. Parameterised on the property type

Instances
Eq a => Eq (GeoFeature a) # 
Instance details

Defined in Data.Geospatial.Internal.GeoFeature

Methods

(==) :: GeoFeature a -> GeoFeature a -> Bool #

(/=) :: GeoFeature a -> GeoFeature a -> Bool #

Show a => Show (GeoFeature a) # 
Instance details

Defined in Data.Geospatial.Internal.GeoFeature

Generic (GeoFeature a) # 
Instance details

Defined in Data.Geospatial.Internal.GeoFeature

Associated Types

type Rep (GeoFeature a) :: Type -> Type #

Methods

from :: GeoFeature a -> Rep (GeoFeature a) x #

to :: Rep (GeoFeature a) x -> GeoFeature a #

ToJSON a => ToJSON (GeoFeature a) #

Encodes Feature objects to GeoJSON

Instance details

Defined in Data.Geospatial.Internal.GeoFeature

FromJSON a => FromJSON (GeoFeature a) #

Decodes Feature objects from GeoJSON

Instance details

Defined in Data.Geospatial.Internal.GeoFeature

NFData a => NFData (GeoFeature a) # 
Instance details

Defined in Data.Geospatial.Internal.GeoFeature

Methods

rnf :: GeoFeature a -> () #

type Rep (GeoFeature a) # 
Instance details

Defined in Data.Geospatial.Internal.GeoFeature

Functions

stripCRSFromPosition :: GeoPosition -> GeoPositionWithoutCRS #

the GeoPosition is a bit special in that when you convert it to GeoJSON, it will lose the CRS info attached to it and cannot be read back in from the GeoJSON. Hence it is ineligible for the FromJSON type class, so this function will strip it down to a GeoPositionWithoutCRS, which is eligible

defaultCRS :: CRSObject #

The default CRS according to Section 3 Coordinate Reference System Objects is WGS84 which I believe, from http://spatialreference.org/ref/epsg/4326/ which translates to this in JSON: http://spatialreference.org/ref/epsg/4326/json/) is represented thus:

Lenses

Geometry Lenses

Feature Lenses

properties :: forall a a. Lens (GeoFeature a) (GeoFeature a) a a #

Prisms

BasicTypes

Geometry

CRS