Поиск часового пояса по широте и долготе [закрыт]

81

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

  • 9
    Есть ли не веб-сервисное решение для этого? У меня есть случай использования, когда у меня есть спорадическое подключение к Интернету, и мне все еще нужно получить эту информацию на месте. Была бы полезна база данных о географии часовых поясов с API сверху.
  • 0
    Саймон, см .: stackoverflow.com/questions/5584602/…
Показать ещё 3 комментария
Теги:
web-services
timezone
geocoding

8 ответов

67
Лучший ответ

Я довольно подробно рассмотрел этот вопрос для проекта, над которым я работаю. 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 и по популярному требованию, мы также выпустили библиотеку по коммерческой лицензии. Полная документация по библиотеке и сведения о ценах приведены на веб-сайте.

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

  • 5
    Спасибо за предоставление этой бесплатной услуги. Хороший ответ, я смотрел GeoNames и EarthTools до прочтения вашего информативного ответа.
  • 0
    Есть ли способ преобразовать ваш идентификатор часового пояса (например, "America / Los_Angeles") в .NET System.TimeZoneInfo?
Показать ещё 11 комментариев
28

Взгляните на Geonames.org

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

Они также предоставляют бесплатный (и открытый исходный код) Java Client для библиотеки GeoNames Webservices (библиотека для другого языка также предоставляется: ruby, python, perl, lisp...)

Вот некоторая информация, которую вы можете получить из long/lat: (полный список веб-сервисов здесь)

  • Найти ближайший адрес
  • Найти ближайший пересечение
  • Найти близлежащие улицы.
  • Высота
  • Timezone
  • 1
    это даст вам текущее время и смещения для перехода на летнее и стандартное время, но у меня возникают проблемы с поиском даты в будущем для перехода на летнее время.
  • 0
    для этого, вероятно, будет полезен Java-календарь
Показать ещё 1 комментарий
12

Часовые пояса теперь доступны через API Google

https://developers.google.com/maps/documentation/timezone/

  • 0
    Это замечательно, знаете ли вы, если я использую Google Maps API для геокодирования, лимит 2500 для всех запросов или 2500 для геокодирования и еще 2500 для часового пояса?
8

API-интерфейсы Yahoo предоставляет информацию о часовом поясе через обратную геолокацию.

Проверьте это.

http://developer.yahoo.com/geo/placefinder/guide/requests.html

  • 1
    Спасибо! Это прекрасно работает для меня, просто используйте флаг обратного геокодирования R и флаг T для часового пояса.
  • 0
    Для PHP я использую unserialize (file_get_contents ()) на базовом URL с location = lat% 20long & gflags = R & flags = PT, чтобы получить массив, который включает часовой пояс.
Показать ещё 1 комментарий
5

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

  • 6
    Я был довольно шутлив, когда сделал этот ответ, но только когда я снова наткнулся на этот вопрос, пытаясь решить проблему самостоятельно, я осознал, насколько бесполезна эта идея: upload.wikimedia.org/wikipedia/commons/e/e7 /Timezones2008.png (если вы не в международных водах)
  • 1
    Я смотрю на эту карту и думаю, что предложенный вами подход на самом деле довольно приличный для грубой оценки. Мне, например, нужно что-то довольно приблизительное (пару часов в порядке), и деление долготы на 15 выглядит хорошим решением. Из карты видно, что на международной линии дат очень мало населенных мест на земле, где деление на 15 может привести к ужасным ошибкам.
Показать ещё 2 комментария
4

Они выглядят довольно многообещающими -

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

  • 1
    Они предоставляют только приблизительное смещение от GMT, а не идентификатор часового пояса, и они не учитывают DST в большинстве стран мира, что делает его довольно непригодным, на мой взгляд.
  • 0
    Кажется, они ушли
3

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

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

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

0

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню