Référence des API QuerySet GISLien vers cette rubrique

Recherches spatialesLien vers cette rubrique

Les requêtes spatiales de cette section sont disponibles à la fois pour GeometryField et RasterField.

Pour une vue générale, consultez l’introduction sur les recherches spatiales. Pour un aperçu sur la compatibilité des diverses requêtes en fonction du moteur spatial utilisé, référez-vous au tableau de compatibilité des recherches spatiales.

Requêtes avec matricesLien vers cette rubrique

Tous les exemples dans la référence ci-dessous sont donnés pour des champs et des entrées géométriques, mais ces requêtes peuvent très bien être utilisées avec des objets matriciels des deux côtés. Chaque fois qu’une requête ne prend pas en charge les entrées matricielles, l’entrée est automatiquement convertie en objet géométrique quand c’est nécessaire en utilisant la fonction ST_Polygon. Voir aussi l’introduction aux requêtes matricielles.

Les opérateurs de base de données utilisés par les requêtes peuvent être divisés en trois catégories :

  • Prise en charge matricielle native N: l’opérateur accepte nativement les objets matriciels des deux côtés de la requête et les entrées matricielles peuvent être mélangées avec des entrées géométriques.

  • Prise en charge matricielle bilatérale B: l’opérateur ne prend en charge les objets matriciels seulement si les deux côtés de la requête reçoivent des entrées matricielles. Les données matricielles sont automatiquement converties en objets géométriques en cas de requêtes mixtes.

  • Prise en charge par conversion géométrique C. La requête ne prend pas en charge nativement les objets matriciels, toutes les données matricielles sont automatiquement converties en objets géométriques.

Les exemples ci-dessous montrent le code SQL équivalent pour les requêtes dans les différents types de prise en charge matricielle. Le même schéma s’applique pour toutes les requêtes spatiales.

Cas

Requête

Équivalent SQL

N, B

rast__contains=rst

ST_Contains(rast, rst)

N, B

rast__1__contains=(rst, 2)

ST_Contains(rast, 1, rst, 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))

Les requêtes spatiales avec des objets matriciels ne sont prises en charge que pour le moteur PostGIS (désigné par PGRaster dans cette section).

bbcontainsLien vers cette rubrique

Disponibilité : PostGIS, MariaDB, MySQL, SpatiaLite, PGRaster (natif)

Teste si le rectangle englobant du champ géométrique ou matriciel contient complètement le rectangle englobant de la recherche géométrique.

Exemple :

Code
Zipcode.objects.filter(poly__bbcontains=geom)

Moteur

Équivalent SQL

PostGIS

poly ~ geom

MariaDB

MBRContains(poly, geom)

MySQL

MBRContains(poly, geom)

SpatiaLite

MbrContains(poly, geom)

bboverlapsLien vers cette rubrique

Disponibilité : PostGIS, MariaDB, MySQL, SpatiaLite, PGRaster (natif)

Teste si le rectangle englobant du champ géométrique recouvre partiellement le rectangle englobant de la recherche géométrique.

Exemple :

Code
Zipcode.objects.filter(poly__bboverlaps=geom)

Moteur

Équivalent SQL

PostGIS

poly && geom

MariaDB

MBROverlaps(poly, geom)

MySQL

MBROverlaps(poly, geom)

SpatiaLite

MbrOverlaps(poly, geom)

containedLien vers cette rubrique

Disponibilité : PostGIS, MariaDB, MySQL, SpatiaLite, PGRaster (natif)

Teste si le rectangle englobant du champ géométrique est complètement contenu dans le rectangle englobant de la recherche géométrique.

Exemple :

Code
Zipcode.objects.filter(poly__contained=geom)

Moteur

Équivalent SQL

PostGIS

poly @ geom

MariaDB

MBRWithin(poly, geom)

MySQL

MBRWithin(poly, geom)

SpatiaLite

MbrWithin(poly, geom)

containsLien vers cette rubrique

Disponibilité : PostGIS, Oracle, MariaDB, MySQL, SpatiaLite, PGRaster (bilatéral)

Teste si le champ géométrique contient spatialement l’objet géométrique de la recherche.

Exemple :

Code
Zipcode.objects.filter(poly__contains=geom)

Moteur

Équivalent SQL

PostGIS

ST_Contains(poly, geom)

Oracle

SDO_CONTAINS(poly, geom)

MariaDB

ST_Contains(poly, geom)

MySQL

ST_Contains(poly, geom)

SpatiaLite

Contains(poly, geom)

contains_properlyLien vers cette rubrique

Disponibilité : PostGIS, PGRaster (bilatéral)

Renvoie True si l’objet géométrique de la recherche a une intersection avec l’intérieur du champ géométrique, mais pas avec ses limites (ou extérieur).

Exemple :

Code
Zipcode.objects.filter(poly__contains_properly=geom)

Moteur

Équivalent SQL

PostGIS

ST_ContainsProperly(poly, geom)

coveredbyLien vers cette rubrique

Disponibilité: PostGIS, Oracle, MariaDB, MySQL, PGRaster (bilatéral), SpatiaLite

Teste si aucun point du champ géométrique n’est en dehors de l’objet géométrique de la recherche. [3]

Exemple :

Code
Zipcode.objects.filter(poly__coveredby=geom)

Moteur

Équivalent SQL

PostGIS

ST_CoveredBy(poly, geom)

Oracle

SDO_COVEREDBY(poly, geom)

MariaDB

MBRCoveredBy(poly, geom)

MySQL

MBRCoveredBy(poly, geom)

SpatiaLite

CoveredBy(poly, geom)

coversLien vers cette rubrique

Disponibilité: PostGIS, Oracle, MySQL, PGRaster (bilatéral), SpatiaLite

Teste si aucun point de l’objet géométrique de la recherche n’est en dehors du champ géométrique. [3]

Exemple :

Code
Zipcode.objects.filter(poly__covers=geom)

Moteur

Équivalent SQL

PostGIS

ST_Covers(poly, geom)

Oracle

SDO_COVERS(poly, geom)

MySQL

MBRCovers(poly, geom)

SpatiaLite

Covers(poly, geom)

crossesLien vers cette rubrique

Disponibilité : PostGIS, MariaDB, MySQL, SpatiaLite, PGRaster (conversion)

Teste si le champ géométrique se croise spatialement avec l’objet géométrique de la recherche.

Exemple :

Code
Zipcode.objects.filter(poly__crosses=geom)

Moteur

Équivalent SQL

PostGIS

ST_Crosses(poly, geom)

MariaDB

ST_Crosses(poly, geom)

MySQL

ST_Crosses(poly, geom)

SpatiaLite

Crosses(poly, geom)

disjointLien vers cette rubrique

Disponibilité : PostGIS, Oracle, MariaDB, MySQL, SpatiaLite, PGRaster (bilatéral)

Teste si le champ géométrique est spatialement distinct de l’objet géométrique de la recherche.

Exemple :

Code
Zipcode.objects.filter(poly__disjoint=geom)

Moteur

Équivalent SQL

PostGIS

ST_Disjoint(poly, geom)

Oracle

SDO_GEOM.RELATE(poly, 'DISJOINT', geom, 0.05)

MariaDB

ST_Disjoint(poly, geom)

MySQL

ST_Disjoint(poly, geom)

SpatiaLite

Disjoint(poly, geom)

equalsLien vers cette rubrique

Disponibilité : PostGIS, Oracle, MariaDB, MySQL, SpatiaLite, PGRaster (conversion)

Teste si le champ géométrique est spatialement égal à l’objet géométrique de la recherche.

Exemple :

Code
Zipcode.objects.filter(poly__equals=geom)

Moteur

Équivalent SQL

PostGIS

ST_Equals(poly, geom)

Oracle

SDO_EQUAL(poly, geom)

MariaDB

ST_Equals(poly, geom)

MySQL

ST_Equals(poly, geom)

SpatiaLite

Equals(poly, geom)

exact, same_asLien vers cette rubrique

Disponibilité : PostGIS, Oracle, MariaDB, MySQL, SpatiaLite, PGRaster (bilatéral)

Teste si le champ géométrique est « égal » à l’objet géométrique donné. Avec Oracle, MySQL et Spatialite, le test se fait sur l’égalité spatiale, alors qu’avec PostGIS, le test compare l’égalité des boîtes englobantes.

Exemple :

Code
Zipcode.objects.filter(poly=geom)

Moteur

Équivalent SQL

PostGIS

poly ~= geom

Oracle

SDO_EQUAL(poly, geom)

MariaDB

ST_Equals(poly, geom)

MySQL

ST_Equals(poly, geom)

SpatiaLite

Equals(poly, geom)

intersectsLien vers cette rubrique

Disponibilité: PostGIS, Oracle, MariaDB, MySQL, SpatiaLite, PGRaster (bilatéral)

Teste si le champ géométrique possède une intersection spatiale avec l’objet géométrique de la recherche.

Exemple :

Code
Zipcode.objects.filter(poly__intersects=geom)

Moteur

Équivalent SQL

PostGIS

ST_Intersects(poly, geom)

Oracle

SDO_OVERLAPBDYINTERSECT(poly, geom)

MariaDB

ST_Intersects(poly, geom)

MySQL

ST_Intersects(poly, geom)

SpatiaLite

Intersects(poly, geom)

isemptyLien vers cette rubrique

Disponibilité : PostGIS

Teste si l’objet géométrique est vide.

Exemple :

Code
Zipcode.objects.filter(poly__isempty=True)

isvalidLien vers cette rubrique

Disponibilité : MariaDB, MySQL, PostGIS, Oracle, SpatiaLite

Teste si l’objet géométrique est valide.

Exemple :

Code
Zipcode.objects.filter(poly__isvalid=True)

Moteur

Équivalent SQL

MariaDB ,MySQL, PostGIS, SpatiaLite

ST_IsValid(poly)

Oracle

SDO_GEOM.VALIDATE_GEOMETRY_WITH_CONTEXT(poly, 0.05) = 'TRUE'

geom_typeLien vers cette rubrique

Disponibilité : PostGIS, Oracle 23c+, MariaDB, MySQL, SpatiaLite

Renvoie le type de géométrie de ce champ géométrique.

Exemple :

Code
Zipcode.objects.filter(poly__geom_type="POLYGON")

Moteur

Équivalent SQL

PostGIS

GeometryType(geom)

MariaDB

ST_GeometryType(geom)

MySQL

ST_GeometryType(geom)

Oracle

SDO_GEOMETRY.GET_GTYPE(geom)

SpatiaLite

GeometryType(geom)

overlapsLien vers cette rubrique

Disponibilité : PostGIS, Oracle, MariaDB, MySQL, SpatiaLite, PGRaster (bilatéral)

Teste si le champ géométrique chevauche l’objet géométrique de la recherche.

Moteur

Équivalent SQL

PostGIS

ST_Overlaps(poly, geom)

Oracle

SDO_OVERLAPS(poly, geom)

MariaDB

ST_Overlaps(poly, geom)

MySQL

ST_Overlaps(poly, geom)

SpatiaLite

Overlaps(poly, geom)

relateLien vers cette rubrique

Disponibilité : PostGIS, MariaDB, Oracle, SpatiaLite, PGRaster (conversion)

Teste si le champ géométrique possède une liaison spatiale avec l’objet géométrique de la recherche en fonction des valeurs indiquées dans le motif donné. Cette recherche nécessite un paramètre sous forme de tuple (géom, motif); la forme de motif dépend du moteur spatial :

MariaDB, PostGIS et SpatiaLiteLien vers cette rubrique

Pour ces moteurs spatiaux, le motif d’intersection est une chaîne de neuf caractères qui définissent les intersections entre l’intérieur, les limites et l’extérieur du champ géométrique et de l’objet géométrique de la recherche. La matrice d’intersection ne peut utiliser que les caractères suivants : 1, 2, T, F ou *. Ce type de recherche permet d’affiner une relation géométrique spécifique en cohérence avec le modèle DE-9IM. [1]

Exemple géométrique :

Code
# 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*"))

Équivalent SQL PostGIS et MariaDB :

SQL
SELECT ... WHERE ST_Relate(poly, geom, 'T*T***FF*')

Équivalent SQL SpatiaLite :

SQL
SELECT ... WHERE Relate(poly, geom, 'T*T***FF*')

Exemple matriciel :

Code
Zipcode.objects.filter(poly__relate=(rast, 1, "T*T***FF*"))
Zipcode.objects.filter(rast__2__relate=(rast, 1, "T*T***FF*"))

Équivalent SQL 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*')

OracleLien vers cette rubrique

Ici, le motif de relation comprend au moins une des neuf chaînes de relation possibles : TOUCH, OVERLAPBDYDISJOINT, OVERLAPBDYINTERSECT, EQUAL, INSIDE, COVEREDBY, CONTAINS, COVERS, ON et ANYINTERACT. Plusieurs chaînes peuvent être combinées par l’opérateur logique booléen OR, par exemple 'inside+touch'. [2] Les chaînes de relation sont insensibles à la casse.

Exemple :

Code
Zipcode.objects.filter(poly__relate=(geom, "anyinteract"))

Équivalent SQL Oracle :

SQL
SELECT ... WHERE SDO_RELATE(poly, geom, 'anyinteract')

touchesLien vers cette rubrique

Disponibilité : PostGIS, Oracle, MariaDB, MySQL, SpatiaLite

Teste si le champ géométrique touche spatialement l’objet géométrique de la recherche.

Exemple :

Code
Zipcode.objects.filter(poly__touches=geom)

Moteur

Équivalent SQL

PostGIS

ST_Touches(poly, geom)

MariaDB

ST_Touches(poly, geom)

MySQL

ST_Touches(poly, geom)

Oracle

SDO_TOUCH(poly, geom)

SpatiaLite

Touches(poly, geom)

withinLien vers cette rubrique

Disponibilité : PostGIS, Oracle, MariaDB, MySQL, SpatiaLite, PGRaster (bilatéral)

Teste si le champ géométrique est spatialement à l’intérieur de l’objet géométrique de la recherche.

Exemple :

Code
Zipcode.objects.filter(poly__within=geom)

Moteur

Équivalent SQL

PostGIS

ST_Within(poly, geom)

MariaDB

ST_Within(poly, geom)

MySQL

ST_Within(poly, geom)

Oracle

SDO_INSIDE(poly, geom)

SpatiaLite

Within(poly, geom)

leftLien vers cette rubrique

Disponibilité : PostGIS, PGRaster (conversion)

Teste si le rectangle englobant du champ géométrique est strictement à gauche du rectangle englobant de la recherche géométrique.

Exemple :

Code
Zipcode.objects.filter(poly__left=geom)

Équivalent PostGIS :

SQL
SELECT ... WHERE poly << geom

overlaps_leftLien vers cette rubrique

Disponibilité : PostGIS, PGRaster (bilatéral)

Teste si le rectangle englobant du champ géométrique recouvre ou est à gauche du rectangle englobant de la recherche géométrique.

Exemple :

Code
Zipcode.objects.filter(poly__overlaps_left=geom)

Équivalent PostGIS :

SQL
SELECT ... WHERE poly &< geom

overlaps_rightLien vers cette rubrique

Disponibilité : PostGIS, PGRaster (bilatéral)

Teste si le rectangle englobant du champ géométrique recouvre ou est à droite du rectangle englobant de la recherche géométrique.

Exemple :

Code
Zipcode.objects.filter(poly__overlaps_right=geom)

Équivalent PostGIS :

SQL
SELECT ... WHERE poly &> geom

overlaps_aboveLien vers cette rubrique

Disponibilité : PostGIS, PGRaster (conversion)

Teste si le rectangle englobant du champ géométrique recouvre ou est au-dessus du rectangle englobant de la recherche géométrique.

Exemple :

Code
Zipcode.objects.filter(poly__overlaps_above=geom)

Équivalent PostGIS :

SQL
SELECT ... WHERE poly |&> geom

overlaps_belowLien vers cette rubrique

Disponibilité : PostGIS, PGRaster (conversion)

Teste si le rectangle englobant du champ géométrique recouvre ou est au-dessous du rectangle englobant de la recherche géométrique.

Exemple :

Code
Zipcode.objects.filter(poly__overlaps_below=geom)

Équivalent PostGIS :

SQL
SELECT ... WHERE poly &<| geom

strictly_aboveLien vers cette rubrique

Disponibilité : PostGIS, PGRaster (conversion)

Teste si le rectangle englobant du champ géométrique est strictement au-dessus du rectangle englobant de la recherche géométrique.

Exemple :

Code
Zipcode.objects.filter(poly__strictly_above=geom)

Équivalent PostGIS :

SQL
SELECT ... WHERE poly |>> geom

strictly_belowLien vers cette rubrique

Disponibilité : PostGIS, PGRaster (conversion)

Teste si le rectangle englobant du champ géométrique est strictement au-dessous du rectangle englobant de la recherche géométrique.

Exemple :

Code
Zipcode.objects.filter(poly__strictly_below=geom)

Équivalent PostGIS :

SQL
SELECT ... WHERE poly <<| geom

Recherches de distanceLien vers cette rubrique

Disponibilité : PostGIS, Oracle, MariaDB, MySQL, SpatiaLite, PGRaster (natif)

Pour un aperçu sur la construction de requêtes de distance, référez-vous à l’introduction sur les requêtes de distance.

Les requêtes de distance se font sous la forme suivante :

Text
<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"])

La valeur transmise à une requête de distance est un tuple ; les deux premières valeurs sont obligatoires et représentent respectivement l’objet géométrique vers lequel la distance doit être calculée et la valeur de distance (soit un nombre dans l’unité du champ, un objet Distance ou une expression de requête). Pour transmettre un indice de bande à la requête, utilisez un tuple à 3 éléments où le deuxième est l’indice de bande.

Pour toutes les recherches de distance à l’exception de dwithin, une valeur facultative, 'spheroid', peut être ajoutée pour utiliser les fonctions de calcul de distance sphéroïde pour les champs ayant un système de coordonnées géodétique.

Avec PostgreSQL, l’option 'spheroid' utilise ST_DistanceSpheroid au lieu de ST_DistanceSphere. La fonction plus simple ST_Distance est utilisée avec les systèmes de coordonnées projetées. Les matrices sont converties en géométries pour les requêtes basées sur la sphéroïde.

distance_gtLien vers cette rubrique

Renvoie les objets pour lesquels la distance entre le champ géométrique et l’objet géométrique de recherche est plus grande que la valeur de distance donnée.

Exemple :

Code
Zipcode.objects.filter(poly__distance_gt=(geom, D(m=5)))

Moteur

Équivalent SQL

PostGIS

ST_Distance/ST_Distance_Sphere(poly, geom) > 5

MariaDB

ST_Distance(poly, geom) > 5

MySQL

ST_Distance(poly, geom) > 5

Oracle

SDO_GEOM.SDO_DISTANCE(poly, geom, 0.05) > 5

SpatiaLite

Distance(poly, geom) > 5

distance_gteLien vers cette rubrique

Renvoie les objets pour lesquels la distance entre le champ géométrique et l’objet géométrique de recherche est plus grande ou égale à la valeur de distance donnée.

Exemple :

Code
Zipcode.objects.filter(poly__distance_gte=(geom, D(m=5)))

Moteur

Équivalent SQL

PostGIS

ST_Distance/ST_Distance_Sphere(poly, geom) >= 5

MariaDB

ST_Distance(poly, geom) >= 5

MySQL

ST_Distance(poly, geom) >= 5

Oracle

SDO_GEOM.SDO_DISTANCE(poly, geom, 0.05) >= 5

SpatiaLite

Distance(poly, geom) >= 5

distance_ltLien vers cette rubrique

Renvoie les objets pour lesquels la distance entre le champ géométrique et l’objet géométrique de recherche est plus petite que la valeur de distance donnée.

Exemple :

Code
Zipcode.objects.filter(poly__distance_lt=(geom, D(m=5)))

Moteur

Équivalent SQL

PostGIS

ST_Distance/ST_Distance_Sphere(poly, geom) < 5

MariaDB

ST_Distance(poly, geom) < 5

MySQL

ST_Distance(poly, geom) < 5

Oracle

SDO_GEOM.SDO_DISTANCE(poly, geom, 0.05) < 5

SpatiaLite

Distance(poly, geom) < 5

distance_lteLien vers cette rubrique

Renvoie les objets pour lesquels la distance entre le champ géométrique et l’objet géométrique de recherche est plus petite ou égale à la valeur de distance donnée.

Exemple :

Code
Zipcode.objects.filter(poly__distance_lte=(geom, D(m=5)))

Moteur

Équivalent SQL

PostGIS

ST_Distance/ST_Distance_Sphere(poly, geom) <= 5

MariaDB

ST_Distance(poly, geom) <= 5

MySQL

ST_Distance(poly, geom) <= 5

Oracle

SDO_GEOM.SDO_DISTANCE(poly, geom, 0.05) <= 5

SpatiaLite

Distance(poly, geom) <= 5

dwithinLien vers cette rubrique

Renvoie les objets pour lesquels la distance entre le champ géométrique et l’objet géométrique de recherche ne dépasse pas la valeur de distance donnée. Notez que vous ne pouvez fournir des objets Distance que si les objets géométriques concernés sont dans un système de coordonnées projeté. Pour des objets géométriques de type géographique, il faut utiliser l’unité du champ géométrique (par exemple des degrés pour WGS84).

Exemple :

Code
Zipcode.objects.filter(poly__dwithin=(geom, D(m=5)))

Moteur

Équivalent SQL

PostGIS

ST_DWithin(poly, geom, 5)

Oracle

SDO_WITHIN_DISTANCE(poly, geom, 5)

SpatiaLite

PtDistWithin(poly, geom, 5)

Fonctions d’agrégationLien vers cette rubrique

Django fournit quelques fonctions d’agrégation spécifiques aux données géographiques. Pour plus de détails sur l’usage de ces fonctions, consultez le guide thématique sur l’agrégation.

Paramètre nommé

Description

tolerance

Ce paramètre n’est valable que pour Oracle. Il s’agit de la valeur de tolérance utilisée par la procédure SDOAGGRTYPE; la documentation Oracle contient plus de détails.

Exemple :

Python console
>>> from django.contrib.gis.db.models import Extent, Union
>>> WorldBorder.objects.aggregate(Extent("mpoly"), Union("mpoly"))

CollectLien vers cette rubrique

class Collect(geo_field, filter=None)Lien vers cette définition

Disponibilité : PostGIS, MariaDB, MySQL, SpatiaLite

Renvoie un objet géométrique GEOMETRYCOLLECTION ou MULTI à partir de la colonne géométrique. C’est un peu comme une version simplifiée de l’agrégation Union, sauf qu’elle peut être vraiment plus rapide qu’une union car elle accumule les objets géométriques dans une collection ou une géométrie multiple sans se préoccuper de fusionner les objets.

ExtentLien vers cette rubrique

class Extent(geo_field, filter=None)Lien vers cette définition

Disponibilité : PostGIS, Oracle, SpatiaLite

Renvoie l’étendue de tous les champs geo_field du QuerySet sous forme de tuple à 4 éléments formé des coordonnées inférieure gauche et supérieure droite.

Exemple :

Python console
>>> qs = City.objects.filter(name__in=("Houston", "Dallas")).aggregate(Extent("poly"))
>>> print(qs["poly__extent"])
(-96.8016128540039, 29.7633724212646, -95.3631439208984, 32.782058715820)

Extent3DLien vers cette rubrique

class Extent3D(geo_field, filter=None)Lien vers cette définition

Disponibilité : PostGIS

Renvoie l’étendue 3D de tous les champs geo_field du QuerySet sous forme de tuple à 6 éléments formé des coordonnées inférieure gauche et supérieure droite (chaque fois avec les coordonnées x, y et z).

Exemple :

Python console
>>> 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)

MakeLineLien vers cette rubrique

class MakeLine(geo_field, filter=None)Lien vers cette définition

Disponibilité : PostGIS, SpatiaLite

Renvoie une ligne LineString construite à partir des champs de type point du QuerySet. Actuellement, le tri du jeu de requête n’a pas d’effet.

Exemple :

Python console
>>> qs = City.objects.filter(name__in=("Houston", "Dallas")).aggregate(MakeLine("poly"))
>>> print(qs["poly__makeline"])
LINESTRING (-95.3631510000000020 29.7633739999999989, -96.8016109999999941 32.7820570000000018)

UnionLien vers cette rubrique

class Union(geo_field, filter=None)Lien vers cette définition

Disponibilité : PostGIS, Oracle, SpatiaLite

Cette méthode renvoie un objet GEOSGeometry formé de l’union de tous les objets géométriques du jeu de requête. Sachez que l’emploi de Union est très consommateur de ressources et peut prendre un temps considérable pour de gros jeux de requête.

Exemple :

Python console
>>> 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.

Notes de bas de page