代码之家  ›  专栏  ›  技术社区  ›  Tauren

使用时区信息进行地理编码

  •  6
  • Tauren  · 技术社区  · 15 年前

    有没有一种好的方法可以从lat/long坐标或物理地址中获取带有DST信息的时区信息?

    我找到了一些似乎提供此服务的Web服务,但我无法判断它们的可靠性,或者它们是否会在某个时刻消失。我的申请需要一些长期的东西。

    这些服务是否可靠且长期?还有其他更好的选择吗?

    3 回复  |  直到 10 年前
        1
  •  1
  •   Community Mohan Dere    9 年前

    另一个问题的答案是这个问题的一个很好的解决方案- Determine timezone from latitude/longitude without using web services like Geonames.org

        2
  •  1
  •   Celada    14 年前

    我花了很长时间寻找一个可以在本地托管的数据库,将lat+lon坐标映射到时区(即不依赖于远程服务)。这是我能想到的最好的办法。

    此处提供矢量化时区图: http://georezo.net/jparis/Data/wrldtz_tab.htm . 这是一个近2000个“地区”的数据库。每个区域都是由地球表面的一组多边形定义的,如果你在这个区域内,它会告诉你你所处的时区。

    主要缺点如下:

    • 它从2002年起就没有更新过。
    • 它只定义陆地上的多边形(如果你在水上,你不被认为在任何时区)。
    • 它不提供时区的olson标识符,只提供国家名称和(标准时间)UTC偏移量。

    最后一个限制对您来说可能不是一个大问题:没有那么多时区,并且您可能能够投入时间手动将每个时区分配给它的olson名称(特别是如果您只对少数时区感兴趣)。

    要读取可从上述网站下载的数据文件,需要使用 this library . 如果您感兴趣的话,我可以提供一些示例代码。

    您还提到使用物理(邮政)地址。把它们转换成lat+lon坐标是一个完全独立的问题,我的猜测是,如果不使用某种在线/远程服务,你就不能很好地完成这项工作。

    -菲尔

        3
  •  0
  •   madisvain    14 年前

    Tauren。我建议使用MaxMind的geoip。

    我写了一篇关于如何在Django中使用地理位置和时区支持的文章,但同样的方法也可以应用于其他语言。

    http://www.konstruktor.ee/blog/geolocation-with-time-zone-support-in-django

    geoip有许多不同语言的绑定。

    http://www.maxmind.com/app/api

    我认为从长远来看,这是最可靠的解决方案。