[postgis-users] PostGIS on Rails (IvyGIS) implementation...

Robert Thau rst at alum.mit.edu
Thu Apr 20 12:19:04 PDT 2006


Sean Gillies wrote:

 > Nice work! How did you get PostGIS geometries to work with Active  
 > Record? Or do you work around?

Well, here's most of the "Park" model from the "Canada" sample app:

  class Park < ActiveRecord::Base

    include IvyGIS::GISRecord
    geometry_column :the_geom, IvyGIS::MultiPolygon

    def self.find_by_list_params(params)
      self.find :all,
        :select => "id, name_e, " +
           "simplify(the_geom, #{params[:scale].to_f/2}) as the_geom",
        :conditions => (located_by params, 'the_geom')
    end

  end

What "geometry_column" does is arrange for WKB parsing and rendering
when translating the column of that name to the corresponding attribute.
You can also invoke the parser directly, a la 

   IvyGIS::Polygon.new(my_computed_wkb)

if you have a computed column with a name you haven't predeclared.

Note the somewhat awkward business of "simplify"ing the geometry
column for display --- I didn't want to do that in Ruby.  (The SVG/VML
rendering is slow enough!  If it was only SVG, I'd be very likely
using PostGIS's own SVG rendering --- it's not hard to write in Ruby,
but for large collections of geometries, it's slower than you'd like).

Hope this helps --- and sorry for breaking threading; I subscribed
to the list in digest mode.

rst






More information about the postgis-users mailing list