Fonctions de base de données géographiquesLien vers cette rubrique
Les fonctions documentées sur cette page permettent aux utilisateurs d’accéder aux fonctions géographiques de bases de données utilisables dans les annotations, les agrégations ou les filtres avec Django.
Exemple :
>>> from django.contrib.gis.db.models.functions import Length
>>> Track.objects.annotate(length=Length('line')).filter(length__gt=100)
Tous les moteurs ne supportent pas forcément toutes les fonctions, référez-vous donc à la documentation de chaque fonction pour voir si votre moteur de base de données prend en charge la fonction que vous souhaitez utiliser. Si vous appelez une fonction géographique sur un moteur qui ne le gère pas, vous obtiendrez une exception NotImplementedError.
Sommaire des fonctions :
Mesures |
Relations |
Opérations |
Modifications |
Format de sortie |
Divers |
|---|---|---|---|---|---|
AreaLien vers cette rubrique
- class Area(expression, **extra)Lien vers cette définition
Disponibilité : MySQL, Oracle, PostGIS, SpatiaLite
Accepte un seul champ ou expression géographique et renvoie la surface du champ sous forme de mesure Area. Avec MySQL, un nombre à virgule est renvoyé, car il n’est pas possible de déterminer automatiquement l’unité du champ.
AsGeoJSONLien vers cette rubrique
- class AsGeoJSON(expression, bbox=False, crs=False, precision=8, **extra)Lien vers cette définition
Disponibilité : PostGIS, SpatiaLite
Accepte un seul champ ou expression géographique et renvoie une représentation GeoJSON de l’objet géométrique. Notez que le résultat ne constitue pas une structure GeoJSON complète, mais seulement le contenu de la clé geometry d’une structure GeoJSON. Voir aussi Sérialisation GeoJSON.
Exemple :
>>> City.objects.annotate(json=AsGeoJSON('point')).get(name='Chicago').json
{"type":"Point","coordinates":[-87.65018,41.85039]}
Paramètre nommé |
Description |
|---|---|
|
À définir à |
|
À définir à |
|
Peut être utilisé pour indiquer le nombre de chiffres significatifs des coordonnées de la représentation GeoJSON, la valeur par défaut étant 8. |
AsGMLLien vers cette rubrique
- class AsGML(expression, version=2, precision=8, **extra)Lien vers cette définition
Disponibilité : PostGIS, SpatiaLite
Accepte un seul champ ou expression géographique et renvoie une représentation Geographic Markup Language (GML) du champ géométrique.
Exemple :
>>> 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>
Paramètre nommé |
Description |
|---|---|
|
Indique le nombre de chiffres significatifs des coordonnées de la représentation GML, la valeur par défaut étant 8. |
|
Indique la version GML à utiliser : 2 (par défaut) ou 3. |
AsKMLLien vers cette rubrique
- class AsKML(expression, precision=8, **extra)Lien vers cette définition
Disponibilité : PostGIS, SpatiaLite
Accepte un seul champ ou expression géographique et renvoie une représentation Keyhole Markup Language (KML) du champ géométrique.
Exemple :
>>> 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>
Paramètre nommé |
Description |
|---|---|
|
Ce paramètre peut être utilisé pour indiquer le nombre de chiffres significatifs des coordonnées de la représentation KML, la valeur par défaut étant 8. |
AsSVGLien vers cette rubrique
- class AsSVG(expression, relative=False, precision=8, **extra)Lien vers cette définition
Disponibilité : PostGIS, SpatiaLite
Accepte un seul champ ou expression géographique et renvoie une représentation Scalable Vector Graphics (SVG) du champ géométrique.
Paramètre nommé |
Description |
|---|---|
|
Si défini à |
|
Ce paramètre peut être utilisé pour indiquer le nombre de chiffres significatifs des coordonnées de la représentation SVG, la valeur par défaut étant 8. |
BoundingCircleLien vers cette rubrique
- class BoundingCircle(expression, num_seg=48, **extra)Lien vers cette définition
Disponibilité : PostGIS <http://postgis.net/docs/ST_MinimumBoundingCircle.html>`__
Accepte un seul champ ou expression géographique et renvoie le polygone cercle le plus petit pouvant contenir entièrement l’objet géométrique.
CentroidLien vers cette rubrique
- class Centroid(expression, **extra)Lien vers cette définition
Disponibilité : MySQL, Oracle, PostGIS, SpatiaLite
Accepte un seul champ ou expression géographique et renvoie la valeur centroïde de l’objet géométrique.
DifferenceLien vers cette rubrique
- class Difference(expr1, expr2, **extra)Lien vers cette définition
Disponibilité : MySQL (≥ 5.6.1), Oracle, PostGIS, SpatiaLite
Accepte deux champs ou expressions géographiques et renvoie la différence géométrique, c’est-à-dire la part de l’objet A qui ne fait pas partie de son intersection avec l’objet B.
DistanceLien vers cette rubrique
- class Distance(expr1, expr2, spheroid=None, **extra)Lien vers cette définition
Disponibilité : MySQL (≥ 5.6.1), Oracle, PostGIS, SpatiaLite
Accepte deux champs ou expressions géographiques et renvoie la distance entre les deux sous forme d’objet Distance. Avec MySQL, un nombre à virgule est renvoyé, car il n’est pas possible de déterminer automatiquement l’unité du champ.
Pour les bases de données qui permettent de calculer des distances avec des coordonnées géodésiques, la bonne fonction de base de données est automatiquement sélectionnée en fonction de la valeur SRID des objets géométriques (par ex. ST_Distance_Sphere avec PostGIS).
Lorsque les distances sont calculées avec des coordonnées géodésiques (angles), comme c’est le cas avec le SRID WGS84 (4326) par défaut, vous pouvez définir le paramètre nommé spheroid pour décider si le calcul doit se faire selon une sphère simple (moins précis, moins gourmand en ressources) ou sur un sphéroïde (plus précis, plus gourmand en ressources).
Dans l’exemple suivant, on calcule la distance entre la ville de Hobart vers tous les autres champs PointField du jeu de requête 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
...
EnvelopeLien vers cette rubrique
- class Envelope(expression, **extra)Lien vers cette définition
Disponibilité : PostGIS, MySQL, SpatiaLite
Accepte un seul champ ou expression géographique et renvoie l’objet géométrique représentant le rectangle englobant de l’objet.
ForceRHRLien vers cette rubrique
- class ForceRHR(expression, **extra)Lien vers cette définition
Disponibilité : PostGIS <http://postgis.net/docs/ST_ForceRHR.html>`__
Accepte un seul champ ou expression géographique et renvoie une version modifiée du (multi)polygone pour lequel tous les côtés suivent la « règle de la main droite ».
GeoHashLien vers cette rubrique
- class GeoHash(expression, precision=None, **extra)Lien vers cette définition
Disponibilité : PostGIS, SpatiaLite (≥ 4.0, LWGEOM)
Accepte un seul champ ou expression géographique et renvoie une représentation GeoHash du champ géométrique.
Le paramètre nommé precision contrôle le nombre de caractères du résultat.
IntersectionLien vers cette rubrique
- class Intersection(expr1, expr2, **extra)Lien vers cette définition
Disponibilité : MySQL (≥ 5.6.1), Oracle, PostGIS, SpatiaLite
Accepte deux champs ou expressions géographiques et renvoie leur intersection géométrique.
IsValidLien vers cette rubrique
- class IsValid(expr)Lien vers cette définition
Disponibilité : PostGIS
Accepte un champ ou une expression géographique et teste si la valeur est bien formée. Renvoie True si la valeur est un objet géométrique valide et False dans le cas contraire.
LengthLien vers cette rubrique
- class Length(expression, spheroid=True, **extra)Lien vers cette définition
Disponibilité : MySQL, Oracle, PostGIS, SpatiaLite
Accepte un seul champ ou expression ligne ou multiligne géographique et renvoie sa longueur sous forme de mesure Distance. Avec MySQL, un nombre à virgule est renvoyé, car il n’est pas possible de déterminer automatiquement l’unité du champ.
Avec PostGIS ou SpatiaLite, et lorsque les coordonnées sont géodésiques (angles), vous pouvez définir avec le paramètre nommé spheroid si le calcul doit se faire selon une sphère simple (moins précis, moins gourmand en ressources) ou sur un sphéroïde (plus précis, plus gourmand en ressources).
MakeValidLien vers cette rubrique
- class MakeValid(expr)Lien vers cette définition
Disponibilité : PostGIS
Accepte un champ ou une expression géographique et essaye de convertir la valeur en une géométrie valide sans perdre aucun des segments originaux. Les objets déjà valides sont renvoyés tels quels. Des polygones simples peuvent devenir des multipolygones et le résultat peut être d’une dimension inférieure à l’objet en entrée.
MemSizeLien vers cette rubrique
- class MemSize(expression, **extra)Lien vers cette définition
Disponibilité : PostGIS
Accepte un seul champ ou expression géographique et renvoie la taille mémoire (en octets) consommé par le champ géométrique.
NumGeometriesLien vers cette rubrique
- class NumGeometries(expression, **extra)Lien vers cette définition
Disponibilité : MySQL, Oracle, PostGIS, SpatiaLite
Accepte un seul champ ou expression géographique et renvoie le nombre d’objets géométriques dans le cas où le champ est une collection (par ex. GEOMETRYCOLLECTION ou un champ MULTI*) ; sinon, renvoie None.
NumPointsLien vers cette rubrique
- class NumPoints(expression, **extra)Lien vers cette définition
Disponibilité : MySQL, Oracle, PostGIS, SpatiaLite
Accepte un seul champ ou expression géographique et renvoie le nombre de points du premier objet ligne du champs géométrique ; sinon renvoie None.
PerimeterLien vers cette rubrique
- class Perimeter(expression, **extra)Lien vers cette définition
Disponibilité : PostGIS, Oracle, SpatiaLite (≥ 4.0)
Accepte un seul champ ou expression géographique et renvoie le périmètre du champ sous forme de mesure Distance.
PointOnSurfaceLien vers cette rubrique
- class PointOnSurface(expression, **extra)Lien vers cette définition
Disponibilité : PostGIS, Oracle, SpatiaLite
Accepte un seul champ ou expression géographique et renvoie un objet Point qui se trouve avec certitude dans la surface du champ ; sinon renvoie None.
ReverseLien vers cette rubrique
- class Reverse(expression, **extra)Lien vers cette définition
Disponibilité : PostGIS, Oracle, SpatiaLite (≥ 4.0)
Accepte un seul champ ou expression géographique et renvoie un objet géométrique avec les coordonnées inversées.
ScaleLien vers cette rubrique
- class Scale(expression, x, y, z=0.0, **extra)Lien vers cette définition
Disponibilité : PostGIS, SpatiaLite
Accepte un seul champ ou expression géographique et renvoie un objet géométrique avec ses coordonnées mises à l’échelle en les multipliant par les paramètres x, y et facultativement, z.
SnapToGridLien vers cette rubrique
- class SnapToGrid(expression, *args, **extra)Lien vers cette définition
Disponibilité : PostGIS, SpatiaLite (≥ 3.1)
Accepte un seul champ ou expression géographique et renvoie un objet géométrique dont tous les points sont ajustés à la grille donnée. La manière d’ajuster l’objet géométrique à la grille dépend du nombre de paramètres numériques fournis (des nombres à virgule, entiers ou entiers longs).
Nombre de paramètres |
Description |
|---|---|
1 |
Une seule taille de cellule de grille (à la fois pour la taille X et Y). |
2 |
Tailles X et Y de cellule de grille. |
4 |
Tailles de cellule X et Y ainsi que coordonnées X et Y de l’origine de la grille. |
SymDifferenceLien vers cette rubrique
- class SymDifference(expr1, expr2, **extra)Lien vers cette définition
Disponibilité : MySQL (≥ 5.6.1), Oracle, PostGIS, SpatiaLite
Accepte deux champs ou expressions géographiques et renvoie la différence géométrique symétrique (union sans l’intersection) entre les paramètres données.
TransformLien vers cette rubrique
- class Transform(expression, srid, **extra)Lien vers cette définition
Disponibilité : PostGIS, Oracle, SpatiaLite
Accepte un champ ou expression géographique et un code SRID nombre entier, et renvoie l’objet géométrique transformé dans le système de référence spatiale indiqué par le paramètre srid.
TranslateLien vers cette rubrique
- class Translate(expression, x, y, z=0.0, **extra)Lien vers cette définition
Disponibilité : PostGIS, SpatiaLite
Accepte un seul champ ou expression géographique et renvoie un objet géométrique avec ses coordonnées décalées en fonction des paramètres x, y et facultativement, z.
UnionLien vers cette rubrique
- class Union(expr1, expr2, **extra)Lien vers cette définition
Disponibilité : MySQL (≥ 5.6.1), Oracle, PostGIS, SpatiaLite
Accepte deux champs ou expressions géographiques et renvoie l’union des deux.