当轨道控制台下面的代码打印到屏幕GeoJSON格式导出坐标数组作为我期待它:创建ActiveRecord的对象的数组
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,该怎么办?
最后我想要的是与bg_id的作为键和GeoJSON的对象为值的哈希值。你在这里提供的是创建一个哈希数组。我使用'.reduce Hash.new,:merge'来完全按照我的意愿制作单个哈希。所以我想我的问题得到解答,除非你能想到更好的方法。谢谢! – 2013-05-03 19:22:48
此外,虽然这个工程,我不知道我明白为什么。这看起来像是在数组的每个项目上调用称为“id”和“my_geo”的方法......是否正确? – 2013-05-03 19:51:26
啊,在这种情况下,减少是要走的路。是的,这是正确的,它是调用方法。 '(&:my_geo)'是'{| obj |的缩写obj.my_geo}' – 2013-05-03 21:56:36