是否有可靠的来源提供 UN/LOCODEs 到奥尔森时区的映射?

Is there a reputable source that provides mappings of UN/LOCODEs to Olsen Timezones?

我一直在研究 CLDR and IANA 以找到 UN/LOCODEs 到奥尔森时区的集中映射。

理想情况下,我希望有例如:

+--------------+--------------------+
|un_locode     |timezone            |
+--------------+--------------------+
|USLAX         | America/Los_Angeles|
+--------------+--------------------+

每 UN/LOCODE.

我的 nube 技能是否让我无法理解如何使用这些资源来实现我的目标? (如果是这样,请帮助我指出允许我自动提供这些映射的脚本)。

或者,这些来源是否没有我正在寻找的数据相关性? (如果是这样,请让我知道您是否有可靠的消息来源)。

我没见过这样的来源。您可以尝试通过为那些具有它们的条目映射 lat/lon 坐标,并通过 one of the methods listed here.

与 IANA 时区相关联来创建一个

但是,一定要阅读Wikipedia's article about UN/LOCODE,尤其是用坐标描述错误。另请注意,许多坐标根本不在数据中 - 为什么?我不知道。

list of UN/LOCODE for the US is here,并显示洛杉矶为 US LAX(而不是 UNLAX)。它的坐标字段是空白的。

如果您能找到 UN/LOCODE 到 lat/lon 的其他可靠来源,那么您就成功了。快速搜索发现 GeoNames claims to have this in their premium data subscription,但我没有进一步调查。

基于name/country/coordinates的GeoNames free database of cities (which is available to download) provides: city names, latitude/longitude and, most importantly, timezone information. You can fairly quickly make your own database connecting this information with the UN/LOCODE code lists

我们遇到了完全相同的问题,因此必须提供解决方案。

此解决方案涉及 link 使用 geolocation/timezone 数据库连接 UN/LOCODES 数据库。 Matt Johnson 的回答和随附的评论对这种方法提出了一些注意事项。

即:

  • UN/LOCODE 坐标数据库不完整[1],有时数据不准确[2]
  • 在某些情况下,UN/LOCODE 和时区之间的一对一映射是不可能的,因为时区的政治性质。
  • 以上两点由于自由坐标到时区数据库的不准确性而变得更糟。获得一个还包括领海的数据集很有帮助,这样港口时区就可以正确地 linked 到它们所属的国家。

以下存储库 https://github.com/Portchain/un_locodes_sql 包含提取代码和 link 数据。它输出一个可以导入到 PostgreSQL 数据库中的 SQL 文件。 geolocation/timezone 数据基于 geo-tz[3] 模块,该模块的数据似乎来自 timezone-boundary-builder[4]。

同样,我们存储库提供的列表当然是不完整和不准确的。如果您在数据中发现任何错误,请打开一个 github 问题,让我们制作一个准确的开源列表 UN/LOCODE、坐标和时区信息。

CLDR 的地图在这里:https://unicode.org/reports/tr35/#Time_Zone_Identifiers

我看到 CLDR 被标记但没有被提及。