本页中记录的函数允许用户访问要在Django的注释、聚合或筛选器中使用的地理数据库函数。
示例:
>>> from django.contrib.gis.db.models.functions import Length
>>> Track.objects.annotate(length=Length("line")).filter(length__gt=100)
并非所有后端都支持所有函数,因此请参阅每个函数的文档以查看数据库后端是否支持要使用的函数。如果在后端调用不支持它的地理函数,您将得到 NotImplementedError
例外。
函数摘要:
测量 |
关系 |
操作 |
编辑 |
输入格式 |
输出格式 |
其他 |
---|---|---|---|---|---|---|
Area
¶Availability :MariaDB, MySQL, Oracle, PostGIS ,SpatiaLite
接受单个地理字段或表达式,并将字段的区域作为 Area
措施。
没有LWGEOM/RTTOPO的MySQL和SpatiaLite不支持地理SRSS上的面积计算。
AsGeoJSON
¶Availability :MariaDB, MySQL 、Oracle、 PostGIS ,SpatiaLite
接受单个地理字段或表达式,并返回 GeoJSON 几何图形的表示。请注意,结果不是完整的GeoJackson结构,而只是 geometry
GeojSON结构的关键内容。另见 GeoJSON 串行化器 。
示例:
>>> City.objects.annotate(json=AsGeoJSON("point")).get(name="Chicago").json
{"type":"Point","coordinates":[-87.65018,41.85039]}
关键字参数 |
描述 |
---|---|
|
将此选项设置为 |
|
将此选项设置为 |
|
它可以用于指定GeoJSON表示中坐标的有效位数--默认值为8。忽视Oracle。 |
AsGML
¶可用性 甲骨文, PostGIS SpatiaLite
接受单个地理字段或表达式并返回 `Geographic Markup Language (GML)`_ _几何图形的表示。
示例:
>>> qs = Zipcode.objects.annotate(gml=AsGML("poly"))
>>> print(qs[0].gml)
<gml:Polygon srsName="EPSG:4326"><gml:OuterBoundaryIs>-147.78711,70.245363 ...
-147.78711,70.245363</gml:OuterBoundaryIs></gml:Polygon>
关键字参数 |
描述 |
---|---|
|
指定GML表示中坐标的有效位数——默认值为8。在Oracle上忽略。 |
|
指定要使用的GML版本:2(默认)或3。 |
AsKML
¶可用性 : PostGIS SpatiaLite
接受单个地理字段或表达式并返回 `Keyhole Markup Language (KML)`_ _几何图形的表示。
示例:
>>> qs = Zipcode.objects.annotate(kml=AsKML("poly"))
>>> print(qs[0].kml)
<Polygon><outerBoundaryIs><LinearRing><coordinates>-103.04135,36.217596,0 ...
-103.04135,36.217596,0</coordinates></LinearRing></outerBoundaryIs></Polygon>
关键字参数 |
描述 |
---|---|
|
此关键字可用于指定kml表示中坐标的有效位数——默认值为8。 |
AsSVG
¶可用性 : PostGIS SpatiaLite
接受单个地理字段或表达式并返回 `Scalable Vector Graphics (SVG)`_ _几何图形的表示。
关键字参数 |
描述 |
---|---|
|
如果设置为 |
|
此关键字可用于指定SVG表示中坐标的有效位数——默认值为8。 |
AsWKB
¶Availability :MariaDB, MySQL 、Oracle、 PostGIS ,SpatiaLite
接受单个地理字段或表达式,并返回 Well-known binary (WKB) 几何图形的表示形式。
示例:
>>> bytes(City.objects.annotate(wkb=AsWKB("point")).get(name="Chelyabinsk").wkb)
b'\x01\x01\x00\x00\x00]3\xf9f\x9b\x91K@\x00X\x1d9\xd2\xb9N@'
AsWKT
¶Availability :MariaDB, MySQL 、Oracle、 PostGIS ,SpatiaLite
接受单个地理字段或表达式,并返回 Well-known text (WKT) 几何图形的表示形式。
示例:
>>> City.objects.annotate(wkt=AsWKT("point")).get(name="Chelyabinsk").wkt
'POINT (55.137555 61.451728)'
Azimuth
¶Availability : PostGIS ,SpatiaLite(LWGEOM/RTTOPO)
返回由给定点几何图形定义的段的方位角(以弧度为单位),或 None
如果两点重合。方位角是从北方参照的角度,并且是正顺时针方向:北方。= 0
东方= π/2
南= π
韦斯特 3π/2
.
BoundingCircle
¶Availability : PostGIS , Oracle ,SpatiaLite 5.1+
接受单个地理字段或表达式,并返回可以完全包含几何图形的最小圆形多边形。
这个 num_seg
参数仅用于PostGIS。
增加了对SpatiaLite 5.1+的支持。
Centroid
¶Availability :MariaDB, MySQL , PostGIS 、Oracle、SpatiaLite
接受单个地理字段或表达式并返回 centroid
几何图形的值。
ClosestPoint
¶Availability : PostGIS ,SpatiaLite
接受两个地理字段或表达式,并返回几何图形A上最接近几何图形B的二维点。
Difference
¶Availability :MariaDB, MySQL , PostGIS 、Oracle、SpatiaLite
接受两个地理字段或表达式并返回几何差异,即几何A中不与几何B相交的部分。
Distance
¶Availability :MariaDB, MySQL , PostGIS 、Oracle、SpatiaLite
接受两个地理字段或表达式并返回它们之间的距离,作为 Distance
对象。在MySQL上,当坐标为大地坐标时,返回原始浮点值。
在支持大地坐标距离计算的后端,根据几何体的SRID值(例如 ST_DistanceSphere 后地理信息系统)
当使用大地坐标(角度)坐标计算距离时,与默认的wgs84(4326)srid一样,可以设置 spheroid
关键字参数,用于确定计算是基于简单球体(不太准确、资源密集型)还是基于球体(更准确、资源密集型)。
在下面的示例中,从霍巴特市到其他城市的距离 PointField
在 AustraliaCity
计算查询集:
>>> 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
...
Envelope
¶Availability :MariaDB, MySQL , Oracle , PostGIS ,SpatiaLite
接受单个地理字段或表达式,并返回表示几何图形边界框的几何图形。
ForcePolygonCW
¶可用性 : PostGIS SpatiaLite
接受单个地理字段或表达式并返回多边形/多多边形的修改版本,其中所有外环顺时针方向,所有内环逆时针方向。非多边形几何体返回时不变。
FromWKB
¶Availability :MariaDB, MySQL 、Oracle、 PostGIS ,SpatiaLite
从以下位置创建几何图形 Well-known binary (WKB) 代表权。可选的 srid
参数允许指定结果几何图形的SRID。 srid
在Oracle上被忽略。
这个 srid
添加了参数。
FromWKT
¶Availability :MariaDB, MySQL 、Oracle、 PostGIS ,SpatiaLite
从以下位置创建几何图形 Well-known text (WKT) 代表权。可选的 srid
参数允许指定结果几何图形的SRID。 srid
在Oracle上被忽略。
这个 srid
添加了参数。
GeoHash
¶Availability : MySQL , PostGIS ,SpatiaLite(LWGEOM/RTTOPO)
接受单个地理字段或表达式并返回 GeoHash _几何图形的表示。
这个 precision
关键字参数控制结果中的字符数。
GeometryDistance
¶Availability : PostGIS
接受两个地理字段或表达并返回它们之间的距离。当用于 order_by()
条款,它提供索引辅助的最近邻结果集。
Intersection
¶Availability :MariaDB, MySQL , PostGIS 、Oracle、SpatiaLite
接受两个地理字段或表达式,并返回它们之间的几何交集。
IsEmpty
¶Availability : PostGIS
接受地理字段或表达式并测试值是否为空几何图形。退货 True
如果它的值为空并且 False
否则的话。
IsValid
¶Availability : MySQL , PostGIS 、Oracle、SpatiaLite
接受地理字段或表达式,并测试值的格式是否正确。退换商品 True
如果其值是有效的几何图形并且 False
否则。
Length
¶Availability :MariaDB, MySQL 、Oracle、 PostGIS ,SpatiaLite
接受单个地理行字符串或多行字符串字段或表达式,并将其长度作为 Distance
措施。
在Postgis和Spatialite上,当坐标为大地坐标(角度)时,可以指定计算是基于简单球体(不太精确,资源密集度较低)还是基于球体(更准确,资源密集度较高),使用 spheroid
关键字参数。
MySQL不支持地理SRSE上的长度计算。
LineLocatePoint
¶可用性 : PostGIS SpatiaLite
返回0到1之间的浮点值,表示上最近点的位置 linestring
到给定的 point
,作为二维线条长度的一部分。
MakeValid
¶Availability : PostGIS ,SpatiaLite(LWGEOM/RTTOPO)
接受地理字段或表达式,并尝试将该值转换为有效的几何图形,而不丢失任何输入顶点。返回已经有效的几何图形时不做任何更改。简单多边形可能成为多多边形,其结果可能比输入的尺寸小。
MemSize
¶可用性 : PostGIS
接受单个地理字段或表达式,并返回几何字段所占用的内存大小(字节数)。
NumGeometries
¶Availability :MariaDB, MySQL , PostGIS 、Oracle、SpatiaLite
接受单个地理字段或表达式,如果几何字段是集合(例如 GEOMETRYCOLLECTION
或 MULTI*
字段)。对于单个几何图形返回1。
在mysql上,返回 None
对于单个几何图形。
NumPoints
¶Availability :MariaDB, MySQL , PostGIS 、Oracle、SpatiaLite
接受单个地理字段或表达式,并返回几何图形中的点数。
在mysql上,返回 None
对于任何非``linestring``几何图形。
Perimeter
¶可用性 : PostGIS ,甲骨文,太空石
接受单个地理字段或表达式,并将几何字段的周长作为 Distance
对象。
PointOnSurface
¶Availability : PostGIS 、MariaDB、Oracle、SpatiaLite
接受单个地理字段或表达式并返回 Point
几何体保证位于场的表面;否则返回 None
.
Reverse
¶可用性 : PostGIS ,甲骨文,太空石
接受单个地理字段或表达式,并返回具有反转坐标的几何图形。
Scale
¶可用性 : PostGIS SpatiaLite
接受单个地理字段或表达式,并通过将其与缩放坐标相乘返回几何图形。 x
, y
,并且可以选择 z
参数。
SnapToGrid
¶可用性 : PostGIS SpatiaLite
接受单个地理字段或表达式,并返回一个几何图形,其中所有点都捕捉到给定网格。几何图形如何捕捉到网格取决于给定了多少个数值(浮点、整数或长)参数。
参数个数 |
描述 |
---|---|
1 |
用于捕捉X和Y轴网的单个大小。 |
2 |
要对齐网格的X和Y大小。 |
4 |
X,Y大小和相应的X,Y原点。 |
SymDifference
¶Availability :MariaDB, MySQL , PostGIS 、Oracle、SpatiaLite
接受两个地理字段或表达式,并返回给定参数之间的几何对称差(不带交叉点的并集)。
Transform
¶可用性 : PostGIS ,甲骨文,太空石
接受地理字段或表达式和SRID整数代码,并将转换后的几何图形返回到由 srid
参数。
备注
整数srid对应的空间引用系统可能取决于所使用的空间数据库。换句话说,用于Oracle的SRID编号不一定与PostGIS使用的编号相同。
Translate
¶可用性 : PostGIS SpatiaLite
接受单个地理字段或表达式,并返回坐标偏移量为 x
, y
,并且可以选择 z
数字参数。
Union
¶Availability :MariaDB, MySQL , PostGIS 、Oracle、SpatiaLite
接受两个地理字段或表达式,并返回两个几何图形的并集。
7月 22, 2024