2

在给定坐标的情况下,是否有一个函数可以返回时区(或与某些“支点”如 GMT 或 UTC 的偏移量)?

IOW,我想(假设“TimeZoneType”是一个类或枚举左右):

TimeZoneType timeZone = getTimeZoneForCoordinates(<latitude>, <longitude>);

-或者:

int timeZoneDifferential = getTimeZoneOffsetFromUTCForCoordinates(<latitude>, <longitude>);

我在 gis.stackexchange 上发布这个问题之间感到很痛苦。如果被告知,我将删除此问题并将其发布在此处...

4

1 回答 1

1

一个简单的问题,一个很大的答案:

能够做到这一点的公司寥寥无几。iphone 是我所知道的第一款可以从地理位置确定时区的设备。甚至我的 TomTom Navi 也无法做到这一点,我必须手动输入 TimeZone 偏移量。

在这里你将如何做到这一点。

  1. 购买一些 xxx 欧元 navteq “WorldMaps”,或者使用 OpenStreetMap 以更便宜的价格购买。稍后进行一些转换,您将拥有世界每个国家/地区的多边形。这样的国家通常有 50.000 点或更多代表国家边界。

  2. 一旦你有了这些多边形,你必须编写一个函数,为给定的(纬度/经度)提供 countryPolygonId(或 countryID)。
    (countryId = findCountry(lat, lon); // 使用多边形方法中的点

  3. 一旦你有了国家,你必须找到下一个大城市:你需要有一个系统的 TimeZone 模块支持的城市列表(我认为这是一个规范,但我不确定。)

然后,您必须将 countryId、cityId 翻译为“Austria/Vienna”之类的字符串。这是您的时区,您可以使用 TimeZone zt = new TimeZone("Austria/Vienna"); 进行初始化

我希望这很有趣,但是这对实现和获取该任务的必要数据非常苛刻。
我已经针对不同的用例完成了第 1 步和第 2 步。

于 2012-11-28T20:47:45.197 回答