Получить широту и долготу из часового пояса в Java - PullRequest
0 голосов
/ 08 сентября 2011

Я пытаюсь написать приложение мирового времени, которое возвращает информацию о восходе и заходе солнца для данного часового пояса.Предполагается, что пользователь будет либо указывать смещение по Гринвичу, либо явно указывать часовой пояс.Затем приложение будет искать широту и долготу, используя найденный java.util.TimeZone (или, возможно, с учетом смещения по Гринвичу).Я понимаю, что часовые пояса, как правило, не очень точный способ получения информации о геолокации, поскольку они в основном основаны на политических границах, но, похоже, что-то подобное существует.На большинстве сайтов / apis, которые я найду, будет указан часовой пояс для широты и долготы, но я хочу выполнить обратный поиск (вернуть широту и долготу для данного часового пояса).Заранее спасибо за помощь.

Ответы [ 4 ]

2 голосов
/ 08 сентября 2011

Позвольте мне показать вам уровень ошибки, который вы можете ожидать, если вы сделаете это для моей родной страны, Новой Зеландии, которая находится в одном часовом поясе (за исключением отдаленных островов), но простирается на большой диапазон широт:

Invercargill, New Zealand
  Time zone: NZST
  Sunrise today: 7:05 am

Auckland, New Zealand
  Time zone: NZST
  Sunrise today: 6:34 am

Ожидайте аналогичных проблем с Китаем (вся страна в одном часовом поясе), Чили, Аргентиной и другими.

Хорошая идея, но, вероятно, неосуществимая.

1 голос
/ 08 сентября 2011

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

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

0 голосов
/ 09 сентября 2011

После прочтения каждого ответа, я думаю, я, вероятно, буду использовать Google Geocoding API , который возвращает широту / долготу и часовой пояс для данного физического адреса. Мне просто нужно добавить интерфейс, который позволяет пользователю вводить адрес, город или почтовый индекс, чтобы получать информацию из API и вычислять время восхода / захода солнца. Это лучше, чем пытаться хранить всю эту информацию локально в базе данных (которая была бы огромной). Спасибо всем, кто ответил.

0 голосов
/ 08 сентября 2011

Часовой пояс - это область, поэтому вам придется возвращать координаты границы этой области (и, возможно, добавить некоторый метод, чтобы проверить, находится ли данная точка внутри). Таким образом, вы должны начать с геоданных. Имейте в виду, что во многих странах есть летнее время, поэтому часовые пояса не постоянны.

...