Pages

2015年3月16日

[ Photography ] (2015 修訂版) Nikon 使用者利用 Android 裝置的《Google 裝置回報》與 Nikon ViewNX 2 替照片標記地理位置

Title
本文的基礎是 2014 年的同名文章。由於發現當初這篇文章有一些寫錯的地方以及 GPSBabel 也有改進,所以勘誤,修改,然後重發一次。

如果你有 Android 裝置,是否曾經注意到設定中有個叫做《Google 裝置回報》(或類似)的選項?這個功能可以讓 Android 回報目前所在的位置。而這些資訊會儲存在該裝置使用的 Google 帳號中。之後可以透過 Google 定位記錄瀏覽與管理。如果你是 Nikon 的 DSLR 擁有者,可以利用這個功能與 ViewNX 2 結合替相片加上地理位置資訊,知道照片是何時在何處拍攝的。

如果你有 Nikon GP-1,拍照時接上 GP-1 並且取得 GPS 資訊後,相機會主動將地理位置資訊寫入影像檔。可是在室內拍照時會因為室內收不到 GPS 訊號因此 GP-1 無法定位所以無法提供地理位置資訊。或者是你沒有 GP-1 卻想將拍照的地理資訊位置寫入影像檔以提供未來參考用,那麼這一篇應該能幫助你。
GP-1
▲Nikon GP-1



注意事項

時間是很重要的。ViewNX 2 利用地理位置資訊檔,利用照片拍攝時間作為關鍵值來找出對應的地理位置。所以如果相機的時間不準就會影響定位的結果。在 Nikon Transfer 2 當中(啟動順序:Nikon ViewNX 2 → 【檔案】 → 【啟動 Transfer ( T )】)有個選項叫做【連接相機時,將相機的日期和時鐘與電腦時鐘同步(僅支援的相機)】,可以利用這個方式校正相機時鐘。電腦端可以用國家時間與頻率標準實驗室的 NTP 校時軟體 將電腦時鐘調整為正確的標準時間。如果你的相機無法被 Nikon Transfer 2 同步時間,則需要手動校時。
00002
▲ Nikon Transfer 2 校時用的選項

另外 Android 裝置必須有連網的能力。如果你的 Android 裝置僅有 Wi-Fi 功能,那麼在不提供無線網路的地方它也無法回報當下位置。或者是你身處於收不到基地台訊號的地方…Android 裝置需要網路才能回傳當下的地理位置資訊。

從 Google 定位記錄匯出 KML 檔

首先,登入《Google 定位記錄》。先來解釋一下畫面。
00001
▲《Google 定位記錄》的畫面
綠框(一)區:日期選擇區。
藍框(二)區:地圖呈現區。當天的路線以及 Android 裝置回報的位置點都會呈現在這裡。為維護個人隱私因此本圖此部分已做過處理。
紫框(三)區:按下這個按鈕,則會自動展示當天的行進路線。
黑框(四)區:這是時間軸。顯示當天的移動資訊。斜線表示移動中,水平線表示停滯於某地。
黃框(五)區:這裡可以以「時間戳記」來選擇定位內容,匯出 KML 或是刪除儲存的定位內容。

接下來要將軌跡匯出為 KML。KML 裏面會包含了「何日何時在何處」的資訊。
  1. 從(一)區選擇照片的拍照日期。
  2. 從(二)區與(四)區確認 Google 定位記錄與當天的行程相符合。有時候可能會因為通訊因素因而導致定位記錄異常或是缺少。
  3. 確認無誤後,點擊(五)區的【匯出成 KML】。瀏覽器會提示儲存一個名稱格式為 history-日-月-西元年.kml 的檔案。你也許會發現日期似乎少一天。原因是匯出的檔案並不是使用本地時區。例如說現在我匯出自己的定位紀錄,得到一個 history-03-13-2015.kml 並且用文書編輯器打開,可以看到定位資訊的第一筆紀錄如下:
    00004
    這些匯出的紀錄使用的時區是 UTC –7 的時區,也就是跟 Google 總部(位於美國加州矽谷)同時區。


轉換 KML 成 GPX

Nikon ViewNX 2 只能匯入 GPX 格式的定位資訊,因此需要把上個階段取得的 KML 轉換成 GPX。由於 Google 定位資訊匯出的 KML 內,每一筆資訊的登記時間都是 UTC-7,但台灣時區屬於 UTC+8,為了後續使用 ViewNX 替相片標記地理資訊時不至於遭遇困難,所以轉檔成 GPX 時需要將時區轉換為 UTC。這裡詳細說明一下,為什麼不直接轉成台灣時區呢?由於 ViewNX 設計上比較沒有彈性,經過多次試驗後發現 ViewNX 對 UTC 的適應性最好,所以建議轉成 UTC。

雖然 Google 官方推薦使用 GPSBabel。GPSBabel 現在(1.5.2)也終於可以處理 Google 定位資訊匯出的 KML(2014 年 2 月寫這篇文章時,GPSBabel 當時的版本還無法處理定位資訊匯出的 KML 檔),但是我在 Windows 下使用 GPSBabel 1.5.2 輸出 GPX 時,雖然時區已經自動轉換成 UTC,但是 ViewNX 讀入後對於時區的判斷會一直失誤,

所以我還是使用 GPS Visualizer 提供的 KML 轉 GPS 服務 來完成這件事情。
  1. 先確定 Output format 是 GPX(下圖藍框處),然後滑鼠點擊下圖綠框處的《Choose File》選擇上個階段取得的 KML 檔案,最後按下下圖黃框處的《[+] show advanced options》。
    00001
  2. 下圖紅框處《Time offset》欄位填入的數值就是輸入檔案的時區與輸出檔案的時區的差值。先打開從 Google 定位下載的 KML,
    00007
    找到類似上圖的區域,看看這個 KML 使用的時區。我們可以看到在 <when> 與 </when> 之間標記了一組時間,下面的 <gx:coord> 與 </gx:coord> 表示座標。時間表示後面有 –07:00 字樣,這表示這組時間的時區是 UTC-7 的時區。我看過得 KML 有 UTC-7 的也有 UTC-8 的。由於這邊與接下來的動作有關,所以每次轉換前請先確定你手上的 KML 時區是哪裡。

    因為做示範的這組 KML 使用的是 UTC-7 的時區,與 UTC 相差 0 – (-7) = 7 個小時,因此這裡填入 +7。
    00002
    如果你手上的 KML 用的是 UTC-8 時區,這邊要填 +8 喔。
  3. 向上捲,按下下圖藍框處的《Conver》。
    00003
  4. 將滑鼠游標移到下圖紅框處的連結,按右鍵從跳出式選單選擇【另存新檔】儲存。
    00004
  5. 檢視一下輸出檔案;我的 3 月 14 日的定位紀錄 KML 轉換成 GPX 後,第一筆資訊的時間是 3 月 13 日 16 點 00 分 09 秒。由於台灣時區屬於 UTC+8,16 + 8 = 24 也就是 00 點,因此沒有問題。
    00005


在 ViewNX 2 替照片加上地理位置資訊

  1. 開啟 ViewNX 2,選取要加上地理位置資訊的圖片,然後透過選單【編輯】→【Log Matching ( H )】→【Log Matching ( A )…】或者是上方的【Log Matching】→【Log Matching…】進入 Log Matching 畫面。
    00005
  2. 由於轉換的 GPX 現在時間為 UTC,與我們相差八個小時,需要設定否則會出現匹配錯誤的問題。先按下右上角的【設定…】。
    00006

    在設定畫面,如果你是在台灣拍攝的而且相機時間與本地時間同步,時區(Time Zone)的部份設定為 UTC +8。調整相機時間(Adjust Camera Time)這邊是只有 GPX 檔案的時間與 UTC 不同時才需要微調的部份。所以如果你的相機設定時區為台灣(UTC +8)但是取得的 GPX 時區為 UTC –7 的話,就需要在調整相機時間(Adjust Camera Time)處設定為 –7 以符合 GPX 資訊的時間。由於我們在轉換 GPX 的時候已經將資訊的時間轉換成 UTC 了,因此這裡設定維持 0 即可。
     00006
  3. 點擊左上偏中的【匯入…】匯入上個階段取得的 GPX 檔案。匯入後,Log Matching 會自動根據照片拍攝時間與 GPX 內的資料比對後自行匹配。此時你可以點擊【影像檔案】清單中的檔案,左下角的地圖會自動變成匹配的地理位置資訊的地圖。(為保護個人隱私,左下角地圖區影像已經過處理)。
    00007
  4. 確定後,按下右下角的【套用】。面對詢問,當然是選擇【是( Y )】。
    00009
  5. 擁有地理位置資訊的圖片,下方會有一個類似劃上經緯線的地球的圖案。
    00010 

額外的提醒…

如果你有兩台以上的 Android 裝置,而且出門拍照時兩台裝置不會帶在身上,請務必把非隨身的那台 Android 裝置的位置回報功能關閉。否則你會發現 Google 定位記錄中,當天「你」會高速的在兩個點之間移動。一個就是你隨身裝置回報的位置,另外一個就是你沒帶出門的那部裝置回報的位置(例如,你的住處)。這可能會造成判斷錯誤。所以需要將沒帶出門的裝置的位置回報功能關閉,切記切記。

沒有留言: