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

449 Stars 66 Forks MIT License 337 Commits 8 Opened issues


A collection of GIS functions for Elixir

Services available


Need anything else?

Contributors list


Build Status

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"}]



  • 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.