GeoIP2によるジオロケーション

The GeoIP2 object is a wrapper for the MaxMind geoip2 Python library. [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 をインストールすることをおすすめします。

カスタマイズ例

以下はその使用例です:

>>> 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 リファレンス

class GeoIP2(path=None, cache=0, country=None, city=None)[ソース]

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 の設定が上書きされます。

メソッド

インスタンス化

classmethod GeoIP2.open(path, cache)[ソース]

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

バージョン 5.1 で非推奨: Use the GeoIP2() constructor instead.

クエリ

All the following querying routines may take an instance of IPv4Address or IPv6Address, a string IP address, or a fully qualified domain name (FQDN). For example, IPv4Address("205.186.163.125"), "205.186.163.125", and "djangoproject.com" would all be valid query parameters.

GeoIP2.city(query)[ソース]

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

GeoIP2.country(query)[ソース]

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

GeoIP2.country_code(query)[ソース]

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

GeoIP2.country_name(query)[ソース]

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

座標の取得

GeoIP2.coords(query)[ソース]

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

バージョン 5.1 で非推奨: Use GeoIP2.lon_lat() instead.

GeoIP2.lon_lat(query)[ソース]

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

GeoIP2.lat_lon(query)[ソース]

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

GeoIP2.geos(query)[ソース]

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

設定

GEOIP_PATH

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

GEOIP_COUNTRY

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

GEOIP_CITY

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

例外

exception GeoIP2Exception[ソース]

The exception raised when an error occurs in the GeoIP2 wrapper. Exceptions from the underlying geoip2 library are passed through unchanged.

脚注

[1]GeoIP(R) はMaxMind, Inc.の登録商標です。
Back to Top