0

在 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 怎么办?

4

2 回答 2

1

你试图最终得到什么样的内部数据结构(即你要把bg_ids放在哪里)?例如,如果它只是一个哈希,我认为你可以改变

map(&:my_geo)

map{|b| {b.id => b.my_geo} }
于 2013-05-03T19:03:00.050 回答
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] }
于 2013-05-03T19:25:22.010 回答