ruby-on-rails – 从Rails访问PostGIS空间数据

我需要使用Rails应用程序中的现有PostGIS数据库.到目前为止,我能够很好地访问数据库,Geo Ruby很好地将’geom’列转换为Point对象.

我正在寻找的是一种在这些表上执行类似ActiveRecord的查询的简单方法,例如

Poi.find_within_radius(...)

或类似的空间查询,如距离计算等.人.

我尝试了几种geokit组合,附带了rails插件,但我确信在ruby / rails宇宙中必须有更好的东西.任何提示

解决方法

既然你已经有了GeoRuby,请加入你的Poi模型
SRID = 4326 #WGS84

# geometry column is geom
# pt is a GeoRuby Point
def self.find_within_radius(pt,dist = 0.01)
  self.all :conditions => "ST_DWithin(geom,ST_GeomFromText('POINT(#{pt.x} #{pt.y})',#{SRID}),#{dist})"
end

对于距离计算,您可以使用点对象上的方法

dist_circle = poi1.geom.spherical_distance(poi2.geom)
dist_projected = poi1.geom.euclidean_distance(poi2.geom)

相关文章

以下代码导致我的问题: class Foo def initialize(n=0) @n = n end attr_accessor :n d...
这是我的spec文件,当为上下文添加测试“而不是可单独更新用户余额”时,我得到以下错误. require 's...
我有一个拦截器:DevelopmentMailInterceptor和一个启动拦截器的inititializer setup_mail.rb. 但我想将...
例如,如果我有YAML文件 en: questions: new: 'New Question' other: recent: ...
我听说在RSpec中避免它,let,let !,指定,之前和主题是最佳做法. 关于让,让!之前,如果不使用这些,我该如...
我在Rails中使用MongoDB和mongo_mapper gem,项目足够大.有什么办法可以将数据从Mongoid迁移到 Postgres...