测量对象¶
该 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
支持的单位¶
单位属性 |
完整名称或别名 |
---|---|
|
公里 |
|
英里 |
|
米 |
|
码 |
|
英尺(国际) |
|
美国英尺 |
|
英寸 |
|
厘米 |
|
毫米 |
|
微米 |
|
英制英尺(Sears 1922) |
|
英制码(Sears 1922) |
|
英制链(Sears 1922) |
|
印度码 |
|
码(Sears) |
|
克拉克英尺 |
|
链 |
|
链(Benoit) |
|
链(Sears) |
|
英制链(Benoit 1895 B) |
|
英制链(Sears 1922 截断) |
|
黄金海岸英尺 |
|
链节 |
|
链节(Benoit) |
|
链节(Sears) |
|
克拉克链节 |
|
英寻 |
|
杆 |
|
弗隆 |
|
海里 |
|
英国海里 |
|
德国法定米 |
除了具有 sq_
前缀的单位外,以下单位也受 Area
支持。
单位属性 |
完整名称或别名 |
---|---|
|
公顷 |
添加了对 ha
单位的支持。
测量 API¶
Distance
¶
Area
¶
- class Area(**kwargs)[source]¶
要初始化面积对象,请传入与所需的 单位属性名称 相对应的关键字,并设置所需的值。例如,以下代码创建一个表示 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'
脚注