从 Rails 访问 PostGIS 空间数据
我需要使用 Rails 应用程序中现有的 PostGIS 数据库。到目前为止,我能够很好地访问数据库,GeoRuby 很好地将“geom”列转换为 Point 对象。
我正在寻找一种在这些表上执行类似 ActiveRecord 的查询的简单方法,例如
Poi.find_within_radius(...)
或类似的空间查询(如距离计算等)。等人。
我尝试了多种 geokit 和附带的 Rails 插件的组合,但我很确定 ruby/rails 宇宙中一定有更好的东西。有什么提示吗?
I need to use an existing PostGIS database from my Rails application. So far I am able to access the DB just fine, GeoRuby nicely converts the 'geom' column into a Point object.
What I am looking for is an easy way to execute ActiveRecord-like queries on those tables, e.g.
Poi.find_within_radius(...)
or similar spatial queries like distance calculations et. al.
I tried several combinations of geokit, accompanying rails plugins but I'm quite sure there must be something better out there in the ruby/rails universe. Any hints?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
既然您已经有了 GeoRuby,请放入您的 Poi 模型
对于距离计算,您可以使用点对象上的方法
Since you've got GeoRuby, put in your Poi model
For distance calculations you can use methods on the point objects
添加到synecdoche的答案,在Rails 3中你可以使用< code>ActiveRelation 范围,这将允许您链接查询。
未经测试:
用法:
即使您不链接作用域,大多数时候它也比使用类方法更好。
Adding to synecdoche's answer, in Rails 3 you can use
ActiveRelation
scopes, which would allow you to chain queries.Untested:
Usage:
Even if you don't chain scopes, most of the time it's better than using class methods.
ST_Distance() 并不意味着您可能没有安装 postgis 或者您没有创建 postgis 模板...或者您没有使用 postgis 模板创建数据库(如果模板存在)。
ST_Distance() doesn't means you probably don't have postgis installed or you didn't create a postgis template... or you didn't create your database using the postgis template if the template exists.