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

マップとアクティブなレコード オブジェクトを削除するだけです。

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 に答える
1

最終的にどのような内部データ構造にしようとしていますか (つまり、どこに bg_id を配置する予定ですか)? たとえば、それが単なるハッシュであれば、変更できると思います

map(&:my_geo)

map{|b| {b.id => b.my_geo} }
于 2013-05-03T19:03:00.050 に答える