当在rails控制台中时,以下代码打印以按照我的预期筛选geojson格式的坐标数组:
Bg.
select("bg_id, ST_AsGeoJSON(the_geom) as my_geo").
where("ST_Contains(ST_MakeEnvelope(-xxx,xxx,-xxx,xxx, 4269), bg.the_geom)").
map(&:my_geo)
select
部分不只是要求json。如果我也想在数组中也使用bg_id,该怎么办?
答案 0 :(得分:1)
你想要结束什么样的内部数据结构(即你要把bg_ids放在哪里)?例如。如果它只是一个哈希我认为你可以改变
map(&:my_geo)
到
map{|b| {b.id => b.my_geo} }
答案 1 :(得分:1)
您只需要删除地图和活动记录对象。
results = Bg.select("bg_id, ST_AsGeoJSON(the_geom) as my_geo").
where("ST_Contains(ST_MakeEnvelope(-xxx,xxx,-xxx,xxx, 4269), bg.the_geom)")
然后:
results[0].bg_id
results[0].my_geo
如果你想要一个其他的数组,也可以使用map。 就像一个数组数组[[bg_id1,my_geo1],[bg_id2,my_geo2] ...]:
results.map{|b| [b.bg_id,b.my_geo] }