測定オブジェクト¶
django.contrib.gis.measure モジュールには、距離や面積の単位を便利に表現するためのオブジェクトが含まれています。 [1] 具体的には、Distance と Area の 2 つのオブジェクトを実装しており、それぞれ D と A の便利なエイリアスを介してアクセスできます。
カスタマイズ例¶
Distance オブジェクトは、単位のコンテキストを示すキーワード引数を用いてインスタンス化できます。以下の例では、異なる距離のオブジェクトを、キロメートル (km) とマイル (mi) の単位でインスタンス化しています。
>>> from django.contrib.gis.measure import D, Distance
>>> d1 = Distance(km=5)
>>> print(d1)
5.0 km
>>> d2 = D(mi=5)  # `D` is an alias for `Distance`
>>> print(d2)
5.0 mi
変換には、変換された距離の量を取得するために好ましい単位属性にアクセスします:
>>> print(d1.mi)  # Converting 5 kilometers to miles
3.10685596119
>>> print(d2.km)  # Converting 5 miles to kilometers
8.04672
また、距離オブジェクト間で算術演算を行うこともできます:
>>> print(d1 + d2)  # Adding 5 miles to 5 kilometers
13.04672 km
>>> print(d2 - d1)  # Subtracting 5 kilometers from 5 miles
1.89314403881 mi
Distance オブジェクト同士を掛け合わせると、その結果は、二乗の単位で表される Area オブジェクトとなります。
>>> a = d1 * d2  # Returns an Area object.
>>> print(a)
40.2336 sq_km
ユニットの属性略称を決定するには、unit_attname クラスメソッドを使用します:
>>> print(Distance.unit_attname("US Survey Foot"))
survey_ft
>>> print(Distance.unit_attname("centimeter"))
cm
サポートされる単位¶
| 単位 (unit) 属性 | フルネームまたはエイリアス | 
|---|---|
| 
 | Kilometre, Kilometer | 
| 
 | Mile | 
| 
 | Meter, Metre | 
| 
 | Yard | 
| 
 | Foot, Foot (International) | 
| 
 | U.S. Foot, US survey foot | 
| 
 | Inches | 
| 
 | Centimeter | 
| 
 | Millimetre, Millimeter | 
| 
 | Micrometer, Micrometre | 
| 
 | British foot (Sears 1922) | 
| 
 | British yard (Sears 1922) | 
| 
 | British chain (Sears 1922) | 
| 
 | Indian yard, Yard (Indian) | 
| 
 | Yard (Sears) | 
| 
 | Clarke's Foot | 
| 
 | Chain | 
| 
 | Chain (Benoit) | 
| 
 | Chain (Sears) | 
| 
 | British chain (Benoit 1895 B) | 
| 
 | British chain (Sears 1922 truncated) | 
| 
 | Gold Coast foot | 
| 
 | Link | 
| 
 | Link (Benoit) | 
| 
 | Link (Sears) | 
| 
 | Clarke's link | 
| 
 | Fathom | 
| 
 | Rod | 
| 
 | Furlong, Furrow Long | 
| 
 | Nautical Mile | 
| 
 | Nautical Mile (UK) | 
| 
 | German legal metre | 
注釈
Area の属性は、 Distance の属性と同じですが、プレフィックスが sq_ になっています (面積の単位は平方です) 。例えば、 Area(sq_m=2) は、2平方メートルを表す Area オブジェクトを作成します。
sq_ プレフィックスが付いた単位に加えて、次の単位も Area でサポートされています:
| 単位 (unit) 属性 | フルネームまたはエイリアス | 
|---|---|
| 
 | ヘクタール | 
ha 単位のサポートが追加されました。
測定API¶
Distance¶
- class Distance(**kwargs)[ソース]¶
- 距離オブジェクトを初期化するには、単位属性名 に対応するキーワードを渡します。例えば、以下は5マイルを表す距離オブジェクトを作成します。 - >>> dist = Distance(mi=5) - __getattr__(unit_att)¶
 - 与えられた単位属性に対応する単位で距離値を返します。例えば: - >>> print(dist.km) 8.04672 - classmethod unit_attname(unit_name)¶
 - 与えられた完全な単位名に対する距離単位の属性名を返します。例えば: - >>> Distance.unit_attname("Mile") 'mi' 
Area¶
- class Area(**kwargs)[ソース]¶
- 面積オブジェクトを初期化するには、単位属性名 に対応するキーワードを渡します。例えば、以下は5平方マイルを表す面積オブジェクトを作成します: - >>> a = Area(sq_mi=5) - __getattr__(unit_att)¶
 - 与えられた単位属性に対応する単位で面積値を返します。例えば: - >>> print(a.sq_km) 12.949940551680001 - classmethod unit_attname(unit_name)¶
 - 指定された完全な単位名に対する面積単位属性名を返します。例: - >>> Area.unit_attname("Kilometer") 'sq_km' 
脚注
 
          