小心了!通過一張照片我能找到你拍照的精確位置!

視頻來源:EyeOpener

文章整理:程序員極客實驗室

閱讀文本大概需要 5 分鐘

這是一張發表在國外論壇上的旅行照片,發出照片的博主還附了三條簡短的信息。

  1. 天空中的那道白線是一架波音747-8F,此時,它正從倫敦飛往香港

  2. 照片的拍攝時間是2019年10月30日

  3. 拍攝者此時站在旅館裏

問:這家旅館的名字是?

注:下面是這個視頻,不方便看視頻的朋友,請往下看文字版。如果覺得這個問題解答很有意思,不妨推薦給你的朋友。

也許你會對這個莫名其妙的問題感到一臉茫然。這其實是網友發起了一項偵探挑戰賽。相信我既然能夠通過網絡看到這段視頻,那你也擁有解答這個問題的能力。

不過問題在於你該如何去使用它?最通用的思路是用圖片搜索,但是目前的搜索引擎只會給出一堆無關信息。也許在看到視頻的當天,你已經可以通過這種方式找到類似的分享攻略,進而找到答案。

但是請相信我接着看下去,你會對自己擁有的能力有更深入的理解。這照片發佈的當天圖片搜索是無效的,因爲其中找不到任何有關城市的地標建築照片中的那棟大樓也沒有什麼鮮明的設計風格。

所以我們需要回過頭來想一想,我們到底知道哪些信息?照片的拍攝時間是2019年10月30日,天氣很晴朗,拍攝者背對着太陽,天空中飛過一架從倫敦飛往香港的波音747。

前三個條件在地球上任何地點都可以實現。所以解密的關鍵在於那架從倫敦飛往香港的飛機,要知道商業飛機的航線基本是固定的。既然航線是固定的,從倫敦到香港,而我們又知道照片拍攝的日期。

所以只要在相關的航空諮詢網站(www.flightradar24.com)查找一下在2019年10月30日這一天從倫敦飛往香港的飛機,再結合他的型號波音747-8F我們就可以得知照片中這架飛機航班號是N617UP找到這次航班之後,我們就可以在對所有人公開的網站上得到航班對應的KML文件。

KML是一種特殊的文件格式,它可以在地圖軟件中顯示特定的地理數據。比如一家飛機從起飛到降落所經過的所有的經緯度位置,還有他在每個具體點的飛行高度。將這架飛機的KML文件上傳到谷歌地球之後,我們就可以準確的再現它在2019年10月30日的活動軌跡。

比如他是如何從倫敦起飛,又是如何從香港降落而照片的拍攝者就在這條狹長的飛行軌跡附近。現在我們的搜索範圍從整個地球一下子縮到了這條狹長的軌跡上。所以接下來的問題就變成了在他按下快門的那一瞬間,這架飛機的這條線的哪個點?

要知道KML文件不僅僅記錄了飛機的軌跡,他同時還對應着飛機在每個點的時間信息,比如根據左上角解析出來的信息,我們可以知道這架飛機是在當天上午6點多出發的。不過需要注意的是,這是UTC時間,也叫協調時間時,它基本和格林威治標準時間相當。我國採用東八區時間,所以我們經常看到我們的時間是UTC+8。通過使用UTC時間,跨國飛機可以避免,因爲短時間穿過多個時區而讓自己產生混亂。

因此,我們明確了飛機位置和時間的對應關係。實際上通過具體的位置和時間,我們就可以得知飛機在航線不同位置時的天氣情況。具體操作方式我們一會兒再講。而照片中飛機所在的天空晴空萬里,所以我們首先可以排除那些在航線上處於黑夜的地段。

這裏我們用到的是一家名叫SunCalc(http://www.suncalc.org/)的天文觀測網站,將座標定位到倫敦。然後在左側將時間撥回到2019年10月30日,UTC時間6點12分,此時的倫敦很明顯還是在黎明到來之前的黑夜當中,因此倫敦可以直接排除。考慮到飛機抵達目的地的時間是UTC 17點30分,此時的香港是凌晨一點半。根據這個信息再結合原始照片和飛機航線圖,照片裏的飛機不可能在已經入夜的中國,所以大概可以先排除航線的後半程。

而當我們的目光聚焦到飛機的前半程後,會發現此時的飛機航線大體朝向正東。所以原先這張幾乎一清二白的照片裏面又多了一個重要的信息,飛機指向正東,拍攝者面朝西側,看着這條航線你會不會感到奇怪?印象中的飛機都是平着飛,爲什麼這裏的航線似乎要一飛沖天離開地球呢?這其實屬於一種視錯覺。在地圖軟件上模擬一下就可以明白。航線之所以這麼陡,是因爲拍攝者離他太近。既然飛機向東前進,那拍攝者應該在航線的北側。否則的話,這條線看起來會和原圖完全相反。

不過光知道這一點還是不足以讓我們推測出問題的答案。好在這張照片裏還隱藏着一個不起眼,但是同樣關鍵的信息。拍攝者面前的這棟建築至少也有五六層高,而照在這棟樓上的影子幾乎快要沒過它本身。考慮到歐洲地廣人稀的局面,這應該是一座比較繁華的大城市。

所以我們現在的篩查點是:

  • 一、航線的前半部分,也就是歐洲。

  • 二、距離航線非常近的城市。

  • 三、拍攝是在航線以北,所以這座城市也靠北。

至少它不可能完全位於航線的南側,讓我們從西向東開始尋找。

阿姆斯特丹是一個很有誘惑力的選項,但是飛機經過這裏的時間是UTC上午6點半左右。此時的阿姆斯特丹天也還沒有亮。經過反覆的對比和篩查,我們排除了沿途的大部分城市。

隨着航線的東移,一座條件幾乎完美的城市來到了我們的眼前——柏林。航線穿城而過,而且柏林的大部分城區都在它的北部。此時的時間是UTC上午7點14分左右,柏林陽光正好。接下來我們需要藉助3D視角的幫助,才能夠確定旅館最終的位置。不過直到近距離觀察我才發現,想在柏林這麼一座大城市裏面,找到這麼一棟毫無特色的建築,簡直是天方夜譚。

即便把範圍劃定在了城市的北半區也還是無濟於事,藉助從網絡上搜集到的資料,我只能夠走到這裏,最終還是網絡大神的耐心讓我歎服。

他們把從不同地點看到的航線的角度和原圖做對比,劃定了一個和原圖視角大致一致的區域。然後開始了摸網式的排查,最終經過大量的對比,那座熟悉的大樓終於出現在了我們的眼前。

順着大神的指引,我在軟件裏還原了照片,而這家旅館的名字是:Hotel H+ Mitte Berlin。他們甚至還根據照片中的位置關係,推測出了拍攝者當時所在的房間。還根據此處的KML數據推測照片拍攝於柏林當地時間8點13到14分之間。從一條淺淺的痕跡推測出拍攝者具體的酒店房間,這本是007電影纔會出現的劇情,卻可以通過對網絡工具的合理使用成爲真切的現實。

全程我們需要使用的工具和知識包括:

  • UTC時間

  • KML文件

  • 飛行航程查詢網站(Flightradar24)

  • 免費的谷歌地球(Google Earth Pro)

  • 天空觀測網站(Suncalc)

實際上大神們推導出這個結果,花費了長達幾周的時間,我們在這裏不過是簡單的按圖索驥。也許我們無法真的藉此擁有和他們一樣的超能力,但我想你肯定已經明白邏輯的力量能夠有多強大。

推薦閱讀
GitHub 下載神器強勢迴歸!

巧用枚舉來幹掉if-else,代碼更優雅!

如何正確訪問Redis中的海量數據?服務纔不會掛掉!

超硬核!1.6W 字 Redis 面試知識點總結,建議收藏!


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章