Базирование часового пояса на одной долготе является чрезвычайно неточным за пределами международных вод. Смотрите карту на этой странице:
http://askgeo.com/database/TimeZone
Вертикальные цветные полосы в глубоком океане - это так называемые естественные часовые пояса, полученные на основе одной долготы, а цвета земли - это действительные часовые пояса согласно регулирующим законам. Вы можете видеть, что они не очень хорошо выстраиваются в линию.
Я действительно столкнулся с этой проблемой, работая над другим проектом, и провел серьезные исследования и разработки по нему. Сначала мое исследование:
- Во-первых, часовые пояса обычно не кодируются просто смещением от GMT (или UTC). При этом не учитывается переход на летнее время и изменения часовых поясов с годами. Вместо этого идентификаторы часовых поясов используются для обозначения географической области, в которой официальное время часов было одинаковым во всей области в течение данного периода времени (например, с 1970 года). Наиболее важной системой таких идентификаторов является «идентификатор часового пояса Олсона» (вместе эти идентификаторы и их правила смещения известны как «база данных tz»), который используется в Linux и других операционных системах Unix. Большинство языков программирования и операционных систем имеют встроенную или стороннюю поддержку идентификаторов часовых поясов Olson.
С точки зрения существующих решений для перевода широты и долготы в часовой пояс:
GeoNames.org имеет обширную базу данных точечных местоположений (центры городов, аэропортов, общественных зданий и т. Д.), Каждое из которых снабжено набором полезных метаданных, включая идентификатор часового пояса Олсона. И у них есть хороший API, позволяющий вам получить доступ к ним через Интернет. Проблема в том, что если точка, которую вы запрашиваете, не находится прямо над записью в их базе данных, вы можете получить результат, который находится по другую сторону границы часового пояса, или вы можете вообще не получить ответ, если ваш запрос далеко от их ближайшей точки. Веб-служба также мучительно медленная и ограничивает количество запросов, которые вы можете сделать за день, до сравнительно небольшого числа.
Earth Tools (http://www.earthtools.org/webservices.htm) также имеет сервис для этого, и он намного быстрее, чем GeoNames, но возвращает только смещение от GMT, а не идентификатор часового пояса, и не обрабатывает переход на летнее время Время правильно для большей части мира. Кроме того, оно, похоже, не поддерживается, поэтому я не уверен, что данные больше точны (часовые пояса меняются со временем).
После просмотра этих вариантов и поиска других возможностей безуспешно я решил создать собственное решение и выпустил его по адресу:
http://askgeo.com
AskGeo основан на карте часовых поясов мира, поэтому он возвращает действительный часовой пояс для каждой действительной широты и долготы. Он возвращает стандартный идентификатор часового пояса Олсона (например, «America / Los_Angeles»), используемый в Linux и большинстве других операционных систем и сред программирования. Он также возвращает текущее смещение с полным учетом летнего времени.
Он чрезвычайно прост в использовании, и его использование документировано на главной странице сайта. API поддерживает пакетные запросы, поэтому, если вам нужно выполнить много поисков, используйте пакетный интерфейс, а не перегружайте наши серверы последовательными запросами. Массовые запросы также выполняются намного быстрее, поэтому выигрывают все.
Когда мы впервые запустили это, мы создали его на Google App Engine (GAE) и сделали его бесплатным для всех пользователей. Это было возможно, потому что цены GAE были так низки в то время. С тех пор нагрузка на наш сервер значительно возросла, а цены GAE пошли вверх. Оба этих фактора привели к тому, что мы перешли на Amazon Web Services для хостинга и начали взимать плату за коммерческое использование, оставляя сервис бесплатным для некоммерческих, некоммерческих проектов с открытым исходным кодом и исследователей. Для коммерческих пользователей мы предоставляем 1000 бесплатных запросов, чтобы потенциальные клиенты могли оценить API, чтобы убедиться, что он соответствует их потребностям. Цены и условия см. На веб-сайте.
Базовая библиотека была написана на Java, и по многочисленным просьбам мы также выпустили библиотеку по коммерческой лицензии. Полная документация библиотеки и информация о ценах на веб-сайте.
Надеюсь, это полезно. Это, безусловно, было полезно для проекта, над которым я работал.