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


79

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


9
Чи існує для цього рішення, яке не стосується веб-сервісу? У мене є приклад використання, коли я маю спорадичне підключення до Інтернету, і мені все одно потрібно отримати цю інформацію на місцях. База даних географії часового поясу з API зверху буде корисною.
Саймон Гіллбі


Так, існує комерційна бібліотека, доступна на askgeo.com, яка робить саме це. Він написаний на Java, безпечний для потоків і дуже швидко (10000 запитів в секунду).
Джеймс Д,

1
Коли все сказано і зроблено, час - це просто вимір для планування. "Години" не відносяться до місцевого добового циклу, оскільки він щорічно змінюється навіть для певного місця. Це зробило б надзвичайно простіше, якби всі використовували сидеричний час у секундах, кілосекундах, мегасекундах тощо. KSec становить приблизно 17 хвилин, що є дуже людським відрізком часу. На добу приблизно 86,4 тис. С. Це не парне число, але що? Жоден день не буває точно такою ж довжиною, як попередній, тому що обертання планети сповільнюється.
Пітер Вон

Відповіді:


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

Сподіваюся, це корисно. Це, безумовно, було корисно для проекту, над яким я працював.


Чи є спосіб перетворити ваш ідентифікатор часового поясу (наприклад, "America / Los_Angeles") у .NET System.TimeZoneInfo?
Джуда Габріель Хіманго

Ця сторінка містить відображення між ідентифікаторами бази даних tz (також відомими як ідентифікатори Олсона) та ідентифікаторами часового поясу Windows: unicode.org/repos/cldr-tmp/trunk/diff/supplemental/…
Джеймс Д,

Хороша робота. Було б добре, якби можна було вказати дату, щоб компенсувати денне світло для іншого моменту часу. Додавання імені часового поясу Windows було б додатковим бонусом.
CodeGrue

1
Чи плануєте ви прийняти параметр зворотного виклику, щоб JSONP працював?
Джон Найландер,

8
Якщо я чогось не пропустив, це вже не безкоштовно: API можна спробувати, і він є безкоштовним для некомерційного та особистого користування. Проекти з відкритим кодом, студенти та приватні особи можуть використовувати його безкоштовно (відповідно до наших правил використання). Будь-який користувач, який бажає використовувати API в комерційних цілях, повинен сплатити плату за доступ у розмірі 200 доларів на рік.
Аррі

28

Погляньте на Geonames.org

Це безкоштовний веб-сервіс, який дозволяє отримувати багато інформації з long / lat

Вони також надають безкоштовну (і з відкритим кодом) бібліотеку Java Client для веб-служб GeoNames (бібліотека для іншої мови, що також надається: ruby, python, perl, lisp ...)

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

  • Знайдіть найближчу адресу
  • Знайдіть найближче перехрестя
  • Знайдіть поблизу вулиці
  • Піднесення
  • Часовий пояс

1
це дасть вам поточний час та компенсацію переходу на літній час та стандарт, але я маю проблеми з визначенням того, чи є дата в майбутньому під переходом на літній час
Скотт Кован,

для цього Календар Java, мабуть, буде більш корисним
Фредерік Морін,


8

API Yahoo places надає інформацію про часовий пояс за допомогою зворотного геолокації.

Перевір.

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


Для PHP я використовую unserialize (file_get_contents ()) на базовій URL-адресі з location = lat% 20long & gflags = R & flags = PT, щоб отримати масив, що включає часовий пояс.
Оуен,

1
URL-адреса запиту виглядає так: where.yahooapis.com/…
Джон Стівенс,

5

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


6
Коли я дав цю відповідь, я був досить розбірливим, але лише до того часу, коли я знову наткнувся на це питання, намагаючись вирішити проблему сам, я зрозумів, наскільки марною є ця ідея: upload.wikimedia.org/wikipedia/commons/e/e7 /Timezones2008.png (якщо ви не перебуваєте в міжнародних водах)
Том,

1
Я дивлюсь на цю карту і думаю, що запропонований вами підхід насправді є досить пристойним для грубої оцінки. Мені, наприклад, потрібно щось досить приблизне (пару годин виходу це нормально), і поділ довготи на 15 виглядає як хороше рішення. З карти видно, що на землі дуже мало населених місць навколо міжнародної лінії дат, де поділ на 15 призведе до жахливого помилки.
МБ.

2
Отримати часовий пояс з політичної точки зору за допомогою математики не завжди рекомендується. Але якщо потрібно знати, є ніч чи день, цей підхід можна вирішити програмно без будь-яких веб-послуг. Дякую за цю ідею.
JackPearse

Так, askgeo.com (повне розкриття інформації: я керую сайтом). Ви можете придбати бібліотеку Java, яка робить це на вашому власному сервері.
James D

4

Ерік Мюллер створив карти шейп-файлів для часових поясів бази даних tz (Olson). Однак кілька незначних застережень:

  1. Межі, що використовуються, часто є неофіційними.
  2. Він не оновлюється настільки регулярно, як сама база даних tz, тому деякі новостворені або відрегульовані зони можуть бути відсутніми.

Однак, якщо не брати до уваги, це здається дуже точним для більшості цілей.


4

Помер проект: - /

Це виглядає досить перспективно -

Посилання на архів:

https://web.archive.org/web/20150503145203/http://www.earthtools.org/webservices.htm


1
Вони надають лише вихідний зсув від GMT, а не ідентифікатор часового поясу, і вони не враховують літній час у більшості країн світу, що робить його досить непридатним для використання.
Джеймс Д,

Здається, їх немає
ліга

0

DRT Engine приймає широту, довготу та місцевий час і повертає зміщення часового поясу. Це може бути використано для встановлення часового поясу конкретного місця на майбутню дату.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.