配列の偶数・奇数番目の要素を取得する

Google My Mapsからエクスポートした大量の緯度経度データ(KML)を、緯度・経度だけの配列に分ける作業を半自動化しました。

135.0000000,34.0000000
135.0000001,34.0000001
135.0000002,34.0000002
135.0000003,34.0000003
......
# 緯度経度データをコピペして配列にぶち込む。
ary = [
 135.0000000,34.0000000,
 135.0000001,34.0000001,
 135.0000002,34.0000002,
 135.0000003,34.0000003,
 ......
]

lat = ary.each_slice(2).map(&:last).to_a
# 以下と同義
# lat = ary.each_slice(2).map { |e| e[-1] }.to_a
lng = ary.each_slice(2).map(&:first).to_a
# 以下と同義
# lng = ary.each_slice(2).map { |e| e[0] }.to_a

puts lat # 緯度データ
puts "##########################################"
puts lng # 経度データ

each_slice(n)でn要素毎にグループ化して、そのグループに対して処理を行えます。
今回だと緯度経度のペア毎にグループ化しています。

mapメソッドで、それぞれのグループのインデックスが0、1の要素を取り出します。
※最後の要素は-1、最後から二番目の要素は-2…とインデックスを指定する事で呼び出せます。

非エンジニアの方が魔法の様だと言ってくれたので、プログラム触ってて良かったなと思いました。