跳到主要内容

如何利用GNSS信息计算时区

· 阅读需 2 分钟

概述

你可以下载地图数据并存储在本地,然后创建自己的离线API。如Offline Geocoder可以提供离线的地理编码、反地理编码服务。它通过预先生成的二进制索引文件实现。但请注意,为了保持索引文件的大小,服务在精度方面有所限制。

时区计算是一个复杂的问题。Timezone Boundary Builder这样的项目提供了世界时区的GeoJSON数据,你可以将其下载下来自行浏览,但使用它来实时计算时区将会对计算资源要求很高。

不过值得注意的是,在离线环境下,处理夏令时和时区法规变更的问题可能会比较复杂,这需要定期下载和更新本地存储的数据。

或者你也可以使用tz_world数据库进行查找,每个经度和维度确定一个位置,然后在tz_world的所有多边形区域找到这个点。这需要一些地理数据库查询的知识。需要注意的是,这种方法无法考虑夏令时的因素。

因此,如果可能的话,最佳选择还是使用在线API,如Google和GeoNames等提供的服务。这些服务通常会保持最新的时区变化,并提供最准确的结果。

参考

  1. 离线数据 Timezone Boundary Builder https://github.com/evansiroky/timezone-boundary-builder

alt text

  1. C 语言API ZoneDetect https://github.com/BertoldVdb/ZoneDetect?tab=readme-ov-file

  2. JS API https://github.com/darkskyapp/tz-lookup-oss