GeoQuerySet T0>(模型=无 T1>)¶ T2>
本节中的空间查找可用于GeometryField
和RasterField
。
有关简介,请参阅spatial lookups introduction。 有关与特定空间后端兼容的查找的概述,请参阅spatial lookup compatibility table。
现在,空间查找支持栅格输入。
下面参考的所有示例都是给几何字段和输入给出的,但是查找可以和两边的栅格一样使用。 每当查找不支持栅格输入时,使用ST_Polygon函数,输入将自动转换为必要的几何。 另见introduction to raster lookups。
查询使用的数据库操作员可以分为三类:
N
:操作员本地在查找的两侧本地接受栅格,栅格输入可以与几何输入混合。B
:仅当查找的两边都接收光栅输入时,操作员才支持栅格。 栅格数据将自动转换为几何,以进行混合查找。C
。查找不具有本机光栅支持,所有栅格数据都将自动转换为几何。下面的示例显示了不同类型的光栅支持中的查找的SQL等同物。 相同的模式适用于所有空间查找。
案件 | 抬头 | SQL等效 |
---|---|---|
N,B | rast__contains = RST |
ST_Contains(rast, rst) |
N,B | rast__1__contains =(rst, 2) |
ST_Contains(rast, 1, 第一, 2) |
B,C | rast__contains = GEOM |
ST_Contains(ST_Polygon(rast), geom) |
B,C | rast__1__contains = GEOM |
ST_Contains(ST_Polygon(rast, 1), geom) |
B,C | poly__contains = RST |
ST_Contains(poly, ST_Polygon(rst)) |
B,C | poly__contains =(rst, 1) |
ST_Contains(poly, ST_Polygon(rst, 1)) |
C | rast__crosses = RST |
ST_Crosses(ST_Polygon(rast), ST_Polygon(rst)) |
C | rast__1__crosses =(rst, 2) |
ST_Crosses(ST_Polygon(rast, 1), ST_Polygon(rst, 2)) |
C | rast__crosses = GEOM |
ST_Crosses(ST_Polygon(rast), geom) |
C | poly__crosses = RST |
ST_Crosses(poly, ST_Polygon(rst)) |
只有PostGIS后端(在本节中称为PGRaster)才支持使用栅格的空间查找。
bbcontains
¶可用性:PostGIS,MySQL,SpatiaLite,PGRaster(Native)
测试几何或栅格字段的边界框是否完全包含查找几何的边界框。
例如:
Zipcode.objects.filter(poly__bbcontains=geom)
后端 | SQL等效 |
---|---|
PostGIS | poly 〜 geom |
MySQL | MBRContains(poly, geom) |
SpatiaLite | MbrContains(poly, geom) |
bboverlaps
¶可用性:PostGIS,MySQL,SpatiaLite,PGRaster(Native)
测试几何字段的边界框是否与查找几何的边界框重叠。
例如:
Zipcode.objects.filter(poly__bboverlaps=geom)
后端 | SQL等效 |
---|---|
PostGIS | poly && geom |
MySQL | MBROverlaps(poly, geom) |
SpatiaLite | MbrOverlaps(poly, geom) |
contained
¶可用性:PostGIS,MySQL,SpatiaLite,PGRaster(Native)
测试几何字段的边界框是否完全包含在查找几何的边界框中。
例如:
Zipcode.objects.filter(poly__contained=geom)
后端 | SQL等效 |
---|---|
PostGIS | poly @ geom |
MySQL | MBRWithin(poly, geom) |
SpatiaLite | MbrWithin(poly, geom) |
contains
¶可用性:PostGIS,Oracle,MySQL,SpatiaLite,PGRaster(Bilateral)
测试几何字段在空间上是否包含查找几何。
例如:
Zipcode.objects.filter(poly__contains=geom)
后端 | SQL等效 |
---|---|
PostGIS | ST_Contains(poly, geom) |
Oracle | SDO_CONTAINS(poly, geom) |
MySQL | MBRContains(poly, geom) |
SpatiaLite | 包含(poly, geom) |
contains_properly
¶可用性:PostGIS,PGRaster(Bilateral)
如果查找几何与几何字段的内部相交,但不与边界(或外部)相交,则返回true。
例如:
Zipcode.objects.filter(poly__contains_properly=geom)
后端 | SQL等效 |
---|---|
PostGIS | ST_ContainsProperly(poly, geom) |
coveredby
¶可用性:PostGIS,Oracle,PGRaster(Bilateral)
测试几何字段中没有点在查找几何体之外。 [3]
例如:
Zipcode.objects.filter(poly__coveredby=geom)
后端 | SQL等效 |
---|---|
PostGIS | ST_CoveredBy(poly, geom) |
Oracle | SDO_COVEREDBY(poly, geom) |
covers
¶可用性:PostGIS,Oracle,PGRaster(Bilateral)
测试查找几何中没有点在几何字段之外。 [3]
例如:
Zipcode.objects.filter(poly__covers=geom)
后端 | SQL等效 |
---|---|
PostGIS | ST_Covers(poly, geom) |
Oracle | SDO_COVERS(poly, geom) |
crosses
¶可用性:PostGIS,SpatiaLite,PGRaster(转换)
测试几何字段是否在空间上与查找几何交叉。
例如:
Zipcode.objects.filter(poly__crosses=geom)
后端 | SQL等效 |
---|---|
PostGIS | ST_Crosses(poly, geom) |
SpatiaLite | Crosses(poly, geom) |
disjoint
¶可用性:PostGIS,Oracle,MySQL,SpatiaLite,PGRaster(Bilateral)
测试几何字段是否与查找几何在空间上不相交。
例如:
Zipcode.objects.filter(poly__disjoint=geom)
后端 | SQL等效 |
---|---|
PostGIS | ST_Disjoint(poly, geom) |
Oracle | SDO_GEOM.RELATE(poly, 'DISJOINT', geom, 0.05) |
MySQL | MBRDisjoint(poly, geom) |
SpatiaLite | Disjoint(poly, geom) |
intersects
¶可用性:PostGIS,Oracle,MySQL,SpatiaLite,PGRaster(Bilateral)
测试几何字段在空间上与查找几何相交。
例如:
Zipcode.objects.filter(poly__intersects=geom)
后端 | SQL等效 |
---|---|
PostGIS | ST_Intersects(poly, geom) |
Oracle | SDO_OVERLAPBDYINTERSECT(poly, geom) |
MySQL | MBRIntersects(poly, geom) |
SpatiaLite | 相交(poly, geom) |
isvalid
¶可用性:PostGIS,Oracle,SpatiaLite
测试几何是否有效。
例如:
Zipcode.objects.filter(poly__isvalid=True)
后端 | SQL等效 |
---|---|
PostGIS,SpatiaLite | ST_IsValid(聚) |
Oracle | SDO_GEOM.VALIDATE_GEOMETRY_WITH_CONTEXT(poly, 0.05) = 'TRUE' |
添加了Oracle和SpatiaLite支持。
relate
¶可用性:PostGIS,Oracle,SpatiaLite,PGRaster(转换)
通过给定模式中给出的值,测试几何字段是否在空间上与查找几何相关。 此查找需要tuple参数,(geom, pattern)
; pattern
的形式将取决于空间后端:
在这些空间后端上,交叉图案是包括九个字符的串,其定义几何域的内部,边界和外部与查找几何体之间的交叉。
交叉图案矩阵只能使用以下字符:T
,2
,1
,F
或*
。 这种查找类型允许用户“微调”与DE-9IM模型一致的特定几何关系。 [1]
几何示例:
# A tuple lookup parameter is used to specify the geometry and
# the intersection pattern (the pattern here is for 'contains').
Zipcode.objects.filter(poly__relate=(geom, 'T*T***FF*'))
PostGIS SQL等效:
SELECT ... WHERE ST_Relate(poly, geom, 'T*T***FF*')
SpatiaLite SQL等价物:
SELECT ... WHERE Relate(poly, geom, 'T*T***FF*')
光栅示例:
Zipcode.objects.filter(poly__relate=(rast, 1, 'T*T***FF*'))
Zipcode.objects.filter(rast__2__relate=(rast, 1, 'T*T***FF*'))
PostGIS SQL等效:
SELECT ... WHERE ST_Relate(poly, ST_Polygon(rast, 1), 'T*T***FF*')
SELECT ... WHERE ST_Relate(ST_Polygon(rast, 2), ST_Polygon(rast, 1), 'T*T***FF*')
Here the relation pattern is comprised of at least one of the nine relation
strings: TOUCH
, OVERLAPBDYDISJOINT
, OVERLAPBDYINTERSECT
,
EQUAL
, INSIDE
, COVEREDBY
, CONTAINS
, COVERS
, ON
, and
ANYINTERACT
. 多个字符串可以与逻辑布尔运算符OR组合,例如,'inside+touch'
。 [2]关系字符串不区分大小写。
例如:
Zipcode.objects.filter(poly__relate=(geom, 'anyinteract'))
Oracle SQL等效:
SELECT ... WHERE SDO_RELATE(poly, geom, 'anyinteract')
touches
¶可用性:PostGIS,Oracle,MySQL,SpatiaLite
测试几何字段是否在空间上触及查找几何。
例如:
Zipcode.objects.filter(poly__touches=geom)
后端 | SQL等效 |
---|---|
PostGIS | ST_Touches(poly, geom) |
MySQL | MBRTouches(poly, geom) |
Oracle | SDO_TOUCH(poly, geom) |
SpatiaLite | 触摸(poly, geom) |
within
¶可用性:PostGIS,Oracle,MySQL,SpatiaLite,PGRaster(Bilateral)
测试几何字段是否在查找几何体内的空间。
例如:
Zipcode.objects.filter(poly__within=geom)
后端 | SQL等效 |
---|---|
PostGIS | ST_Within(poly, geom) |
MySQL | MBRWithin(poly, geom) |
Oracle | SDO_INSIDE(poly, geom) |
SpatiaLite | within(poly, geom) |
left
¶可用性:PostGIS,PGRaster(转换)
测试几何字段的边界框是否严格位于查找几何的边界框的左侧。
例如:
Zipcode.objects.filter(poly__left=geom)
PostGIS等效:
SELECT ... WHERE poly << geom
right
¶可用性:PostGIS,PGRaster(转换)
测试几何字段的边界框是否严格位于查找几何的边界框的右侧。
例如:
Zipcode.objects.filter(poly__right=geom)
PostGIS等效:
SELECT ... WHERE poly >> geom
overlaps_left
¶可用性:PostGIS,PGRaster(Bilateral)
测试几何字段的边界框是否与查找几何体的边界框的左侧重叠或位于左侧。
例如:
Zipcode.objects.filter(poly__overlaps_left=geom)
PostGIS等效:
SELECT ... WHERE poly &< geom
overlaps_right
¶可用性:PostGIS,PGRaster(Bilateral)
测试几何字段的边界框是否与查找几何的边界框的右侧重叠或位于右侧。
例如:
Zipcode.objects.filter(poly__overlaps_right=geom)
PostGIS等效:
SELECT ... WHERE poly &> geom
overlaps_above
¶可用性:PostGIS,PGRaster(转换)
测试几何字段的边界框是否与查找几何的边界框重叠或高于其。
例如:
Zipcode.objects.filter(poly__overlaps_above=geom)
PostGIS等效:
SELECT ... WHERE poly |&> geom
overlaps_below
¶可用性:PostGIS,PGRaster(转换)
测试几何字段的边界框是否重叠或低于查找几何的边界框。
例如:
Zipcode.objects.filter(poly__overlaps_below=geom)
PostGIS等效:
SELECT ... WHERE poly &<| geom
可用性:PostGIS,Oracle,SpatiaLite,PGRaster(Native)
有关执行距离查询的概述,请参阅distance queries introduction。
距离查找采用以下形式:
<field>__<distance lookup>=(<geometry/raster>, <distance value>[, 'spheroid'])
<field>__<distance lookup>=(<raster>, <band_index>, <distance value>[, 'spheroid'])
<field>__<band_index>__<distance lookup>=(<raster>, <band_index>, <distance value>[, 'spheroid'])
The value passed into a distance lookup is a tuple; the first two
values are mandatory, and are the geometry to calculate distances to,
and a distance value (either a number in units of the field, a
Distance
object, or a query expression
<ref/models/expressions>). 要将频带索引传递给查找,请使用第三个元组,其中第二个条目是频带索引。
在除dwithin
之外的每个距离查找中,可以包括可选元素'spheroid'
,以在具有大地坐标系的场上使用更准确的球体距离计算功能。
在PostgreSQL上,'spheroid'
选项使用ST_DistanceSpheroid而不是ST_DistanceSphere。 简单的ST_Distance功能与投影坐标系一起使用。 栅格转换为基于球体的查找的几何。
传递表达式作为距离值的能力被添加。
添加了对SQLite上'spheroid'
选项的支持。
distance_gt
¶返回模型,其中距查找几何体的几何字段的距离大于给定的距离值。
例如:
Zipcode.objects.filter(poly__distance_gt=(geom, D(m=5)))
后端 | SQL等效 |
---|---|
PostGIS | ST_Distance / ST_Distance_Sphere(poly, geom) &gt; 5 |
Oracle | SDO_GEOM.SDO_DISTANCE(poly, geom, 0.05) &gt; 5 |
SpatiaLite | 距离(poly, geom) &gt; 5 |
distance_gte
¶返回模型,其中与查找几何体的几何字段的距离大于或等于给定的距离值。
例如:
Zipcode.objects.filter(poly__distance_gte=(geom, D(m=5)))
后端 | SQL等效 |
---|---|
PostGIS | ST_Distance / ST_Distance_Sphere(poly, geom) &gt; = 5 |
Oracle | SDO_GEOM.SDO_DISTANCE(poly, geom, 0.05) &gt; = 5 |
SpatiaLite | 距离(poly, geom) &gt; = 5 |
distance_lt
¶返回模型,其中距查找几何体的几何字段的距离小于给定的距离值。
例如:
Zipcode.objects.filter(poly__distance_lt=(geom, D(m=5)))
后端 | SQL等效 |
---|---|
PostGIS | ST_Distance / ST_Distance_Sphere(poly, geom) 5 |
Oracle | SDO_GEOM.SDO_DISTANCE(poly, geom, 0.05) 5 |
SpatiaLite | 距离(poly, geom) 5 |
distance_lte
¶返回其中与查找几何体的几何字段的距离小于或等于给定距离值的模型。
例如:
Zipcode.objects.filter(poly__distance_lte=(geom, D(m=5)))
后端 | SQL等效 |
---|---|
PostGIS | ST_Distance / ST_Distance_Sphere(poly, geom) &lt; = 5 |
Oracle | SDO_GEOM.SDO_DISTANCE(poly, geom, 0.05) &lt; = 5 |
SpatiaLite | 距离(poly, geom) &lt; = 5 |
dwithin
¶返回模型,其中距查找几何体的几何域的距离在彼此的给定距离内。 请注意,如果目标几何图形位于投影系统中,则只能提供Distance
对象。 对于地理几何,您应该使用几何字段的单位(例如WGS84
的度数)。
例如:
Zipcode.objects.filter(poly__dwithin=(geom, D(m=5)))
后端 | SQL等效 |
---|---|
PostGIS | ST_DWithin(poly, geom, 5) |
Oracle | SDO_WITHIN_DISTANCE(poly, geom, 5) |
SpatiaLite | PtDistWithin(poly, geom, 5) |
添加了SpatiaLite支持。
GeoQuerySet
Methods¶自1.9版以来已弃用 现在,使用GeoQuerySet
方法不利于新的Geographic Database Functions。 尽管有点更冗长,但是它们在如何将它们组合起来以构建更复杂的查询方面更为强大。
GeoQuerySet
方法指定对查询集中每个地理字段上的每个空间操作执行空间操作,并将其输出存储在模型上的新属性中(通常是GeoQuerySet
方法)。
还有聚合GeoQuerySet
方法,它返回单个值而不是查询集。 本节将说明GeoDjango中可用的每个GeoQuerySet
方法的API和可用性。
注
可用的方法取决于您的空间后端。 有关详细信息,请参阅compatibility table。
除了少数例外,以下关键字参数可与所有GeoQuerySet
方法一起使用:
关键字参数 | 描述 |
---|---|
FIELD_NAME |
默认情况下, 在PostGIS上, |
model_att |
默认情况下, This keyword is required if
a method name clashes with an existing
|
可用性:PostGIS,Oracle,SpatiaLite
area
¶GeoQuerySet。
区域 T0>( ** kwargs T1>)¶ T2>
自1.9版以来已弃用 请改用Area
功能。
返回此GeoQuerySet的每个元素上的area
属性中的地理字段的面积。
distance
¶GeoQuerySet。
距离
(geom,** kwargs)¶自1.9版以来已弃用 使用Distance
功能。
此方法采用几何作为参数,并将distance
属性附加到返回查询集中包含距离(作为Distance
对象)到给定几何的每个模型。
In the following example (taken from the GeoDjango distance tests),
the distance from the Tasmanian city of Hobart to every other
PointField
in the AustraliaCity
queryset is calculated:
>>> pnt = AustraliaCity.objects.get(name='Hobart').point
>>> for city in AustraliaCity.objects.distance(pnt): print(city.name, city.distance)
Wollongong 990071.220408 m
Shellharbour 972804.613941 m
Thirroul 1002334.36351 m
Mittagong 975691.632637 m
Batemans Bay 834342.185561 m
Canberra 598140.268959 m
Melbourne 575337.765042 m
Sydney 1056978.87363 m
Hobart 0.0 m
Adelaide 1162031.83522 m
Hillsdale 1049200.46122 m
注
由于distance
属性是Distance
对象,因此您可以轻松地以所选单位表示值。 例如,city.distance.mi
是以英里为单位的距离值,city.distance.km
是以公里为单位的距离值。 有关使用详细信息和Supported units的列表,请参阅Measurement Objects。
以下方法不带参数,并附加几何对象GeoQuerySet
的每个元素,这是在几何字段上评估的关系函数的结果。
centroid
¶GeoQuerySet。
质心 T0>( ** kwargs T1>)¶ T2>
自1.9版以来已弃用 请改用Centroid
功能。
可用性:PostGIS,Oracle,SpatiaLite
返回GeoQuerySet
的每个元素上centroid
属性中地理字段的centroid
值。
envelope
¶GeoQuerySet。
包络 T0>( ** kwargs T1>)¶ T2>
自1.9版以来已弃用 使用Envelope
功能。
可用性:PostGIS,SpatiaLite
返回在envelope
的每个元素上的GeoQuerySet
属性中表示几何字段边界框的几何。
point_on_surface
¶GeoQuerySet。
point_on_surface T0>( ** kwargs T1>)¶ T2>
自1.9版以来已弃用 请改用PointOnSurface
功能。
可用性:PostGIS,Oracle,SpatiaLite
返回保证位于查询集的每个元素的point_on_surface
属性中几何字段表面上的Point几何图形;否则设置为无。
force_rhr
¶GeoQuerySet。
force_rhr T0>( ** kwargs T1>)¶ T2>
自1.9版以来已弃用 请改用ForceRHR
功能。
可用性:PostGIS
返回多边形/多边形的修改版本,其中所有顶点都遵循右手规则,并作为force_rhr
属性附加到查询集的每个元素。
reverse_geom
¶GeoQuerySet。
reverse_geom T0>( ** kwargs T1>)¶ T2>
自1.9版以来已弃用 请改用Reverse
功能。
可用性:PostGIS,Oracle
反转几何字段的坐标顺序,并作为reverse
属性附加到查询集的每个元素。
snap_to_grid
¶GeoQuerySet。
snap_to_grid
(* args,** kwargs)¶自1.9版以来已弃用 使用SnapToGrid
功能。
将输入几何的所有点都捕捉到网格。 几何如何捕捉到网格取决于给定多少数字(float,integer或long)参数。
参数数量 | 描述 |
---|---|
1 | 单个尺寸来捕捉X和Y网格。 |
2 | 用于捕捉网格的X和Y尺寸。 |
4 | X,Y尺寸和相应的X,Y原点。 |
transform
¶GeoQuerySet。
变换
(srid = 4326,** kwargs)¶自1.9版以来已弃用 使用Transform
功能。
可用性:PostGIS,Oracle,SpatiaLite
transform
方法将模型的几何字段转换为由srid
参数指定的空间参考系统。 如果未给出srid
,则默认使用4326(WGS84)。
注
与其他GeoQuerySet
方法不同,transform
存储其输出“in-place”。 换句话说,在模型上不存在变换的几何的新属性。
注
整数SRID对应的空间参考系可以取决于所使用的空间数据库。 换句话说,用于Oracle的SRID号码不一定与PostGIS使用的相同。
例如:
>>> qs = Zipcode.objects.all().transform() # Transforms to WGS84
>>> qs = Zipcode.objects.all().transform(32140) # Transforming to "NAD83 / Texas South Central"
>>> print(qs[0].poly.srid)
32140
>>> print(qs[0].poly)
POLYGON ((234055.1698884720099159 4937796.9232223574072123 ...
可用性:PostGIS,Oracle,SpatiaLite
以下方法都将几何作为参数,并将几何添加到作为操作结果的GeoQuerySet
的每个元素。
difference
¶GeoQuerySet。
差 T0>(的geom T1>)¶ T2>
自1.9版以来已弃用 使用Difference
功能。
在difference
的每个元素上的GeoQuerySet
属性中返回具有给定几何的地理字段的空间差异。
intersection
¶GeoQuerySet。
相交 T0>(的geom T1>)¶ T2>
自1.9版以来已弃用 使用Intersection
功能。
返回intersection
的每个元素上的GeoQuerySet
属性中的地理字段与给定几何的空间交集。
sym_difference
¶GeoQuerySet。
sym_difference T0>(的geom T1>)¶ T2>
自1.9版以来已弃用 请改用SymDifference
功能。
在sym_difference
的每个元素的GeoQuerySet
属性中返回具有给定几何的地理字段的对称差异。
以下GeoQuerySet
方法将返回具有转换为所请求的输出格式的每个模型中的geometry字段值的属性。
geohash
¶GeoQuerySet。
geohash
(precision = 20,** kwargs)¶自1.9版以来已弃用 请改用GeoHash
功能。
将geohash
属性附加到包含几何的GeoHash表示的查询集中的每个模型。
geojson
¶GeoQuerySet。
以GeoJSON T0>( ** kwargs T1>)¶ T2>
自1.9版以来已弃用 请改用AsGeoJSON
功能。
可用性:PostGIS,SpatiaLite
将geojson
属性附加到包含几何的GeoJSON表示的查询集中的每个模型。
关键字参数 | 描述 |
---|---|
精确 |
它可以用于指定GeoJSON表示中的坐标的有效数字的数量 - 默认值为8。 |
CRS |
如果您希望坐标参考系包含在返回的GeoJSON中,请将其设置为True 。 |
BBOX |
如果要将边界框包含在返回的GeoJSON中,请将此设置为True 。 |
gml
¶GeoQuerySet。
GML T0>( ** kwargs T1>)¶ T2>
自1.9版以来已弃用 请改用AsGML
功能。
可用性:PostGIS,Oracle,SpatiaLite
将gml
属性附加到包含几何的地理标记语言(GML)表示的查询集中的每个模型。
例如:
>>> qs = Zipcode.objects.all().gml()
>>> print(qs[0].gml)
<gml:Polygon srsName="EPSG:4326"><gml:OuterBoundaryIs>-147.78711,70.245363 ... -147.78711,70.245363</gml:OuterBoundaryIs></gml:Polygon>
关键字参数 | 描述 |
---|---|
精确 |
此关键字仅适用于PostGIS。 它可用于指定GML表示中坐标的有效数字的数量 - 默认值为8。 |
版 |
此关键字仅适用于PostGIS。 它可以用于指定所使用的GML版本,并且可以仅为2或3的值。 默认值为2。 |
kml
¶GeoQuerySet。
KML T0>( ** kwargs T1>)¶ T2>
自1.9版以来已弃用 请改用AsKML
功能。
可用性:PostGIS,SpatiaLite
将kml
属性附加到包含几何字段的锁孔标记语言(KML)表示的查询集中的每个模型。 应当注意,如果需要,KML的内容被转换为WGS84。
例如:
>>> qs = Zipcode.objects.all().kml()
>>> print(qs[0].kml)
<Polygon><outerBoundaryIs><LinearRing><coordinates>-103.04135,36.217596,0 ... -103.04135,36.217596,0</coordinates></LinearRing></outerBoundaryIs></Polygon>
关键字参数 | 描述 |
---|---|
精确 |
此关键字可用于指定KML表示中坐标的有效数字个数 - 默认值为8。 |
svg
¶GeoQuerySet。
SVG T0>( ** kwargs T1>)¶ T2>
自1.9版以来已弃用 请改用AsSVG
功能。
可用性:PostGIS,SpatiaLite
将svg
属性附加到查询集中包含几何字段的可缩放矢量图形(SVG)路径数据的每个模型。
关键字参数 | 描述 |
---|---|
相对的 |
如果设置为True ,则路径数据将根据相对移动来实现。 默认为False ,表示使用绝对移动。 |
精确 |
此关键字可用于指定SVG表示中坐标的有效数字个数 - 默认值为8。 |
mem_size
¶GeoQuerySet。
mem_size T0>( ** kwargs T1>)¶ T2>
自1.9版以来已弃用 请改用MemSize
功能。
可用性:PostGIS
返回几何字段在mem_size
的每个元素上的GeoQuerySet
属性中占用的内存大小(字节数)。
num_geom
¶GeoQuerySet。
num_geom T0>( ** kwargs T1>)¶ T2>
自1.9版以来已弃用 使用NumGeometries
函数。
可用性:PostGIS,Oracle,SpatiaLite
Returns the number of geometries in a num_geom
attribute on
each element of the GeoQuerySet
if the geometry field is a
collection (e.g., a GEOMETRYCOLLECTION
or MULTI*
field);
otherwise sets with None
.
Django提供一些GIS特定的聚合函数。 有关如何使用这些聚合函数的详细信息,请参阅the topic guide on aggregation。
关键字参数 | 描述 |
---|---|
公差 |
此关键字仅适用于Oracle。 它是由SDOAGGRTYPE 过程使用的公差值; Oracle文档有更多详细信息。 |
例如:
>>> from django.contrib.gis.db.models import Extent, Union
>>> WorldBorder.objects.aggregate(Extent('mpoly'), Union('mpoly'))
Collect
¶收集 T0>( geo_field T1>)¶ T2>
可用性:PostGIS,SpatiaLite
从几何列返回GEOMETRYCOLLECTION
或MULTI
几何对象。 这类似于Union
聚合的简化版本,除了它可以比执行并集快几个数量级,因为它只是将几何卷积为集合或多对象,而不关心解决边界。
Extent
¶程度 T0>( geo_field T1>)¶ T2>
可用性:PostGIS,Oracle,SpatiaLite
将geo_field
中的所有QuerySet
的范围返回为四元组,包括左下坐标和右上坐标。
例如:
>>> qs = City.objects.filter(name__in=('Houston', 'Dallas')).aggregate(Extent('poly'))
>>> print(qs['poly__extent'])
(-96.8016128540039, 29.7633724212646, -95.3631439208984, 32.782058715820)
Extent3D
¶ Extent3D T0>( geo_field T1>)¶ T2>
可用性:PostGIS
将geo_field
中的所有QuerySet
的3D范围作为六元组返回,包括左下坐标和右上坐标(每个坐标都具有x,y和z坐标) 。
例如:
>>> qs = City.objects.filter(name__in=('Houston', 'Dallas')).aggregate(Extent3D('poly'))
>>> print(qs['poly__extent3d'])
(-96.8016128540039, 29.7633724212646, 0, -95.3631439208984, 32.782058715820, 0)
MakeLine
¶ MakeLine T0>( geo_field T1>)¶ T2>
可用性:PostGIS,SpatiaLite
返回从QuerySet
中的点字段几何构造的LineString
。 目前,订购查询集没有任何效果。
添加了SpatiaLite支持。
例如:
>>> qs = City.objects.filter(name__in=('Houston', 'Dallas')).aggregate(MakeLine('poly'))
>>> print(qs['poly__makeline'])
LINESTRING (-95.3631510000000020 29.7633739999999989, -96.8016109999999941 32.7820570000000018)
Union
¶联盟 T0>( geo_field T1>)¶ T2>
可用性:PostGIS,Oracle,SpatiaLite
此方法返回一个GEOSGeometry
对象,其中包含查询集中每个几何的并集。 请注意,使用Union
是处理器密集型,可能需要大量的时间在大查询集。
注
如果使用此方法的计算时间过于昂贵,请考虑使用Collect
。
例如:
>>> u = Zipcode.objects.aggregate(Union(poly)) # This may take a long time.
>>> u = Zipcode.objects.filter(poly__within=bbox).aggregate(Union(poly)) # A more sensible approach.
脚注
[1] | 请参阅 OpenGIS SQL简单功能规范 2.1.13.2,p。 2-13(尺寸扩展九相交模型)。 |
[2] | 请参阅“Oracle Spatial和图形开发人员指南”中的 SDO_RELATE文档。 |
[3] | (1,2)有关此程序的说明,请阅读“包含空间谓词 Martin Davis(PostGIS开发人员)。 |
2017年9月6日