测量对象 — Django 文档
来自菜鸟教程
Django/docs/2.2.x/ref/contrib/gis/measure
测量对象
django.contrib.gis.measure 模块包含的对象允许方便地表示距离和面积测量单位。 1 具体来说,它实现了两个对象,Distance 和 Area——这两个对象都可以通过 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
支持的单位
单位属性 | 全名或别名 |
---|---|
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
|
院子里(西尔斯) |
clarke_ft
|
克拉克的脚 |
chain
|
链条 |
chain_benoit
|
链(贝努瓦) |
chain_sears
|
链(西尔斯) |
british_chain_benoit
|
英国连锁店(Benoit 1895 B) |
british_chain_sears_truncated
|
英国连锁店(Sears 1922 截断) |
gold_coast_ft
|
黄金海岸脚 |
link
|
链接 |
link_benoit
|
链接(贝努瓦) |
link_sears
|
链接(西尔斯) |
clarke_link
|
克拉克的链接 |
fathom
|
噚 |
rod
|
竿 |
nm
|
海里 |
nm_uk
|
海里(英国) |
german_m
|
德国法定米 |
测量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 平方英里的 area 对象:
>>> 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 类的别名。
脚注
- 1
- Robert Coup 是测量对象的最初作者,其灵感来自 Brian Beck 在 geopy 中的工作和 Geoff Biggs 的机器人尺寸单位博士工作。