6

我一直在研究CLDRIANA,以便找到 UN/LOCODE 到奥尔森时区的集中映射。

理想情况下,我想拥有例如:

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

对于每个 UN/LOCODE。

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

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

4

4 回答 4

3

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

该解决方案涉及将 UN/LOCODES 数据库与地理位置/时区数据库链接。Matt Johnson 的回答和随附的评论对这种方法有一些警告。

即:

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

以下存储库https://github.com/Portchain/un_locodes_sql包含用于提取和链接数据的代码。它输出一个可以导入 PostgreSQL 数据库的 SQL 文件。地理位置/时区数据基于 geo-tz[3] 模块,该模块似乎从 timezone-boundary-builder[4] 获取数据。

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

于 2017-05-16T13:57:53.730 回答
2

GeoNames 免费城市数据库(可供下载)提供:城市名称、纬度/经度,最重要的是,时区信息。您可以相当快速地创建自己的数据库,将这些信息与基于名称/国家/坐标的UN/LOCODE 代码列表连接起来。

于 2016-03-30T20:01:20.200 回答
1

我没有见过这样的来源。您可以尝试通过映射具有它们的条目的纬度/经度坐标,并通过此处列出的方法之一与IANA 时区相关联来创建一个。

但是,请务必阅读Wikipedia 关于 UN/LOCODE 的文章,尤其是描述坐标错误的文章。另请注意,许多坐标根本不在数据中 - 为什么?我不知道。

美国的 UN/LOCODE 列表在这里,并显示洛杉矶是US LAX(不是UNLAX)。其坐标字段为空白。

如果您可以找到其他可靠的 UN/LOCODE 到 lat/lon 的来源,那么您就是在做生意。快速搜索发现GeoNames 声称在其高级数据订阅中包含此功能,但我没有进一步调查。

于 2015-11-11T02:21:49.187 回答
0

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

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

于 2018-06-22T23:01:10.797 回答