LoginSignup
usausa000
@usausa000

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

Excel VBAでの逆ジオコーティングのやり方について

解決したいこと

画像のプロパティにある
撮影日時・経度・緯度・高度(高度はなくてもOK)
を取得して、その高度緯度から住所を知りたいです。

ExcelのVBAで行っています。

このソースで、画像から撮影日時・緯度・経度までは
とることができています。(すこし緯度と経度の計算がおかしいですが)

Sub sample()

Dim photFile As String
Dim objWia   As Object
Dim p As Object
Dim makerName As String
Dim ModelName As String
Dim dateOfShooting As String
Dim latitude As String
Dim longitude  As String
Dim altitude As String


'対象の写真(画像ファイル)を指定
photFile = "C:\Users\デスクトップ\Photos\IMG_0405.jpg"

Range("A2").Value = photFile

Set objWia = CreateObject("Wia.ImageFile")

'写真(画像ファイル)をロード
objWia.LoadFile photFile

For Each p In objWia.Properties

    Select Case p.Name

        '撮影日時
        Case "ExifDTOrig"
            dateOfShooting = p.Value
            
         Range("B2").Value = dateOfShooting
        '緯度
        Case "GpsLatitude"
            latitude = p.Value(1) + (p.Value(2) / 60) + p.Value(3) / 3600
           Range("C2").Value = latitude
            
        '経度
        Case "GpsLongitude"
            longitude = p.Value(1) + (p.Value(2) / 60) + p.Value(3) / 3600
            Range("d2").Value = longitude
            
        '高度
        Case "Gpsaltitude"
            longitude = p.Value(1) + (p.Value(2) / 60) + p.Value(3) / 3600
            Range("d2").Value = longitude
    End Select
    
Next

'イミディエイトウィンドウへ出力
Debug.Print "撮影日時    :" & dateOfShooting
Debug.Print "緯度        :" & latitude
Debug.Print "経度        :" & longitude

   Debug.Print "高度   :" & altitude

'後片付け
Set objWia = Nothing

End Sub

このあとは、出てきた緯度・経度・高度(高度はなぜか出てこないです)を使って
住所に変換したいのですが、

APIというのがよくわかりません。

国土地理院のAPIがよいと書いてあるのですが、サービスが終了しているのかどこから利用したらよいのかわからず。

このあとどう進めていったらやりたいことができるのか、わからず困っています。こんなほぼ理解できていない質問で申し訳ないです。どうかご助力頂けませんでしょうか。

0

2Answer

Comments

  1. @usausa000

    Questioner
    ありがとうございます。こちらのサイトではうまくいかずでした、でも教えてくださってありがとうございます。グーグルAPIの改定?があったみたいなのでそれをクリアできたらなんとかなるのかもしれないです。回答頂き助かりました。VBAで、はビックリということは本当は違う言語の方がいいのでしょうか。
  • 緯度経度から住所を求めるのには地理院地図やGoogle Mapなど何らかの地図サービスを使う必要があります。
  • APIというのはウェブサービスやソフトウェアをプログラムから操作するための仕組みのことです。
    例えばGoogle Mapは普通ブラウザで人間が操作して使いますが、Google Maps APIをつかうことでプログラムから操作することもできます。

国土地理院はいろいろAPIを提供していてその一部は提供が終了していますが、逆ジオコーディングに必要なAPIはまだ動いているみたいです。
ここらへんが参考になるかと思います。
https://memo.appri.me/programming/gsi-geocoding-api#%E3%82%B8%E3%82%AA%E3%82%B3%E3%83%BC%E3%83%87%E3%82%A3%E3%83%B3%E3%82%B0API

0

Comments

  1. @usausa000

    Questioner
    ありがとうございます。このサイトも拝見したのですが、言語がJavascript?のようでVBAではないみたいなのです。それで困っていました。でも教えてくださってありがとうございます。 逆ジオコーディングに必要なAPIはまだ動いているんですね!頑張って探してみます。

Your answer might help someone💌