LoginSignup
0
0

More than 3 years have passed since last update.

サクッと位置情報を取得する

Last updated at Posted at 2020-10-29

普段はRailsで開発を行っております。
その際、位置情報の取得において意外な箇所でハマってしまったので作成したコードの備忘録?注意喚起?として残しておきます。
GPS情報が取得できない状況だけ見たい方は、GPSが取得できなかったまで読み飛ばして下さい。

早速、ターミナル内で位置情報の確認作業を行ってみます。
コードをコピペでも動きます。

環境:
Ruby2.6.6
ImageMagick 7.0.10-34

Rubyファイルを作成

今回はgps_testというディレクトリ内にmain.rbファイルを作成しました。
次に以降のコードを記述します。

main.rb
require 'rmagick'

img = Magick::ImageList.new(File.expand_path('~/Downloads/画像データ名'))
p img
p img.get_exif_by_entry('GPSLatitude')

# 緯度:10進数に変換して出力
exif_lat = img.get_exif_by_entry('GPSLatitude')[0][1].split(',').map(&:strip)
latitude = (Rational(exif_lat[0]) + Rational(exif_lat[1])/60 + Rational(exif_lat[2])/3600).to_f
p latitude

# 経度:10進数に変換して出力
exif_lng = img.get_exif_by_entry('GPSLongitude')[0][1].split(',').map(&:strip)
longitude = (Rational(exif_lng[0]) + Rational(exif_lng[1])/60 + Rational(exif_lng[2])/3600).to_f
p longitude

画像データ名には読み取りたい画像ファイル(IMG_8765.jpg等)を入れて下さい。

Magick::ImageList.new(File.expand_path('~/Desktop/画像データ名'))とするとDesktopから読み込むようになります。(見たままですが..)

僕の場合は、ダウンロードディレクトリの読み込み権限が設定されていなかったのでDesktopとして読み込ませました。

RMagickをインストール

プロジェクト内のターミナルから下記を実行

$ gem install rmagick

この際、エラーが出る場合はこちらが参考になると思います。
gem install rmagick でインストール失敗
bundle install "rmagick" でインストールができない

Rubyプログラムを実行する

$ ruby main.rb

実行結果

ruby main.rb
[/Users/tn/Desktop/Akihabara.jpeg JPEG 1200x1600 1200x1600+0+0 DirectClass 8-bit 535kb]
scene=0
[["GPSLatitude", "35/1, 41/1, 5920/100"]]
35.699777777777776
139.7717

これでGPSの緯度と経度が取れました!

GPSが取得できなかった

結論になりますがiPhoneを使用して撮影した時にHDR画像だったためGPSが取得できなかった。ということになります。

iPhoneの設定の中に"自動HDR"という機能があります。

自動HDR:
複数の写真がさまざまな露出で高速で連続撮影され、明るい部分と影の細部がきれいに表現された写真に合成する機能のこと。

iPhone端末だと位置情報付き設定にすればでMapが見られる = GPSも取得できるだろう
と思ってましたが、最初に記述した内容では取得できませんでした。
(取得方法知っている方いたら教えて下さい...)

プログラムは間違っていないはずなのになんで取得できないんだろう..って時は
自動HDRをオフになっているか確認した方がいいかもしれません。
これで何時間無駄にしたのだろう..泣
iPhone 自動HDRをオフにする

プレビューから位置情報が入っているかどうかの簡易的な確認は行っていました。
[Mac] 画像の位置情報(ジオタグ)をさくっと確認する方法

ただ、なぜ位置情報設定してあるのにGPSが読み込めないのか。設定のパターンがあるのかを検証してみました。

パターンの検証(位置情報設定はONの状態)

パターン1 両方ON
「自動HDR(合成機能)」をON       結果:
「通常の写真を残す」をON          → GPSの読み込みできない

パターン2 片側
「自動HDR(合成機能)」をON       結果:
「通常の写真を残す」をOFF          → GPSの読み込みできない

パターン3 片側
「自動HDR(合成機能)」をOFF       結果:
「通常の写真を残す」をOFF          → GPSの読み込みできない

パターン4 参考画像の状態
「自動HDR(合成機能)」をOFF       結果:
「通常の写真を残す」をON          → GPSの取得可能

参考画像:
スクリーンショット 2020-10-29 15.52.07.png

まとめ

独学で効率が悪いですがこれも1つの経験です!!
今回も少し成長できたと思ってどんどん開発にチャレンジしていきます。
基礎的な内容でしたが、取得方法や注意点が参考になれば嬉しいです。

参考

RMagickを使って画像Exif位置情報を10進値に変換

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0