2008-09-03 8 views
77

Есть ли какая-либо библиотека (или даже лучше, веб-сервис), которая может конвертировать из широты/долготы в часовой пояс?Поиск по часовому поясу с широты долготы

+9

Есть не-вебсервис решение для этого? У меня есть случай использования, когда у меня есть спорадическое подключение к Интернету, и все еще нужно получить эту информацию в поле. Полезной будет база данных географии часового пояса с API-интерфейсом. – 2011-01-10 14:12:45

+0

Саймон, см .: http://stackoverflow.com/questions/5584602/determine-timezone-from-latitude-longitude-without-using-web-services-like-geona – fjsj 2011-10-18 13:41:30

+0

Да, есть коммерчески доступная библиотека, доступная по адресу http : //askgeo.com для выполнения именно этого. Он написан на Java, является потокобезопасным и очень быстрым (10 000 запросов в секунду). – 2012-05-08 21:27:06

ответ

64

Я довольно подробно рассмотрел этот вопрос для проекта, над которым я работаю. GeoNames.org и EarthTools.com оба хорошие варианты для многих ситуаций, но со следующими серьезными недостатками:

  • GeoNames.org находит временную зону путем поиска ближайшей точки в их базе данных, которая содержит поле часового пояса. Это часто приводит к неправильному результату вблизи границ. Это также очень медленно, что приводит к временам запроса порядка пары секунд на запрос. Он также не возвращает действительный часовой пояс, если в своей базе данных рядом с точкой запроса нет элемента. GeoNames также ограничивает количество запросов, которые могут быть сделаны в день, что затрудняет массовые операции.
  • EarthTools.org использует карту и может быстро возвращать запросы, но не учитывает переход на летнее время для большинства местоположений и возвращает необработанное смещение, а не идентификатор часового пояса (то есть, они возвращаются " GMT-7 "вместо" Америка/Чикаго "). Кроме того, я просто просмотрел их страницу при подготовке этого сообщения, и Google Chrome предупредил о вредоносном ПО на своем сайте. Это ново для меня, и это может измениться, но, очевидно, является поводом для беспокойства.

Эти недостатки означали, что эти существующие инструменты не подходят для моих нужд, поэтому я развернул собственное решение и опубликовал его для общего использования. Вы можете найти его здесь:

http://www.askgeo.com/

AskGeo основано на часовом поясе карте мира, поэтому он возвращает правильный часовой пояс для каждой действительной широты и долготы. Он возвращает стандартный идентификатор часового пояса (например, «America/Los_Angeles»), используемый в Linux и большинстве других операционных систем и программных сред. Он также возвращает текущее смещение, полностью учитывая летнее время.

Он чрезвычайно прост в использовании, и его использование задокументировано на главной странице сайта. API поддерживает пакетные запросы, поэтому, если вам нужно делать много запросов, используйте пакетный интерфейс, а не загружайте наши серверы с помощью последовательных запросов. Объемные запросы также намного быстрее, поэтому все выигрывают.

Когда мы впервые запустили это, мы построили его на Google App Engine (GAE) и сделали его бесплатным для всех пользователей. Это было возможно, потому что цены GAE были такими низкими в то время. С тех пор наша загрузка на сервере значительно возросла, и цены на GAE пошли вверх. Оба эти фактора привели нас к тому, что мы перешли на веб-сервисы Amazon для хостинга и начали взимать плату за коммерческое использование, сохраняя при этом бесплатную услугу для некоммерческих некоммерческих проектов с открытым исходным кодом и исследователей. Для коммерческих пользователей мы предоставляем 1000 бесплатных запросов, чтобы потенциальные клиенты оценивали API, чтобы убедиться, что он отвечает их потребностям. См. Веб-сайт для определения цены и условий.

Основная библиотека была написана на Java и по популярному требованию мы также выпустили библиотеку по коммерческой лицензии. Полная документация по библиотеке и сведения о ценах приведены на веб-сайте.

Надеюсь, это полезно. Конечно, это было полезно для проекта, над которым я работал.

4

Они выглядят довольно promising-

http://www.earthtools.org/webservices.htm

+1

Они предоставляют только исходное смещение от GMT, а не идентификатор часового пояса, и они не учитывают DST в большинстве стран мира, что делает его довольно непригодным на мой взгляд. – 2012-05-08 16:37:29

+0

Кажется, что они пропали – ligi 2017-09-12 16:00:39

28

Посмотрите на Geonames.org

Это бесплатный вебсервис, что позволит вам получить много информаций из длинной/лат

They also provide a free (and open source) Java Client for GeoNames Webservices library (library for other language also provided: ruby, python, perl, lisp...)

Вот некоторая информация, которую вы можете получить от long/lat: (complete list of webservices here)

  • Найти ближайший адрес
  • Найти ближайший Пересечения
  • Найти близлежащие улицы
  • Высота
  • Timezone
5

Сколько точности вам нужно? Деление долготы на 15 было бы почти правильным: p

0

DRT Engine занимает широту, долготу и местное время и возвращает смещение часового пояса. Это можно использовать для установления часового пояса конкретного местоположения на будущем.

3

Эрик Мюллер сделал shapefile maps на временные интервалы базы данных tz (Olson). Несколько незначительных оговорок:

  1. Используемые границы часто являются неофициальными.
  2. Он не обновляется так регулярно, как сама база данных tz, поэтому некоторые новообразованные или упорядоченные зоны могут отсутствовать.

Тем не менее, в большинстве случаев это кажется очень точным.