本文介绍 django.contrib.gis.db.models.functions.Distance
的用法。
声明
class Distance(expr1, expr2, spheroid=None, **extra)
Availability
:MariaDB,MySQL,PostGIS,甲骨文,SpatiaLite
接受两个地理字段或表达式并返回它们之间的距离,作为
对象。在 MySQL 上,当坐标是大地时返回一个原始浮点值。Distance
在支持大地坐标距离计算的后端上,根据几何图形的 SRID 值自动选择适当的后端函数(例如 PostGIS 上的ST_DistanceSphere)。
当使用大地(角)坐标计算距离时,与默认 WGS84 (4326) SRID 的情况一样,您可以设置 spheroid
关键字参数来决定计算是否应基于简单的球体(不太准确,较少resource-intensive)或在球体上(更准确,更多 resource-intensive)。
在以下示例中,计算了从霍巴特市到 AustraliaCity
查询集中其他所有
的距离:PointField
>>> from django.contrib.gis.db.models.functions import Distance
>>> pnt = AustraliaCity.objects.get(name='Hobart').point
>>> for city in AustraliaCity.objects.annotate(distance=Distance('point', pnt)):
... print(city.name, city.distance)
Wollongong 990071.220408 m
Shellharbour 972804.613941 m
Thirroul 1002334.36351 m
...
注意
因为distance
属性是一个
对象,您可以轻松地以您选择的单位表示该值。例如,Distance
city.distance.mi
是以英里为单位的距离值,city.distance.km
是以公里为单位的距离值。有关使用详细信息和支持的单位列表,请参阅测量对象。
相关用法
- Python Django Distance用法及代码示例
- Python Django Distance.unit_attname用法及代码示例
- Python Django Distance.__getattr__用法及代码示例
- Python Dictionary update()用法及代码示例
- Python Dictionary setdefault()用法及代码示例
- Python Dictionary clear()用法及代码示例
- Python Dictionary pop()用法及代码示例
- Python Dictionary popitem()用法及代码示例
- Python Dictionary has_key()用法及代码示例
- Python Dictionary get()用法及代码示例
- Python Dictionary items()用法及代码示例
- Python Dictionary copy()用法及代码示例
- Python Dictionary values()用法及代码示例
- Python Dictionary keys()用法及代码示例
- Python Dictionary fromkeys()用法及代码示例
- Python Django DataSource用法及代码示例
- Python Decimal shift()用法及代码示例
- Python Decimal rotate()用法及代码示例
- Python Decimal max_mag()用法及代码示例
- Python Datetime.replace()用法及代码示例
- Python Django DateDetailView用法及代码示例
- Python DateTime转integer用法及代码示例
- Python Decimal as_integer_ratio()用法及代码示例
- Python Decimal is_subnormal()用法及代码示例
- Python DataFrame.to_excel()用法及代码示例
注:本文由纯净天空筛选整理自djangoproject.com大神的英文原创作品 django.contrib.gis.db.models.functions.Distance。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。