测量对象¶
django.contrib.gis.measure
模块包含允许方便表示距离和面积计量单位的对象。 [1] 具体来说,它实现了两个对象,Distance
和 Area
,都可以分别通过 D
和 A
方便别名进行访问。
示例¶
距离
对象可以使用表示单位上下文的关键字参数进行实例化。在下面的示例中,两个不同的距离对象以千米 (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
两个 距离
对象相乘将产生一个 面积
对象,该对象使用平方单位
>>> 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 |
千米,千米 |
mi |
英里 |
m |
米,米 |
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 |
德国法定米制 |
测量 API¶
Distance
¶
面积
¶
-
类
面积
(**kwargs)[源代码]¶ 要初始化面积对象,请传入与所需的 单位属性名称 对应的关键字,并设置所需的值。例如,以下内容创建一个表示 5 平方英里的面积对象
>>> a = Area(sq_mi=5)
-
__getattr__
(unit_att)¶
返回与给定单位属性相对应的单位中的面积值。例如
>>> print(a.sq_km) 12.949940551680001
-
类方法
unit_attname
(unit_name)¶
返回给定完整单位名称的面积单位属性名称。例如
>>> Area.unit_attname("Kilometer") 'sq_km'
-
脚注
[1] | Robert Coup 是测量对象的最初作者,并受到 Brian Beck 在 geopy 中的工作以及 Geoff Biggs 在机器人学维度单位方面的博士论文的启发。 |