#sequel-location This gem gives you an easy setup and syntax for doing geolocation search in sequel.

IMPORTANT: This will only work for postgres databases

##Installation

gem install sequel-location

##Usage sequel-location gives you access to a single dataset method, a few helpers for doing the database setup in migrations, and a nice syntax for configuring the plugin.

###Querying For example, say you have an application that lets a user find the nearest bar to them (within ten miles). The resulting query on your Bar model would be as follows.

Bar.nearest(43.038513,-87.908913,10) # orders results by distance to location
Bar.within(43.038513,-87.908913,10)  # will not order results by distance

###Setup

Sequel.migration do
	up do
		extension :pg_location
		add_extension :cube						# required for earthdistance
		add_extension :earthdistance			# required for geolocation
		add_location_trigger :bars				# provided by sequel-location to auto-calculate the earth point on update of latitude or longitude
		alter_table :bars do
			add_column :latitude, Decimal
			add_column :longitude, Decimal
			add_column :ll_point, 'earth' 		# ll_point is the default column for caching the caluclated earth point
			add_index :ll_point, :type=>:gist	# Not required, but suggested
		end
	end

	down do
		extension :pg_location
		alter_table :bars do
			drop_index :ll_point
			drop_column :ll_point
			drop_column :longitude
			drop_column :latitude
		end
		drop_location_trigger :bars
		drop_extension :earthdistance
		drop_extension :cube
	end
end
# optional named parameters
# * :latitude=>:lat
# * :longitude=>:lng
# * :earth_point=>:longitude_latitude_cache
class Bar < Sequel::Model
	plugin :pg_location
end

###Options ####drop_location_trigger

  • name - required drop_location_trigger :bars
  • latitude - alternative latitude column (optional, default is latitude) drop_location_trigger :bars, :latitude=>:lat
  • longitude - alternative longitude column (optional, default is longitude) drop_location_trigger :bars, :longitude=>:lat
  • earth_point - alternative column for caching earth-point (optional, default is ll_point) drop_location_trigger, :earth_point=>:latitude_longitude_cache

You may specify any combination of the latitude, longitude, or earth_point options but you must specify the same values in your model plugin (if you're using one)