我需要st_intersection
在 Ruby 的 SQL SELECT 子句中执行 PostGIS 函数。目前我将其作为原始 SQL 查询进行:
sql_query = "SELECT id, ST_ASEWKT(ST_INTERSECTION(geometry, ?)) FROM trips WHERE status='active';"
intersections = Trip.execute_sql(sql_query, self[:geometry].to_s)
这种方式的缺点是我将结果作为文本接收,并且我需要从字符串中解析出对象。更好的是使用 ActiveRecord 接口进行查询。但是,我还没有找到st_intersection
在 ActiveRecord 中运行 PostGIS 功能(例如)的任何解决方案。
activerecord-postgis-adapter 的README的早期版本展示了一个使用 gem 的好例子squeel
:
my_polygon = get_my_polygon # Obtain the polygon as an RGeo geometry
MySpatialTable.where{st_intersects(lonlat, my_polygon)}.first
由于这不再是当前自述文件的一部分,我想知道是否不推荐这样做,或者是否有更好的选择。