根据纬度/经度确定时区,而无需使用 Web 服务(如 Geonames.org

2022-08-30 10:16:47

有没有可能在不使用Web服务的情况下确定点的时区(纬度/经度)?Geonames.org 不够稳定,我无法使用:(我需要这个在PHP中工作。

谢谢


答案 1

不久前我遇到了这个问题,并且完全按照亚当的建议做了:

  • 从 geonames.org 下载城市数据库
  • 将其转换为紧凑的 lat/lon ->时区列表
  • 使用 R-Tree 实现来有效地查找给定坐标的最近城市(或者更确切地说,它的时区)

IIRC填充R-Tree只需要不到1秒的时间,然后每秒可以执行数千次查找(两者都在5年机龄的PC上)。


答案 2

您的结果必须有多精确?如果粗略估计值足够,请自行计算偏移量:

offset = direction * longitude * 24 / 360

其中,方向为 1 表示东,-1 表示西,经度为 (-180,180)