{"id":18645040,"url":"https://github.com/hrefhref/elixir-geos","last_synced_at":"2026-04-11T22:02:19.364Z","repository":{"id":77323038,"uuid":"84350384","full_name":"hrefhref/elixir-geos","owner":"hrefhref","description":"Erlang/Elixir NIF for GEOS (Geometry Engine)","archived":false,"fork":false,"pushed_at":"2017-03-22T14:01:37.000Z","size":14,"stargazers_count":3,"open_issues_count":0,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-12-27T11:34:21.413Z","etag":null,"topics":["elixir","erlang","geography","geometry","geospatial","gis"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hrefhref.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-03-08T17:55:28.000Z","updated_at":"2023-09-03T19:11:11.000Z","dependencies_parsed_at":"2023-02-27T10:45:41.883Z","dependency_job_id":null,"html_url":"https://github.com/hrefhref/elixir-geos","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hrefhref%2Felixir-geos","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hrefhref%2Felixir-geos/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hrefhref%2Felixir-geos/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hrefhref%2Felixir-geos/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hrefhref","download_url":"https://codeload.github.com/hrefhref/elixir-geos/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239449544,"owners_count":19640532,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["elixir","erlang","geography","geometry","geospatial","gis"],"created_at":"2024-11-07T06:14:24.558Z","updated_at":"2025-11-05T03:30:23.753Z","avatar_url":"https://github.com/hrefhref.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# GEOS NIF for Erlang/Elixir\n\n[GEOS](https://trac.osgeo.org/geos/) (Geometry Engine - Open Source) NIF for Erlang/Elixir.\n\nWIP.\n\nBased on the implementation in [oubiwann/lgeo](https://github.com/oubiwann/lgeo/commits/master/c_src), forked from [caroman/erlgeom](https://github.com/caroman/erlgeom), itself a fork of\n[couchbase/erlgeom](https://github.com/couchbaselabs/erlgeom).\n\nFixes a couple of bugs and adds support for buffer operation and a few prepared geometries functions (`prepare` and `contains`), more to come.\n\nBecause most operations in GEOS may take more than 1 ms, this NIF requires Erlang to be compiled with dirty schedulers\nsupport.\n\nBecause of bad thread safety in the NIF, to avoid random segmentation fault Erlang needs to be started with `+SDcpu 1:1`\n(to run the dirty scheduler in only one thread). This is being worked on.\n\nThe API is completely unstable and will change soon (to fix the thread safety issue).\n\nProvides a great high-performance alternative to [Topo]\n\nNeeds `geos` and `gmake` to compile.\n\n## Installation\n\nIf [available in Hex](https://hex.pm/docs/publish), the package can be installed\nby adding `geos` to your list of dependencies in `mix.exs`:\n\n```elixir\ndef deps do\n  [{:geos, \"~\u003e 0.1.0\"}]\nend\n```\n\n## Usage\n\nThe `Geos` module uses `Geos.Geometry`, envelope, `Geos.Buffer` and\n`Geos.PreparedGeometry` to provide performance-optimized operations like `contains?`.\n\nSupport casting from [Geo](https://github.com/bryanjos/geo) structs:\n\n```\ngeos1 = Geos.from_geo(%Geo.MultiPolygon{…})\ngeos2 = Geos.from_geo(%Geo.MultiPolygon{…})\nGeos.contains?(geos1, geos2)\n```\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhrefhref%2Felixir-geos","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhrefhref%2Felixir-geos","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhrefhref%2Felixir-geos/lists"}