簡體   English   中英

Python pandas DataFrame:使用經度將本地 UTM 時間轉換為 GMT

[英]Python pandas DataFrame: convert local UTM time to GMT using longitude

我有一個非常大的pandas DataFrame。 一個小例子:

          BaseDateTime       LAT        LON
0  2018-10-18T00:00:00  36.97696  -89.10680
1  2018-10-18T00:00:00  46.08972 -122.92928
2  2018-10-18T00:00:00  48.10739 -122.77227
3  2018-10-18T00:00:00  28.72571  -89.52151
4  2018-10-18T00:00:00  61.11447 -146.35110

如何將 BaseDateTime 列(本地時間)轉換為 GMT 時間(根據 LON 列,它告訴在哪個通用橫軸墨卡托或 UTM 時區測量數據)?

我已經用谷歌搜索了答案。 有很多關於時區的教程,但沒有一個使用經度+本地時間。

時區並沒有完全按經度划分。 如果您有可用的緯度和經度,則可以使用此處列出的 API 獲取相關時區:

如何使用緯度和經度坐標從某個位置獲取時區?

還有這個 Python 庫可以簡化該過程:

https://github.com/pegler/pytzwhere

海上船舶的本地上船時間因三個因素而變得復雜:

  • 在開放的國際水域,時區可以從經度計算為與 UTC 的固定小時偏移量。 例如,UTC-9 在太平洋海岸以西的地方使用。 在被引用為Etc/GMT+9TZ 數據庫中 - 符號是倒置的。

  • 在領海中,時區通常是最近的陸地時區。 例如,緊鄰太平洋海岸以西,區域標識符仍為America/Los_Angeles ,在標准時間為 UTC-8,在白天時間為 UTC-7。

  • 管理此類事情的規則/法規/法律/等是不一致的。 實際上,船長可以宣布他們喜歡的任何時區。 這種情況在客輪上經常發生,當地的船舶時間可能會在一夜之間切換。 當他們的手機接收到來自其他地方的信號將時間切換到船上時間以外的其他時間時,乘客經常會感到困惑。

您可以在Wikipedia 關於航海時間的文章中閱讀更多相關信息。 IANA tz 數據庫源中還有一條關於海上船只的說明

忽略上面的第三點,您可以從 lat/lon 坐標中獲取時區 id。 蘭迪的回答通常是正確的。 但是,我建議使用timezonefinder而不是 pytzwhere,因為它使用timezone-boundary-builder數據集,其中包括領海中的陸地時區。 (Pytzwhere 使用較舊的“tz_world”數據,沒有領海邊界。)

也就是說,在您使用的數據集中 -您不需要轉換時區 數據已經采用 UTC。 這是他們的常見問題解答中發布的圖表:

圖表
(來源: marinecadastre.gov

字段 2, BaseDateTime被描述為“完整的 UTC 日期和時間”。 換句話說,它們的末尾應該有一個Z 2017-02-01T20:05:07解釋為2017-02-01T20:05:07Z (UTC 和 GMT本質上是相同的。)因此,文件中的所有時間戳已經具有相同的基礎 - UTC。 這消除了海上當地時間的模糊性。

關於UTM ,這與time無關,而是與position相關。 UTM 區域是地球表面上具有特定計算邊界的正方形。 在您正在使用的數據集中,每個較小的文件都按 UTM 區域(Zone1、Zone2、Zone3 等)划分。 每個文件中的所有數據點都將在其各自的 UTM 區域中具有緯度/經度。 還出現(在同一頁面上的主要數據下方)指向更大文件的鏈接,這些文件包含來自所有區域的數據組合,因此如果您對整個世界感興趣,您可以使用這些文件,並且不需要考慮 UTM .

你說:

...我得到了軌跡。 有些看起來很正常,有些很可怕(看起來像時間旅行)......

這在同一個常見問題解答中得到解決:

問:我如何解釋 AIS 時間戳和觀察到的船只航程的明顯不一致?

答:完整的時間戳由基站添加到記錄中,使用以 UTC 報告的基站的時鍾。 請務必考慮您的時區轉換為 UTC 和其他偏移量,例如夏令時。

他們似乎在談論您如何觀察數據。 由於添加到記錄中的時間戳是由基站完成的,並且該站以 UTC 進行報告,因此只有當您需要轉換為某個本地時間來觀察數據時,時區偏移和 DST 才會發揮作用。 如果您只跟蹤軌跡,那么您應該將事物保持在其原始 UTC 基礎上。

如果數據仍然非常不正確,那么它們可能只是壞數據。 確實很可能不正確的 GPS ping 可能會導致看起來非常不正確的軌跡。 您可能需要找到另一種方法來過濾數據中的此類異常。

關於:

...(我懷疑)他們的時間是根據他們所在的區域來衡量的...

在源 web 站點的數據描述中,我沒有看到任何會導致該結論的內容。 數據采用 UTC,而不是船上時間。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM