JPEG画像のEXIF情報からGPSの位置情報を取得するツールをPHPで作成しました。
Githubで公開しています。Composerでインストールできます。
GitHub - macocci7/PHP-PhotoGps: Get GPS data from a photo.
Get GPS data from a photo. Contribute to macocci7/PHP-PhotoGps development by creating an account on GitHub.
緯度、経度、高度のデータを取得し、
出力は10進数表示・60進数表示が選択できます。
環境要件
- PHP (CLI) 8.0.0 以降
- Imagick PECL Extension
- Composer
インストール
composer require macocci7/php-photo-gps
![](https://macocci7.net/blog/wp-content/uploads/2023/10/photogps02.png)
基本的な使い方
パッケージに同梱されている example をコピーしていじってみましょう。
cp -ra vendor/macocci7/php-photo-gps/example ./
BasicUsage.php を見てみましょう。
<?php
require('../vendor/autoload.php');
use Macocci7\PhpPhotoGps\PhotoGps;
$pg = new PhotoGps();
$filename = 'img/with_gps.jpg'; // includes GPS tags
$gps = $pg->gps($filename);
echo "[" . $filename . "]--------------------\n";
// Latitude in sexagesimal format
echo "Latitude: " . $pg->latitudeS($gps) . "\n";
echo "緯度: " . $pg->lang('ja')->latitudeS($gps) . "\n";
// Longitude in sexagesimal format
echo "Longitude: " . $pg->lang('eng')->longitudeS($gps) . "\n";
echo "経度: " . $pg->lang('ja')->longitudeS($gps) . "\n";
// Altitude
echo "Altitude: " . $pg->altitude($gps) . "\n";
// Coord in decimal format ('S' and 'W' results in negative value.)
echo "Coord: " . $pg->latitudeD($gps) . ", " . $pg->longitudeD($gps) ."\n";
実行してみましょう。
cd example/
php -f BasicUsage.php
![](https://macocci7.net/blog/wp-content/uploads/2023/10/photogps03.png)
このようなテキストが出力されます。
[img/with_gps.jpg]--------------------
Latitude: 37°03'26.1"N
緯度: 37度03分26.1秒(北緯)
Longitude: 140°53'22.4"E
経度: 140度53分22.4秒(東経)
Altitude: 17
Coord: 37.057242222222, 140.889555
緯度、経度の60進数表記は英語と日本語に対応してます。
7行目の緯度、経度の10進数表記を使うと、
Google Mapなどで地図上の位置指定に使えたりします。
※2024/02/06追記:バージョンアップで諸々機能追加されています。
詳細はこちらの記事をご覧ください。
コメント