測量物件

django.contrib.gis.measure 模組包含允許方便表示距離和面積測量單位的物件。 [1] 具體來說,它實作了兩個物件,DistanceArea – 兩者都可以分別透過 DA 方便別名來存取。

範例

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

支援的單位

單位屬性

全名或別名

km

公里,Kilometer

mi

英里

m

公尺,Meter

yd

ft

英尺,英尺 (國際)

survey_ft

美制英尺,美國測量英尺

inch

英吋

cm

公分

mm

公釐,毫米

um

微米

british_ft

英制英尺 (Sears 1922)

british_yd

英制碼 (Sears 1922)

british_chain_sears

英制鏈 (Sears 1922)

indian_yd

印度碼,碼 (印度)

sears_yd

碼 (Sears)

clarke_ft

克拉克英尺

chain

chain_benoit

鏈 (Benoit)

chain_sears

鏈 (Sears)

british_chain_benoit

英制鏈 (Benoit 1895 B)

british_chain_sears_truncated

英制鏈 (Sears 1922 截斷)

gold_coast_ft

黃金海岸英尺

link

鏈結

link_benoit

鏈結 (Benoit)

link_sears

鏈結 (Sears)

clarke_link

克拉克鏈結

fathom

rod

furlong

弗隆,條長

nm

海浬

nm_uk

海浬 (英國)

german_m

德國法定公尺

注意

Area 屬性與 Distance 屬性相同,只是它們的前綴為 sq_ (面積單位本質上是平方)。例如,Area(sq_m=2) 建立一個代表兩平方公尺的 Area 物件。

除了具有 sq_ 前綴的單位外,Area 也支援下列單位

單位屬性

全名或別名

ha

公頃

在 Django 5.1 中變更

新增了對 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'
class D

Distance 類別的別名。

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'
class A

Area 類別的別名。

註腳

返回頂端