GeoIP2によるジオロケーションLink to this heading

GeoIP2 オブジェクトは、MaxMind geoip2 Python ライブラリ [1] のラッパーです。

IP ベースのジオロケーションを実行するために、 GeoIP2 オブジェクトには、バイナリ形式の GeoIP Country および City データセットと、geoip2 Python パッケージが必要です (CSV ファイルは使えません!)。これらは、例えば MaxMindDB-IP のウェブサイトからダウンロードできます。 GeoLite2-Country.mmdb.gz および GeoLite2-City.mmdb.gz ファイルを取得し、これらを GEOIP_PATH 設定に対応するディレクトリに解凍してください。

また、geoip2 が C ライブラリの高速な処理速度を活用できるようにするために、 libmaxminddb C library をインストールすることをおすすめします。

カスタマイズ例Link to this heading

以下はその使用例です:

Python console
>>> from django.contrib.gis.geoip2 import GeoIP2
>>> g = GeoIP2()
>>> g.country("google.com")
{'continent_code': 'NA',
 'continent_name': 'North America',
 'country_code': 'US',
 'country_name': 'United States',
 'is_in_european_union': False}
>>> g.city("72.14.207.99")
{'accuracy_radius': 1000,
 'city': 'Mountain View',
 'continent_code': 'NA',
 'continent_name': 'North America',
 'country_code': 'US',
 'country_name': 'United States',
 'is_in_european_union': False,
 'latitude': 37.419200897216797,
 'longitude': -122.05740356445312,
 'metro_code': 807,
 'postal_code': '94043',
 'region_code': 'CA',
 'region_name': 'California',
 'time_zone': 'America/Los_Angeles',
 'dma_code': 807,
 'region': 'CA'}
>>> 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 リファレンスLink to this heading

class GeoIP2(path=None, cache=0, country=None, city=None)Link to this definition

GeoIP オブジェクトにはデフォルトの設定を使用するため任意のパラメータは必要ありません。ただし、最低限、GEOIP_PATH 設定を設定して、GeoIP データセットの場所のパスを指定する必要があります。次の初期化キーワードを使用して、デフォルトの設定をカスタマイズできます。

キーワード引数

説明

path

GeoIP データが配置されているベースディレクトリまたは都市や国のデータファイル (.mmdb) が配置されているフルパスを指定します。都市と国のデータセットがこのディレクトリに配置されていることを前提としており、 GEOIP_PATH 設定を上書きします。

cache

GeoIP データセットをオープンする際のキャッシュ設定。それぞれ MODE_AUTO, MODE_MMAP_EXT, MODE_MMAP, GEOIP_INDEX_CACHE MODE_MEMORY C API の設定に対応する (0, 1, 2, 4, 8) 整数を指定します。デフォルトは 0 (MODE_AUTO) です。

country

GeoIP 国データファイルの名前。デフォルトは GeoLite2-Country.mmdb です。このキーワードを設定すると GEOIP_COUNTRY の設定が上書きされます。

city

GeoIP 都市データファイルの名前。デフォルトは GeoLite2-City.mmdb です。このキーワードを設定すると GEOIP_CITY の設定が上書きされます。

メソッドLink to this heading

インスタンス化Link to this heading

classmethod GeoIP2.open(path, cache)Link to this definition

このクラスメソッドは、指定されたデータベース・パスと指定されたキャッシュ設定から GeoIP オブジェクトをインスタンス化します。

クエリLink to this heading

以下のすべてのクエリメソッドは、IPv4Address または IPv6Address のインスタンス、文字列形式の IP アドレス、または完全修飾ドメイン名 (FQDN) を受け取ることができます。例えば、IPv4Address("205.186.163.125")"205.186.163.125"、および "djangoproject.com" はすべて有効なクエリパラメータとなります。

GeoIP2.city(query)Link to this definition

与えられたクエリの都市情報の辞書を返します。辞書内の値のうち、一部は未定義 (None) の場合があります。

GeoIP2.country(query)Link to this definition

指定されたクエリの国コードと国を含む辞書を返します。

GeoIP2.country_code(query)Link to this definition

クエリに対応する国コードを返します。

GeoIP2.country_name(query)Link to this definition

クエリに対応する国名を返します。

座標の取得Link to this heading

GeoIP2.coords(query)Link to this definition

(経度, 緯度) の座標タプルを返します。

GeoIP2.lon_lat(query)Link to this definition

(経度, 緯度) の座標タプルを返します。

GeoIP2.lat_lon(query)Link to this definition

(緯度, 経度) の座標タプルを返します。

GeoIP2.geos(query)Link to this definition

クエリに対応する Point オブジェクトを返します。

設定Link to this heading

GEOIP_PATHLink to this heading

文字列または pathlib.Path で、GeoIP データファイルがあるディレクトリを指定します。この設定は、 GeoIP2 オブジェクトを初期化する際に path キーワードで手動で指定しない限り 必須 です。

GEOIP_COUNTRYLink to this heading

GeoIP 国データファイルに使用するベース名。デフォルトは 'GeoLite2-Country.mmdb' です。

GEOIP_CITYLink to this heading

GeoIP 都市データファイルに使用するベースネーム。デフォルトは 'GeoLite2-City.mmdb'.

例外Link to this heading

exception GeoIP2ExceptionLink to this definition

GeoIP2 ラッパーでエラーが発生した際に発生する例外です。基盤となる geoip2 ライブラリからの例外は、変更されることなくそのまま渡されます。

脚注