[
    {
        "name": "GeoJson",
        "comment": " Decode [GeoJson](https://tools.ietf.org/html/rfc7946) into an Elm data\nstructure where you can operate on it further. Most of this module defines types\nthat collectively define that data structure.\n\nAfter using `GeoJson.decoder` you can either traverse the data structure\ndirectly (recommended if you're working with 2D positions and not using\nproperties) or use `Json.Decode.andThen` to transform it into a more convenient\nrepresentation specific to your use case (recommended if you find yourself with\na lot of Maybes or impossible cases using the first approach).\n\nAn `encode` function is also provided, mostly for completeness and testing.\nNeither encoding nor decoding attempt to enforce minimum array lengths\n(excluding positions, whose minimum length is enforced by their type).\n\n# Decoder\n@docs decoder\n\n# Elm Representation of GeoJSON\nAll union types are fully exposed so you can inspect them as necessary.\n@docs GeoJson, GeoJsonObject, FeatureObject, Geometry, Position,  Bbox\n\n# Encoding\n@docs encode\n",
        "unions": [
            {
                "name": "GeoJsonObject",
                "comment": " A GeoJsonObject contains the primary data, and is either a `Geometry`, a\n`FeatureObject`, or a list of `FeatureObjects`.\n\nNote that the tag for `FeatureObject` is just `Feature`, to avoid a name\ncollision.\n",
                "args": [],
                "cases": [
                    [
                        "Geometry",
                        [
                            "Geometry"
                        ]
                    ],
                    [
                        "Feature",
                        [
                            "FeatureObject"
                        ]
                    ],
                    [
                        "FeatureCollection",
                        [
                            "List FeatureObject"
                        ]
                    ]
                ]
            },
            {
                "name": "Geometry",
                "comment": " The heart of GeoJSON: geometry objects. The union tags reflect the\n`type` field of the JSON, and carries the value of the `coordinates` field (or\n`geometries` for `GeometryCollection`).\n\nThe specification imposes minimum lengths for some of the arrays (lists in Elm).\nThis representation does not express those guarantees, on the theory that you\nwill likely be working with a valid GeoJson file rather than generating one of\nyour own.\n",
                "args": [],
                "cases": [
                    [
                        "Point",
                        [
                            "Position"
                        ]
                    ],
                    [
                        "MultiPoint",
                        [
                            "List Position"
                        ]
                    ],
                    [
                        "LineString",
                        [
                            "List Position"
                        ]
                    ],
                    [
                        "MultiLineString",
                        [
                            "List (List Position)"
                        ]
                    ],
                    [
                        "Polygon",
                        [
                            "List (List Position)"
                        ]
                    ],
                    [
                        "MultiPolygon",
                        [
                            "List (List (List Position))"
                        ]
                    ],
                    [
                        "GeometryCollection",
                        [
                            "List Geometry"
                        ]
                    ]
                ]
            }
        ],
        "aliases": [
            {
                "name": "Bbox",
                "comment": " A Bounding Box is represented as a simple list of floats. No attempt is made\nto validate that its length is twice the length of the geometrys' positions, or\nthat low values are preceded by high values.\n",
                "args": [],
                "type": "List Float"
            },
            {
                "name": "FeatureObject",
                "comment": " A `FeatureObject` represents a geographic feature. The `geometry` field is\nallowed to have `null` instead of actual geometry, which is represented as\n`Nothing`. The `properties` may be any JSON object but no attempt is made to\ninspect it. The `id` is an optional \"commonly used identifier\". It is permitted\nby the RFC to be either a string or a number; if the latter this implementation\nconverts it to a string.\n",
                "args": [],
                "type": "{ geometry : Maybe Geometry, properties : Value, id : Maybe String }"
            },
            {
                "name": "GeoJson",
                "comment": " The root representation of GeoJSON in Elm. It consists of a `GeoJsonObject` and an optional `Bbox`.\n",
                "args": [],
                "type": "( GeoJsonObject, Maybe Bbox )"
            },
            {
                "name": "Position",
                "comment": " A `Position` is the fundamental geometry construct. The specification\nrepresents positions as arrays of numbers that must contain at least two\nelements. This tuple allows the compiler to provide a similar guarantee, so that\none avoids Maybes when working with a 2D dataset.\n\nRFC 7946 suggests that positions not contain more than three elements, but this\nlibrary accepts them. The RFC also states that \"[t]he first two elements are\nlongitude and latitude, or easting and northing, precisely in that order\".\n",
                "args": [],
                "type": "( Float, Float, List Float )"
            }
        ],
        "values": [
            {
                "name": "decoder",
                "comment": " Decode GeoJSON into Elm. The decoded value is expressed in the types defined\nby this module.\n",
                "type": "Decoder GeoJson"
            },
            {
                "name": "encode",
                "comment": " Encode GeoJSON into Elm. This is mostly for completeness and roundtrip\ntesting.\n",
                "type": "GeoJson -> Value"
            }
        ],
        "binops": []
    }
]