当前位置: 首页>>编程示例 >>用法及示例精选 >>正文


Python Django Distance用法及代码示例

本文介绍 django.contrib.gis.db.models.functions.Distance 的用法。

声明

class Distance(expr1, expr2, spheroid=None, **extra)

Availability:MariaDB,MySQLPostGIS,甲骨文,SpatiaLite

接受两个地理字段或表达式并返回它们之间的距离,作为 Distance 对象。在 MySQL 上,当坐标是大地时返回一个原始浮点值。

在支持大地坐标距离计算的后端上,根据几何图形的 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 是以公里为单位的距离值。有关使用详细信息和支持的单位列表,请参阅测量对象。

相关用法


注:本文由纯净天空筛选整理自djangoproject.com大神的英文原创作品 django.contrib.gis.db.models.functions.Distance。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。