Need help with geo?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

bryanjos
449 Stars 66 Forks MIT License 337 Commits 8 Opened issues

Description

A collection of GIS functions for Elixir

Services available

!
?

Need anything else?

Contributors list

Geo

Build Status Hex.pm

A collection of GIS functions. Handles conversions to and from WKT, WKB, and GeoJSON for the following geometries:

  • Point
  • PointZ
  • PointM
  • PointZM
  • LineString
  • LineStringZ
  • Polygon
  • PolygonZ
  • MultiPoint
  • MultiPointZ
  • MuliLineString
  • MuliLineStringZ
  • MultiPolygon
  • MultiPolygonZ
  • GeometryCollection

Note: If you are looking for the Postgrex PostGIS extension, check out geo_postgis

Note: If you are looking to do geospatial calculations in memory with Geo's structs, check out topo

defp deps do
  [{:geo, "~> 3.0"}]
end

Documentation

Examples

  • Encode and decode WKT and EWKT
  iex(1)> {:ok, point} = Geo.WKT.decode("POINT(30 -90)")
  %Geo.Point{ coordinates: {30, -90}, srid: nil}

iex(2)> Geo.WKT.encode!(point) "POINT(30 -90)"

iex(3)> point = Geo.WKT.decode!("SRID=4326;POINT(30 -90)") %Geo.Point{coordinates: {30, -90}, srid: 4326}

  • Encode and decode WKB and EWKB
  iex(1)> {:ok, point} = Geo.WKB.decode("0101000000000000000000F03F000000000000F03F")
  %Geo.Point{ coordinates: {1.0, 1.0}, srid: nil }

iex(2)> Geo.WKB.encode!(point) "00000000013FF00000000000003FF0000000000000"

iex(3)> point = Geo.WKB.decode!("0101000020E61000009EFB613A637B4240CF2C0950D3735EC0") %Geo.Point{ coordinates: {36.9639657, -121.8097725}, srid: 4326 }

iex(4)> Geo.WKB.encode!(point) "0020000001000010E640427B633A61FB9EC05E73D350092CCF"

  • Encode and decode GeoJSON

Geo only encodes and decodes maps shaped as GeoJSON. JSON encoding and decoding must be done before and after.

#Examples using Jason as the JSON parser

iex(1)> Geo.JSON.encode(point) {:ok, %{ "type" => "Point", "coordinates" => [100.0, 0.0] }}

iex(2)> point = Jason.decode!("{"type": "Point", "coordinates": [100.0, 0.0] }") |> Geo.JSON.decode %Geo.Point{ coordinates: {100.0, 0.0}, srid: nil }

iex(3)> Geo.JSON.encode!(point) |> Jason.encode! "{"coordinates":[100.0,0.0],"type":"Point"}"

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.