Today I released the first version of postgres_ext-postgis, which extends ActiveRecord to support PostGIS data types and some querying. This is definitely a beta release, but ready to the point where people can play around with it.
Migrations
With postgres_ext-postgis, you can easily add geometry columns:
create_table :districts do |t|
t.geometry :district_boundries
end
If you’d like to include your projection or geometry type, just include them as options to your column:
create_table :districts do |t|
t.geometry :district_boundries, spatial_type: :multipolygon, srid: 4326
end
Type Casting
Your geometry columns will be typecasted into RGeo objects. You can set your attributes with RGeo objects or EWKT/EWKB strings. EWKT/EWKB strings will be converted to RGeo objects:
user.location = 'SRID=4623;POINT(1 1)'
Querying
For now, the only added querying method for ActiveRecord is contains
:
District.where.contains(district_boundries: user.location)
The above query will utilize PostGIS’s ST_CONTAINS
to see if the
district_boundries
column contains the user.location
. I plan to add
a convience method to convert EWKT strings to RGeo object, something
like PostgreExt.geom('SRID=4623;POINT(1 1)')
, to make generating
queries from, say, a mobile user’s current location a bit easier.
As I get feedback and use postgres_ext-postgis, more features will get added. Stay tuned!