GeoIP2によるジオロケーション
GeoIP2 オブジェクトは、 MaxMind geoip2Pythonライブラリのラッパーです。 1
IPベースのジオロケーションを実行するには、 GeoIP2 オブジェクトに geoip2PythonライブラリとGeoIP Country
および/またはCity
が必要です。バイナリ形式のデータセット(CSVファイルは機能しません!)。 GeoLite2-Country.mmdb.gz
ファイルとGeoLite2-City.mmdb.gz
ファイルを取得し、:setting: `GEOIP_PATH` 設定に対応するディレクトリに解凍します。
さらに、 libmaxminddb Cライブラリをインストールして、geoip2
がCライブラリの高速化を活用できるようにすることをお勧めします。
例
その使用例を次に示します。
>>> from django.contrib.gis.geoip2 import GeoIP2
>>> g = GeoIP2()
>>> g.country('google.com')
{'country_code': 'US', 'country_name': 'United States'}
>>> g.city('72.14.207.99')
{'city': 'Mountain View',
'continent_code': 'NA',
'continent_name': 'North America',
'country_code': 'US',
'country_name': 'United States',
'dma_code': 807,
'is_in_european_union': False,
'latitude': 37.419200897216797,
'longitude': -122.05740356445312,
'postal_code': '94043',
'region': 'CA',
'time_zone': 'America/Los_Angeles'}
>>> g.lat_lon('salon.com')
(39.0437, -77.4875)
>>> g.lon_lat('uh.edu')
(-95.4342, 29.834)
>>> g.geos('24.124.1.80').wkt
'POINT (-97 38)'
APIリファレンス
- class GeoIP2(path=None, cache=0, country=None, city=None)
GeoIP
オブジェクトは、デフォルト設定を使用するためにパラメーターを必要としません。 ただし、少なくとも:setting: `GEOIP_PATH` 設定は、GeoIPデータセットの場所のパスで設定する必要があります。 次の初期化キーワードを使用して、デフォルトをカスタマイズできます。
キーワード引数 | 説明 |
---|---|
path
|
GeoIPデータが配置されているベースディレクトリ、または都市または国のデータファイル(.mmdb )が配置されているフルパス。 都市と国の両方のデータセットがこのディレクトリにあると想定しています。 :setting: `GEOIP_PATH` 設定を上書きします。
|
cache
|
GeoIPデータセットを開くときのキャッシュ設定。 MODE_AUTO 、MODE_MMAP_EXT 、MODE_MMAP 、およびGEOIP_INDEX_CACHE MODE_MEMORY それぞれCAPI設定。 デフォルトは0(MODE_AUTO )です。
|
country
|
GeoIP国データファイルの名前。 デフォルトはGeoLite2-Country.mmdb です。 このキーワードを設定すると、:setting: `GEOIP_COUNTRY` 設定が上書きされます。
|
city
|
GeoIP都市データファイルの名前。 デフォルトはGeoLite2-City.mmdb です。 このキーワードを設定すると、:setting: `GEOIP_CITY` 設定が上書きされます。
|
バージョン3.0で変更: pathlib.Path
path
のサポートが追加されました。
メソッド
インスタンス化
- classmethod GeoIP2.open(path, cache)
このクラスメソッドは、指定されたデータベースパスと指定されたキャッシュ設定からGeoIPオブジェクトをインスタンス化します。
クエリ
以下のすべてのクエリルーチンは、文字列IPアドレスまたは完全修飾ドメイン名(FQDN)のいずれかを取ることができます。 たとえば、'205.186.163.125'
と'djangoproject.com'
の両方が有効なクエリパラメータになります。
- GeoIP2.city(query)
指定されたクエリの都市情報の辞書を返します。 ディクショナリの値の一部が未定義である可能性があります(None
)。
- GeoIP2.country(query)
指定されたクエリの国コードと国を含む辞書を返します。
- GeoIP2.country_code(query)
クエリに対応する国コードを返します。
- GeoIP2.country_name(query)
クエリに対応する国名を返します。
座標検索
- GeoIP2.coords(query)
(経度、緯度)の座標タプルを返します。
- GeoIP2.lon_lat(query)
(経度、緯度)の座標タプルを返します。
- GeoIP2.lat_lon(query)
(緯度、経度)の座標タプルを返します。
- GeoIP2.geos(query)
クエリに対応する Point オブジェクトを返します。
設定
GEOIP_PATH
GeoIPデータファイルが配置されているディレクトリを指定する文字列またはpathlib.Path
。 この設定は、 GeoIP2 オブジェクトを初期化するときにpath
キーワードで手動で指定しない限り、必須です。
バージョン3.0で変更: pathlib.Path
のサポートが追加されました。
GEOIP_COUNTRY
GeoIP国データファイルに使用するベース名。 デフォルトは'GeoLite2-Country.mmdb'
です。
GEOIP_CITY
GeoIP都市データファイルに使用するベース名。 デフォルトは'GeoLite2-City.mmdb'
です。
例外
- exception GeoIP2Exception
- 基になる
geoip2
ライブラリの呼び出しでエラーが発生したときに発生する例外。
脚注
- 1
- GeoIP(R)は、MaxMind、Inc。の登録商標です。