是否有一个函数可以在给定坐标的情况下返回时区(或与某些“支点”(例如 GMT 或 UTC)的偏移量)?
IOW,我想(假设“TimeZoneType”是一个类或枚举):
TimeZoneType timeZone = getTimeZoneForCoordinates(<latitude>, <longitude>);
-或者:
int timeZoneDifferential = getTimeZoneOffsetFromUTCForCoordinates(<latitude>, <longitude>);
我在此处和 gis.stackexchange 上发布这个问题之间犹豫不决。如果有建议,我会删除这个问题并将其发布在那里...
最佳答案
一个简单的问题,一个大的答案:
很少有公司能够做到这一点。 iphone 是我所知道的第一个可以根据地理位置确定时区的设备。即使是我的 TomTom Navi 也无法做到这一点,我必须手动输入时区偏移量。
在这里你会怎么做。
购买一些 xxx 欧元导航“WorldMaps”,或使用 OpenStreetMap 以更便宜的价格购买。 稍后进行一些转换,您将拥有世界上每个国家/地区的多边形。 此类国家通常有 50.000 点或更多代表国家边界。
一旦你有了这些多边形,你必须编写一个函数,为给定的(纬度/经度)提供 countryPolygonId(或 countryID)。
(countryId = findCountry(lat, lon);//在多边形方法中使用一个点一旦有了国家,就必须找到下一个大城市: 你需要有一个你系统的 TimeZone 模块支持的城市列表(我认为这是一个规范,但我不确定。)
然后您必须将 countryId、cityId 转换为字符串,例如“Austria/Vienna”。 这是您的时区,您可以使用 TimeZone zt = new TimeZone("Austria/Vienna"); 初始化;
我希望这很有趣,但这对实现和获取该任务所需的数据要求很高。
我已经针对不同的用例完成了步骤 1 和 2。
关于c# - 是否有返回 TimeZone 或基于坐标的偏移量的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13140364/