# Django 5.2.8 ドキュメント

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

## 概要

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

IP ベースのジオロケーションを実行するために、 `GeoIP2` オブジェクトには、バイナリ形式の GeoIP `Country` および `City` データセットと、geoip2 Python パッケージが必要です (CSV ファイルは使えません！)。これらは、例えば MaxMind や DB-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` の設定が上書きされます。

## メソッド

### クエリ

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

GeoIP2.city(query)

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

GeoIP2.country(query)

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

GeoIP2.country_code(query)

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

GeoIP2.country_name(query)

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

### 座標の取得

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

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

脚注

[1]

GeoIP(R) はMaxMind, Inc.の登録商標です。