postgis

Version, currently master branch1 version
  • master branchlatestAug 5, 2026

github.com/jgaskins/postgis

PostGIS extensions for the Crystal Postgres client

4 stars
0 dependents
License: MIT

Installation

# Add this to your shard.yml
dependencies:
  postgis:
    github: jgaskins/postgis
    branch: master

master is a branch, not a release, so this tracks it rather than pinning a version.

Then run:

shards install

shard.yml

Crystal
>= 0.36, < 2.0.0
License
MIT
Author
Jamie Gaskins

Dependencies

Runtime Dependencies

  • pg*github: will/crystal-pg

README

postgis

PostGIS data types and encoders/decoders for the Crystal Postgres driver.

Installation

  1. Add the dependency to your shard.yml:

    dependencies:
      postgis:
        github: jgaskins/postgis
  2. Run shards install

Usage

Ensure that your database has the postgis extension enabled:

CREATE EXTENSION postgis

Load PostGIS into your application

require "postgis"

After connecting to your database, run PostGIS.register_decoder(db):

db = DB.open(ENV["DATABASE_URL"])
PostGIS.register_decoder db

If you're writing raw SQL queries, you can specify the type of the result:

db.query_one "SELECT 'point(1 2 3)'::geography", as: PostGIS::Point3D

If you're using DB::Serializable, you can use PostGIS types for the models:

struct Address
  include DB::Serializable

  # ...
  getter coordinates : PostGIS::Point2D
end

Currently supported GIS types:

GIS TypeCrystal type
POINTPostGIS::Point2D, PostGIS::Point3D
POLYGONPostGIS::Polygon2D

More will be added in the future.

Contributing

  1. Fork it (https://github.com/jgaskins/postgis/fork)
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request

Contributors