加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-17 04:21:23 所属栏目:百科 来源:网络整理
导读:我需要使用Rails应用程序中的现有PostGIS数据库.到目前为止,我能够很好地访问数据库,Geo Ruby很好地将’geom’列转换为Point对象. 我正在寻找的是一种在这些表上执行类似ActiveRecord的查询的简单方法,例如 Poi.find_within_radius(...) 或类似的空间查询,如
我需要使用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)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读