从纬度经度查找时区[关闭]
-
09-06-2019 - |
题
是否有任何库(或者更好的网络服务)可以将纬度/经度转换为时区?
解决方案
对于我正在从事的一个项目,我相当深入地研究了这个问题。GeoNames.org 和 EarthTools.com 在许多情况下都是不错的选择,但存在以下严重缺陷:
- GeoNames.org 通过在其数据库中搜索包含时区字段的最近点来查找时区。这通常会导致边界附近的错误结果。它的速度也非常慢,导致每个请求的查询时间约为几秒。如果查询点附近的数据库中没有项目,它也不会返回有效的时区。GeoNames 还限制每天可以进行的查询数量,使得批量操作变得困难。
- EarthTools.org 使用地图并且能够快速返回查询,但它没有考虑大多数位置的夏令时,并且它返回原始偏移量而不是时区 ID(即,它们返回“GMT-7 ”而不是“美国/芝加哥”)。另外,我在准备这篇文章时刚刚查看了他们的页面,谷歌浏览器警告了他们网站上的恶意软件。这对我来说是新的,它可能会改变,但显然是一个令人担忧的原因。
这些缺陷意味着这些现有工具不适合我的需求,因此我推出了自己的解决方案并将其发布以供一般使用。你可以在这里找到它:
AskGeo 基于世界时区地图,因此它会为每个有效的纬度和经度返回有效的时区。它返回 Linux 和大多数其他操作系统和编程框架上使用的标准时区 ID(例如“America/Los_Angeles”)。它还返回当前偏移量,充分考虑夏令时。
它非常易于使用,并且使用情况记录在网站的主页上。该API支持批量查询,因此如果您需要进行大量查找,请使用批处理接口,而不是通过串行请求使我们的服务器陷入困境。批量查询也快得多,所以每个人都赢了。
当我们首次推出此功能时,我们将其构建在 Google App Engine (GAE) 上,并向所有用户免费提供。这是可能的,因为当时 GAE 的价格非常低。从那时起,我们的服务器负载大幅增加,GAE 的价格也大幅上涨。这两个因素结合在一起,导致我们转向 Amazon Web Services 进行托管,并开始对商业用途收费,同时为非营利、非商业开源项目和研究人员提供免费服务。对于商业用户,我们提供 1000 个免费查询,让潜在客户评估 API,以确保它满足他们的需求。有关定价和条款,请参阅网站。
底层库是用Java编写的,由于大众的需求,我们还以商业许可发布了该库。该库的完整文档和定价详细信息位于网站上。
我希望这有用。这对于我正在从事的项目当然很有用。
其他提示
看一眼 地名网
这是一个免费的网络服务,可让您从经度/纬度获取大量信息
他们还为 GeoNames Webservices 库提供免费(且开源)的 Java 客户端(还提供其他语言的库:红宝石、蟒蛇、perl、lisp...)
以下是您可以从经/纬度获得的一些信息: (这里是网络服务的完整列表)
- 查找最近的地址
- 找到最近的十字路口
- 查找附近的街道
- 海拔
- 时区
现在可通过 Google API 获取时区
您需要多少准确度?将经度除以 15 几乎是正确的:p
项目已死:-/
这些看起来很有前途——
存档链接:
https://web.archive.org/web/20150503145203/http://www.earthtools.org/webservices.htm
埃里克·穆勒做了 shapefile 地图 tz (Olson) 数据库的时区。不过,有一些小警告:
- 使用的边界通常是非官方的。
- 它不像 tz 数据库本身那样定期更新,因此一些新形成或调整的区域可能会丢失。
然而,撇开这些不谈,它对于大多数用途来说似乎都非常准确。
DRT引擎 接受纬度、经度和本地日期时间并返回时区偏移量。这可用于建立特定位置的时区 未来 日期。