26

緯度と経度の座標のタイム ゾーンを取得しようとしていますが、いくつか問題があります。間違いはおそらく非常に基本的なものです。

データベースに約 600 行のテーブルがあります。各行には、世界のどこかの緯度経度座標が含まれており、これらの座標を関数に入力してタイム ゾーンを取得したいと考えています。目的は、これらの 600 の場所のそれぞれにローカル タイム スタンプを持つイベントを UTC 時間に変換することです。

コードを使用して地理座標からタイムゾーンを取得するブログ投稿を見つけました。

コードを実行しようとすると、エラーが発生しますgeonames is not defined。geonames のアカウントを申請しました。

関数ファイルを間違ったディレクトリまたは単純なものに保存しただけだと思います。誰でも助けてくれますか

#-------------------------------------------------------------------------------
# Converts latitude longitude into a time zone
# REF: https://gist.github.com/pamelafox/2288222
# REF: http://blog.pamelafox.org/2012/04/converting-addresses-to-timezones-in.html
#-------------------------------------------------------------------------------

geonames_client = geonames.GeonamesClient('Username_alpha')
geonames_result = geonames_client.find_timezone({'lat': 48.871236, 'lng': 2.77928})
user.timezone = geonames_result['timezoneId']
4

4 に答える 4

17

timezonefinderを使用して、目的に適したルックアップを行うことができました。

import datetime
import timezonefinder, pytz

tf = timezonefinder.TimezoneFinder()

# From the lat/long, get the tz-database-style time zone name (e.g. 'America/Vancouver') or None
timezone_str = tf.certain_timezone_at(lat=49.2827, lng=-123.1207)

if timezone_str is None:
    print "Could not determine the time zone"
else:
    # Display the current time in that time zone
    timezone = pytz.timezone(timezone_str)
    dt = datetime.datetime.utcnow()
    print "The time in %s is %s" % (timezone_str, dt + timezone.utcoffset(dt))

timezonefinder のメソッドとその制限については、pypi ページからリンクされているドキュメントで説明されています。

timezonefinder同名のパッケージに含まpytzれています。pip

于 2018-01-13T23:49:15.853 に答える
1
import requests
lat = 48.871236 ## your latitude
lon = 2.77928 ## your longitude

url = "http://api.geonames.org/timezoneJSON?formatted=true&lat={}&lng={}&username=demo".format(lat,lon)

r = requests.get(url) ## Make a request
return r.json()['timezoneId'] ## return the timezone
于 2016-04-29T11:01:16.553 に答える