{"title":"API de base de données GeoDjango","version":"2.1","locale":"fr","docname":"ref/contrib/gis/db-api","url":"/fr/2.1/ref/contrib/gis/db-api/","canonical":"https://djangodocs.dev/fr/2.1/ref/contrib/gis/db-api/","summary":"Moteurs de base de données spatiales Lien vers cette rubrique # GeoDjango propose actuellement les moteurs de base de données spatiales suivants :…","html":"<h1>API de base de données GeoDjango<a class=\"heading-anchor\" href=\"#geodjango-database-api\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h1>\n<section id=\"module-django.contrib.gis.db.backends\">\n<span id=\"id1\"></span><span id=\"spatial-backends\"></span><h2>Moteurs de base de données spatiales<a class=\"heading-anchor\" href=\"#module-django.contrib.gis.db.backends\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>GeoDjango propose actuellement les moteurs de base de données spatiales suivants :</p>\n<ul class=\"simple\">\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">django.contrib.gis.db.backends.postgis</span></code></p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">django.contrib.gis.db.backends.mysql</span></code></p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">django.contrib.gis.db.backends.oracle</span></code></p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">django.contrib.gis.db.backends.spatialite</span></code></p></li>\n</ul>\n<section id=\"mysql-spatial-limitations\">\n<span id=\"module-django.contrib.gis.db.models\"></span><span id=\"id2\"></span><h3>Limitations spatiales de MySQL<a class=\"heading-anchor\" href=\"#mysql-spatial-limitations\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Les extensions spatiales de MySQL ne prennent en charge que les opérations de rectangle englobant (ce que MySQL appelle « minimum bounding rectangle » ou MBR). Spécifiquement, <a class=\"reference external\" href=\"https://dev.mysql.com/doc/refman/en/spatial-relation-functions.html\">MySQL ne se conforme pas au standard OGC</a> :</p>\n<blockquote>\n<div><p>Actuellement, MySQL n’implémente pas ces fonctions [<code class=\"docutils literal notranslate\"><span class=\"pre\">Contains</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">Crosses</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">Disjoint</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">Intersects</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">Overlaps</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">Touches</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">Within</span></code>] en accord avec la spécification. Celles qui sont implémentées renvoient le même résultat que les fonctions correspondantes qui agissent sur le MBR.</p>\n</div></blockquote>\n<p>En d’autres termes, même si les requêtes spatiales telles que <a class=\"reference internal\" href=\"/fr/2.1/ref/contrib/gis/geoquerysets/#std-fieldlookup-gis-contains\"><code class=\"xref std std-lookup docutils literal notranslate\"><span class=\"pre\">contains</span></code></a> sont disponibles dans GeoDjango en utilisant MySQL, les résultats renvoyés sont tout à fait équivalentes à ce que renverrait <a class=\"reference internal\" href=\"/fr/2.1/ref/contrib/gis/geoquerysets/#std-fieldlookup-bbcontains\"><code class=\"xref std std-lookup docutils literal notranslate\"><span class=\"pre\">bbcontains</span></code></a> avec un autre moteur spatial.</p>\n<aside class=\"admonition admonition-warning\" role=\"note\">\n<p class=\"admonition-title\">Avertissement</p>\n<p>Les vrais index spatiaux (R-trees) ne sont pris en charge qu’avec les tables MyISAM de MySQL. <a class=\"footnote-reference brackets\" href=\"#fnmysqlidx\" id=\"id3\" role=\"doc-noteref\"><span class=\"fn-bracket\">[</span>5<span class=\"fn-bracket\">]</span></a> En d’autres termes, lorsque vous utilisez les extensions spatiales de MySQL, vous devez choisir entre des requêtes spatiales rapides et l’intégrité de vos données (les tables MyISAM ne gérant pas les transactions ni les contraintes de clé étrangère).</p>\n</aside>\n</section>\n<section id=\"raster-support\">\n<h3>Données matricielles<a class=\"heading-anchor\" href=\"#raster-support\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">RasterField</span></code> n’est actuellement implémenté que pour le moteur PostGIS. Les requêtes spatiales sont disponibles pour les champs matriciels, mais pas les fonctions de base de données spatiales ni les agrégats.</p>\n</section>\n</section>\n<section id=\"creating-and-saving-models-with-geometry-fields\">\n<h2>Création et enregistrement de modèles avec des champs géométriques<a class=\"heading-anchor\" href=\"#creating-and-saving-models-with-geometry-fields\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Voici un exemple de la manière dont il faut créer un objet géométrique (en supposant que le modèle <code class=\"docutils literal notranslate\"><span class=\"pre\">Zipcode</span></code> existe) :</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">zipcode.models</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">Zipcode</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">z</span> <span class=\"o\">=</span> <span class=\"n\">Zipcode</span><span class=\"p\">(</span><span class=\"n\">code</span><span class=\"o\">=</span><span class=\"mi\">77096</span><span class=\"p\">,</span> <span class=\"n\">poly</span><span class=\"o\">=</span><span class=\"s1\">&#39;POLYGON(( 10 10, 10 20, 20 20, 20 15, 10 10))&#39;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">z</span><span class=\"o\">.</span><span class=\"n\">save</span><span class=\"p\">()</span>\n</code></pre></div>\n<p>Les objets <a class=\"reference internal\" href=\"/fr/2.1/ref/contrib/gis/geos/#django.contrib.gis.geos.GEOSGeometry\" title=\"django.contrib.gis.geos.GEOSGeometry\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">GEOSGeometry</span></code></a> peuvent aussi être utilisés pour enregistrer des modèles géométriques :</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.contrib.gis.geos</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">GEOSGeometry</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">poly</span> <span class=\"o\">=</span> <span class=\"n\">GEOSGeometry</span><span class=\"p\">(</span><span class=\"s1\">&#39;POLYGON(( 10 10, 10 20, 20 20, 20 15, 10 10))&#39;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">z</span> <span class=\"o\">=</span> <span class=\"n\">Zipcode</span><span class=\"p\">(</span><span class=\"n\">code</span><span class=\"o\">=</span><span class=\"mi\">77096</span><span class=\"p\">,</span> <span class=\"n\">poly</span><span class=\"o\">=</span><span class=\"n\">poly</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">z</span><span class=\"o\">.</span><span class=\"n\">save</span><span class=\"p\">()</span>\n</code></pre></div>\n<p>De plus, si l’objet <code class=\"docutils literal notranslate\"><span class=\"pre\">GEOSGeometry</span></code> est dans un autre système de coordonnées (sa valeur SRID est différente) que celui du champ, il sera implicitement converti dans le SRID du champ du modèle, en utilisant la procédure de transformation de la base de données spatiale :</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">poly_3084</span> <span class=\"o\">=</span> <span class=\"n\">GEOSGeometry</span><span class=\"p\">(</span><span class=\"s1\">&#39;POLYGON(( 10 10, 10 20, 20 20, 20 15, 10 10))&#39;</span><span class=\"p\">,</span> <span class=\"n\">srid</span><span class=\"o\">=</span><span class=\"mi\">3084</span><span class=\"p\">)</span>  <span class=\"c1\"># SRID 3084 is &#39;NAD83(HARN) / Texas Centric Lambert Conformal&#39;</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">z</span> <span class=\"o\">=</span> <span class=\"n\">Zipcode</span><span class=\"p\">(</span><span class=\"n\">code</span><span class=\"o\">=</span><span class=\"mi\">78212</span><span class=\"p\">,</span> <span class=\"n\">poly</span><span class=\"o\">=</span><span class=\"n\">poly_3084</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">z</span><span class=\"o\">.</span><span class=\"n\">save</span><span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.db</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">connection</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span><span class=\"n\">connection</span><span class=\"o\">.</span><span class=\"n\">queries</span><span class=\"p\">[</span><span class=\"o\">-</span><span class=\"mi\">1</span><span class=\"p\">][</span><span class=\"s1\">&#39;sql&#39;</span><span class=\"p\">])</span> <span class=\"c1\"># printing the last SQL statement executed (requires DEBUG=True)</span>\n<span class=\"go\">INSERT INTO &quot;geoapp_zipcode&quot; (&quot;code&quot;, &quot;poly&quot;) VALUES (78212, ST_Transform(ST_GeomFromWKB(&#39;\\\\001 ... &#39;, 3084), 4326))</span>\n</code></pre></div>\n<p>Ainsi, les paramètres de géométrie peuvent être transmis en utilisant un objet <code class=\"docutils literal notranslate\"><span class=\"pre\">GEOSGeometry</span></code>, une syntaxe WKT (Well Known Text <a class=\"footnote-reference brackets\" href=\"#fnwkt\" id=\"id4\" role=\"doc-noteref\"><span class=\"fn-bracket\">[</span>1<span class=\"fn-bracket\">]</span></a>), HEXEWKB (spécifique à PostGIS, un objet géométrique WKB en hexadécimal <a class=\"footnote-reference brackets\" href=\"#fnewkb\" id=\"id5\" role=\"doc-noteref\"><span class=\"fn-bracket\">[</span>2<span class=\"fn-bracket\">]</span></a>), et GeoJSON <a class=\"footnote-reference brackets\" href=\"#fngeojson\" id=\"id6\" role=\"doc-noteref\"><span class=\"fn-bracket\">[</span>3<span class=\"fn-bracket\">]</span></a>. En fait, si la donnée n’est pas un objet <code class=\"docutils literal notranslate\"><span class=\"pre\">GEOSGeometry</span></code>, le champ géométrique essaie de créer une instance <code class=\"docutils literal notranslate\"><span class=\"pre\">GEOSGeometry</span></code> à partir des données fournies.</p>\n<p>Pour plus d’informations sur la création d’objets <a class=\"reference internal\" href=\"/fr/2.1/ref/contrib/gis/geos/#django.contrib.gis.geos.GEOSGeometry\" title=\"django.contrib.gis.geos.GEOSGeometry\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">GEOSGeometry</span></code></a>, consultez le <a class=\"reference internal\" href=\"/fr/2.1/ref/contrib/gis/geos/#geos-tutorial\"><span class=\"std std-ref\">tutoriel GEOSl</span></a>.</p>\n</section>\n<section id=\"creating-and-saving-models-with-raster-fields\">\n<span id=\"creating-and-saving-raster-models\"></span><h2>Création et enregistrement de modèles avec des champs matriciels<a class=\"heading-anchor\" href=\"#creating-and-saving-models-with-raster-fields\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Lors de la création de modèles matriciels, le champ matriciel convertira implicitement la donnée d’entrée en un objet <a class=\"reference internal\" href=\"/fr/2.1/ref/contrib/gis/gdal/#django.contrib.gis.gdal.GDALRaster\" title=\"django.contrib.gis.gdal.GDALRaster\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">GDALRaster</span></code></a> par évaluation différée. Ce champ accepte donc les mêmes données que le constructeur <a class=\"reference internal\" href=\"/fr/2.1/ref/contrib/gis/gdal/#django.contrib.gis.gdal.GDALRaster\" title=\"django.contrib.gis.gdal.GDALRaster\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">GDALRaster</span></code></a>.</p>\n<p>Voici un exemple de la manière dont on peut créer un objet matriciel à partir d’un fichier matriciel <code class=\"docutils literal notranslate\"><span class=\"pre\">volcano.tif</span></code> (en supposant que le modèle <code class=\"docutils literal notranslate\"><span class=\"pre\">Elevation</span></code> existe) :</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">elevation.models</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">Elevation</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">dem</span> <span class=\"o\">=</span> <span class=\"n\">Elevation</span><span class=\"p\">(</span><span class=\"n\">name</span><span class=\"o\">=</span><span class=\"s1\">&#39;Volcano&#39;</span><span class=\"p\">,</span> <span class=\"n\">rast</span><span class=\"o\">=</span><span class=\"s1\">&#39;/path/to/raster/volcano.tif&#39;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">dem</span><span class=\"o\">.</span><span class=\"n\">save</span><span class=\"p\">()</span>\n</code></pre></div>\n<p>Les objets <a class=\"reference internal\" href=\"/fr/2.1/ref/contrib/gis/gdal/#django.contrib.gis.gdal.GDALRaster\" title=\"django.contrib.gis.gdal.GDALRaster\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">GDALRaster</span></code></a> peuvent aussi être utilisés pour enregistrer des modèles matriciels :</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.contrib.gis.gdal</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">GDALRaster</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">rast</span> <span class=\"o\">=</span> <span class=\"n\">GDALRaster</span><span class=\"p\">({</span><span class=\"s1\">&#39;width&#39;</span><span class=\"p\">:</span> <span class=\"mi\">10</span><span class=\"p\">,</span> <span class=\"s1\">&#39;height&#39;</span><span class=\"p\">:</span> <span class=\"mi\">10</span><span class=\"p\">,</span> <span class=\"s1\">&#39;name&#39;</span><span class=\"p\">:</span> <span class=\"s1\">&#39;Canyon&#39;</span><span class=\"p\">,</span> <span class=\"s1\">&#39;srid&#39;</span><span class=\"p\">:</span> <span class=\"mi\">4326</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>                   <span class=\"s1\">&#39;scale&#39;</span><span class=\"p\">:</span> <span class=\"p\">[</span><span class=\"mf\">0.1</span><span class=\"p\">,</span> <span class=\"o\">-</span><span class=\"mf\">0.1</span><span class=\"p\">],</span> <span class=\"s1\">&#39;bands&#39;</span><span class=\"p\">:</span> <span class=\"p\">[{</span><span class=\"s2\">&quot;data&quot;</span><span class=\"p\">:</span> <span class=\"nb\">range</span><span class=\"p\">(</span><span class=\"mi\">100</span><span class=\"p\">)}]})</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">dem</span> <span class=\"o\">=</span> <span class=\"n\">Elevation</span><span class=\"p\">(</span><span class=\"n\">name</span><span class=\"o\">=</span><span class=\"s1\">&#39;Canyon&#39;</span><span class=\"p\">,</span> <span class=\"n\">rast</span><span class=\"o\">=</span><span class=\"n\">rast</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">dem</span><span class=\"o\">.</span><span class=\"n\">save</span><span class=\"p\">()</span>\n</code></pre></div>\n<p>Notez que c’est l’équivalent de :</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">dem</span> <span class=\"o\">=</span> <span class=\"n\">Elevation</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">create</span><span class=\"p\">(</span>\n<span class=\"gp\">... </span>    <span class=\"n\">name</span><span class=\"o\">=</span><span class=\"s1\">&#39;Canyon&#39;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"n\">rast</span><span class=\"o\">=</span><span class=\"p\">{</span><span class=\"s1\">&#39;width&#39;</span><span class=\"p\">:</span> <span class=\"mi\">10</span><span class=\"p\">,</span> <span class=\"s1\">&#39;height&#39;</span><span class=\"p\">:</span> <span class=\"mi\">10</span><span class=\"p\">,</span> <span class=\"s1\">&#39;name&#39;</span><span class=\"p\">:</span> <span class=\"s1\">&#39;Canyon&#39;</span><span class=\"p\">,</span> <span class=\"s1\">&#39;srid&#39;</span><span class=\"p\">:</span> <span class=\"mi\">4326</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>          <span class=\"s1\">&#39;scale&#39;</span><span class=\"p\">:</span> <span class=\"p\">[</span><span class=\"mf\">0.1</span><span class=\"p\">,</span> <span class=\"o\">-</span><span class=\"mf\">0.1</span><span class=\"p\">],</span> <span class=\"s1\">&#39;bands&#39;</span><span class=\"p\">:</span> <span class=\"p\">[{</span><span class=\"s2\">&quot;data&quot;</span><span class=\"p\">:</span> <span class=\"nb\">range</span><span class=\"p\">(</span><span class=\"mi\">100</span><span class=\"p\">)}]},</span>\n<span class=\"gp\">... </span><span class=\"p\">)</span>\n</code></pre></div>\n</section>\n<section id=\"spatial-lookups\">\n<span id=\"spatial-lookups-intro\"></span><h2>Recherches spatiales<a class=\"heading-anchor\" href=\"#spatial-lookups\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Les types de requêtes de GeoDjango peuvent être utilisés avec n’importe quelle méthode de gestionnaire comme <code class=\"docutils literal notranslate\"><span class=\"pre\">filter()</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">exclude()</span></code>, etc. Cependant, les types de requêtes spécifiques à GeoDjango ne sont disponibles que pour les champs spatiaux.</p>\n<p>Les filtres pour les champs « normaux » (par ex. <a class=\"reference internal\" href=\"/fr/2.1/ref/models/fields/#django.db.models.CharField\" title=\"django.db.models.CharField\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">CharField</span></code></a>) peuvent s’enchaîner avec des filtres sur des champs géographiques. Les requêtes géographiques acceptent des entrées géométriques et matricielles des deux côtés et les types d’entrées peuvent être librement mélangés.</p>\n<p>La structure générale des requêtes géographiques est décrite ci-dessous. Une référence complète peut être consultée dans la <a class=\"reference internal\" href=\"/fr/2.1/ref/contrib/gis/geoquerysets/#spatial-lookups\"><span class=\"std std-ref\">référence sur les recherches spatiales</span></a>.</p>\n<section id=\"geometry-lookups\">\n<h3>Recherches géométriques<a class=\"heading-anchor\" href=\"#geometry-lookups\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Les requêtes géographiques avec des objets géométriques prennent la forme générale suivante (modèle <code class=\"docutils literal notranslate\"><span class=\"pre\">Zipcode</span></code> d’exemple utilisé dans <a class=\"reference internal\" href=\"/fr/2.1/ref/contrib/gis/model-api/\"><span class=\"doc\">API de modèle de GeoDjango</span></a>) :</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">qs</span> <span class=\"o\">=</span> <span class=\"n\">Zipcode</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">filter</span><span class=\"p\">(</span><span class=\"o\">&lt;</span><span class=\"n\">field</span><span class=\"o\">&gt;</span><span class=\"n\">__</span><span class=\"o\">&lt;</span><span class=\"n\">lookup_type</span><span class=\"o\">&gt;=&lt;</span><span class=\"n\">parameter</span><span class=\"o\">&gt;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">qs</span> <span class=\"o\">=</span> <span class=\"n\">Zipcode</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">exclude</span><span class=\"p\">(</span><span class=\"o\">...</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Par exemple :</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">qs</span> <span class=\"o\">=</span> <span class=\"n\">Zipcode</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">filter</span><span class=\"p\">(</span><span class=\"n\">poly__contains</span><span class=\"o\">=</span><span class=\"n\">pnt</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">qs</span> <span class=\"o\">=</span> <span class=\"n\">Elevation</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">filter</span><span class=\"p\">(</span><span class=\"n\">poly__contains</span><span class=\"o\">=</span><span class=\"n\">rst</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Dans ce cas, <code class=\"docutils literal notranslate\"><span class=\"pre\">poly</span></code> est le champ géographique, <a class=\"reference internal\" href=\"/fr/2.1/ref/contrib/gis/geoquerysets/#std-fieldlookup-gis-contains\"><code class=\"xref std std-lookup docutils literal notranslate\"><span class=\"pre\">contains</span></code></a> est le type de recherche spatiale, <code class=\"docutils literal notranslate\"><span class=\"pre\">pnt</span></code> est le paramètre (qui pourrait être un objet <a class=\"reference internal\" href=\"/fr/2.1/ref/contrib/gis/geos/#django.contrib.gis.geos.GEOSGeometry\" title=\"django.contrib.gis.geos.GEOSGeometry\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">GEOSGeometry</span></code></a> ou une chaîne GeoJSON , WKT ou HEXEWKB) et <code class=\"docutils literal notranslate\"><span class=\"pre\">rst</span></code> est un objet <a class=\"reference internal\" href=\"/fr/2.1/ref/contrib/gis/gdal/#django.contrib.gis.gdal.GDALRaster\" title=\"django.contrib.gis.gdal.GDALRaster\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">GDALRaster</span></code></a>.</p>\n</section>\n<section id=\"raster-lookups\">\n<span id=\"spatial-lookup-raster\"></span><h3>Recherches matricielles<a class=\"heading-anchor\" href=\"#raster-lookups\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>La syntaxe des requêtes matricielles est semblable à celle pour les géométries. La seule différence est qu’un indice de bande peut être indiqué en supplément. Si aucun indice de bande n’est indiqué, c’est la première bande (indice <code class=\"docutils literal notranslate\"><span class=\"pre\">0</span></code>) qui est utilisée par défaut. Dans ce cas, la syntaxe est identique à la syntaxe des requêtes géométriques.</p>\n<p>Pour indiquer l’indice de bande, un paramètre supplémentaire peut être ajouté des deux côtés de la requête. Du côté gauche, c’est la syntaxe de double soulignement qui est utilisée pour transmettre l’indice de bande. Du côté droit, un tuple contenant la matrice et l’indice de bande peut être utilisé.</p>\n<p>Cela aboutit à la forme générale suivante pour les requêtes impliquant des matrices (modèle <code class=\"docutils literal notranslate\"><span class=\"pre\">Elevation</span></code> d’exemple utilisé dans <a class=\"reference internal\" href=\"/fr/2.1/ref/contrib/gis/model-api/\"><span class=\"doc\">API de modèle de GeoDjango</span></a>)</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">qs</span> <span class=\"o\">=</span> <span class=\"n\">Elevation</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">filter</span><span class=\"p\">(</span><span class=\"o\">&lt;</span><span class=\"n\">field</span><span class=\"o\">&gt;</span><span class=\"n\">__</span><span class=\"o\">&lt;</span><span class=\"n\">lookup_type</span><span class=\"o\">&gt;=&lt;</span><span class=\"n\">parameter</span><span class=\"o\">&gt;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">qs</span> <span class=\"o\">=</span> <span class=\"n\">Elevation</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">filter</span><span class=\"p\">(</span><span class=\"o\">&lt;</span><span class=\"n\">field</span><span class=\"o\">&gt;</span><span class=\"n\">__</span><span class=\"o\">&lt;</span><span class=\"n\">band_index</span><span class=\"o\">&gt;</span><span class=\"n\">__</span><span class=\"o\">&lt;</span><span class=\"n\">lookup_type</span><span class=\"o\">&gt;=&lt;</span><span class=\"n\">parameter</span><span class=\"o\">&gt;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">qs</span> <span class=\"o\">=</span> <span class=\"n\">Elevation</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">filter</span><span class=\"p\">(</span><span class=\"o\">&lt;</span><span class=\"n\">field</span><span class=\"o\">&gt;</span><span class=\"n\">__</span><span class=\"o\">&lt;</span><span class=\"n\">lookup_type</span><span class=\"o\">&gt;=</span><span class=\"p\">(</span><span class=\"o\">&lt;</span><span class=\"n\">raster_input</span><span class=\"p\">,</span> <span class=\"o\">&lt;</span><span class=\"n\">band_index</span><span class=\"o\">&gt;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Par exemple :</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">qs</span> <span class=\"o\">=</span> <span class=\"n\">Elevation</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">filter</span><span class=\"p\">(</span><span class=\"n\">rast__contains</span><span class=\"o\">=</span><span class=\"n\">geom</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">qs</span> <span class=\"o\">=</span> <span class=\"n\">Elevation</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">filter</span><span class=\"p\">(</span><span class=\"n\">rast__contains</span><span class=\"o\">=</span><span class=\"n\">rst</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">qs</span> <span class=\"o\">=</span> <span class=\"n\">Elevation</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">filter</span><span class=\"p\">(</span><span class=\"n\">rast__1__contains</span><span class=\"o\">=</span><span class=\"n\">geom</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">qs</span> <span class=\"o\">=</span> <span class=\"n\">Elevation</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">filter</span><span class=\"p\">(</span><span class=\"n\">rast__contains</span><span class=\"o\">=</span><span class=\"p\">(</span><span class=\"n\">rst</span><span class=\"p\">,</span> <span class=\"mi\">1</span><span class=\"p\">))</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">qs</span> <span class=\"o\">=</span> <span class=\"n\">Elevation</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">filter</span><span class=\"p\">(</span><span class=\"n\">rast__1__contains</span><span class=\"o\">=</span><span class=\"p\">(</span><span class=\"n\">rst</span><span class=\"p\">,</span> <span class=\"mi\">1</span><span class=\"p\">))</span>\n</code></pre></div>\n<p>Du côté gauche de l’exemple, <code class=\"docutils literal notranslate\"><span class=\"pre\">rast</span></code> est le champ matriciel géographique et <a class=\"reference internal\" href=\"/fr/2.1/ref/contrib/gis/geoquerysets/#std-fieldlookup-gis-contains\"><code class=\"xref std std-lookup docutils literal notranslate\"><span class=\"pre\">contains</span></code></a> est le type de requête spatiale. Du côté droit, <code class=\"docutils literal notranslate\"><span class=\"pre\">geom</span></code> est l’entrée géométrique et <code class=\"docutils literal notranslate\"><span class=\"pre\">rst</span></code> est un objet <a class=\"reference internal\" href=\"/fr/2.1/ref/contrib/gis/gdal/#django.contrib.gis.gdal.GDALRaster\" title=\"django.contrib.gis.gdal.GDALRaster\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">GDALRaster</span></code></a>. L’indice de bande vaut <code class=\"docutils literal notranslate\"><span class=\"pre\">0</span></code> par défaut dans les deux premières requêtes et est défini à <code class=\"docutils literal notranslate\"><span class=\"pre\">1</span></code> dans les suivantes.</p>\n<p>Bien que toutes les requêtes spatiales puissent être utilisées avec des objets matriciels des deux côtés, certains opérateurs ne savent pas gérer des entrées matricielles. Pour les cas où l’opérateur s’attend à une entrée géométrique, la matrice est automatiquement convertie en géométrie. Il est important d’avoir cela à l’esprit lors de l’interprétation des résultats de requête.</p>\n<p>Le type de prise en charge matricielle est énuméré pour chaque requête dans la <a class=\"reference internal\" href=\"#spatial-lookup-compatibility\"><span class=\"std std-ref\">table de compatibilité</span></a>. Les requêtes impliquant des matrices ne sont actuellement disponibles que pour le moteur PostGIS.</p>\n</section>\n</section>\n<section id=\"distance-queries\">\n<span id=\"id7\"></span><h2>Requêtes de distance<a class=\"heading-anchor\" href=\"#distance-queries\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<section id=\"introduction\">\n<h3>Introduction<a class=\"heading-anchor\" href=\"#introduction\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Les calculs de distance sur des données spatiales sont complexes, parce que malheureusement, la Terre n’est pas plate. Certaines requêtes de distance avec des champs dans un système de coordonnées géographiques doivent parfois être exprimées différemment en raison de limites dans PostGIS. Pour plus de détails, consultez la section <a class=\"reference internal\" href=\"/fr/2.1/ref/contrib/gis/model-api/#selecting-an-srid\"><span class=\"std std-ref\">Choix d’un SRID</span></a> dans la documentation <a class=\"reference internal\" href=\"/fr/2.1/ref/contrib/gis/model-api/\"><span class=\"doc\">API de modèle de GeoDjango</span></a>.</p>\n</section>\n<section id=\"distance-lookups\">\n<span id=\"distance-lookups-intro\"></span><h3>Recherches de distance<a class=\"heading-anchor\" href=\"#distance-lookups\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p><em>Disponibilité</em> : PostGIS, Oracle, SpatiaLite, PGRaster (natif)</p>\n<p>Les recherches de distance suivantes sont disponibles :</p>\n<ul class=\"simple\">\n<li><p><a class=\"reference internal\" href=\"/fr/2.1/ref/contrib/gis/geoquerysets/#std-fieldlookup-distance_lt\"><code class=\"xref std std-lookup docutils literal notranslate\"><span class=\"pre\">distance_lt</span></code></a></p></li>\n<li><p><a class=\"reference internal\" href=\"/fr/2.1/ref/contrib/gis/geoquerysets/#std-fieldlookup-distance_lte\"><code class=\"xref std std-lookup docutils literal notranslate\"><span class=\"pre\">distance_lte</span></code></a></p></li>\n<li><p><a class=\"reference internal\" href=\"/fr/2.1/ref/contrib/gis/geoquerysets/#std-fieldlookup-distance_gt\"><code class=\"xref std std-lookup docutils literal notranslate\"><span class=\"pre\">distance_gt</span></code></a></p></li>\n<li><p><a class=\"reference internal\" href=\"/fr/2.1/ref/contrib/gis/geoquerysets/#std-fieldlookup-distance_gte\"><code class=\"xref std std-lookup docutils literal notranslate\"><span class=\"pre\">distance_gte</span></code></a></p></li>\n<li><p><a class=\"reference internal\" href=\"/fr/2.1/ref/contrib/gis/geoquerysets/#std-fieldlookup-dwithin\"><code class=\"xref std std-lookup docutils literal notranslate\"><span class=\"pre\">dwithin</span></code></a></p></li>\n</ul>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Note</p>\n<p>Pour des <em>mensurations</em>, au lieu d’interroger sur les distances, utilisez la fonction <a class=\"reference internal\" href=\"/fr/2.1/ref/contrib/gis/functions/#django.contrib.gis.db.models.functions.Distance\" title=\"django.contrib.gis.db.models.functions.Distance\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">Distance</span></code></a>.</p>\n</aside>\n<p>Les recherches de distance acceptent un paramètre sous forme de tuple comprenant :</p>\n<ol class=\"arabic simple\">\n<li><p>Un objet géométrique ou matriciel sur lequel baser les calculs ; et</p></li>\n<li><p>Un nombre ou un objet <a class=\"reference internal\" href=\"/fr/2.1/ref/contrib/gis/measure/#django.contrib.gis.measure.Distance\" title=\"django.contrib.gis.measure.Distance\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">Distance</span></code></a> contenant la distance.</p></li>\n</ol>\n<p>Si un objet <a class=\"reference internal\" href=\"/fr/2.1/ref/contrib/gis/measure/#django.contrib.gis.measure.Distance\" title=\"django.contrib.gis.measure.Distance\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">Distance</span></code></a> est utilisé, il peut être exprimé dans n’importe quelle unité (le code SQL généré utilisera des unités converties dans celles du champ) ; sinon, les paramètres numériques sont supposés être dans la même unité que celle du champ.</p>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Note</p>\n<p>Dans PostGIS, <code class=\"docutils literal notranslate\"><span class=\"pre\">ST_Distance_Sphere</span></code> ne restreint <em>plus</em> les types géométriques sur lesquels les requêtes de distance géographiques sont appliquées <a class=\"footnote-reference brackets\" href=\"#fndistsphere15\" id=\"id8\" role=\"doc-noteref\"><span class=\"fn-bracket\">[</span>4<span class=\"fn-bracket\">]</span></a>. Cependant, ces requêtes peuvent être très lentes, car les distances de grand cercle doivent être calculées à la volée pour <em>chaque</em> ligne de la requête. La raison en est que l’index spatial des champs géométriques traditionnels ne peut pas être exploité.</p>\n<p>Pour de bien meilleures performances concernant les requêtes de distance WGS84, évaluez la possibilité d’utiliser plutôt des <a class=\"reference internal\" href=\"/fr/2.1/ref/contrib/gis/model-api/#geography-type\"><span class=\"std std-ref\">colonnes de type géographique</span></a> dans votre base de données car leur index spatial peut être exploité dans les requêtes de distance. Vous pouvez indiquer à GeoDjango de créer des colonnes géographiques en définissant <code class=\"docutils literal notranslate\"><span class=\"pre\">geography=True</span></code> dans la définition du champ.</p>\n</aside>\n<p>Par exemple, si l’on dispose d’un modèle <code class=\"docutils literal notranslate\"><span class=\"pre\">SouthTexasCity</span></code> (exemple tiré des <a class=\"reference external\" href=\"https://github.com/django/django/blob/master/tests/gis_tests/distapp/models.py\">tests de distance de GeoDjango</a>) avec un système de coordonnées <em>projeté</em> valide pour les villes du sud du Texas :</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.contrib.gis.db</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">models</span>\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">SouthTexasCity</span><span class=\"p\">(</span><span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">Model</span><span class=\"p\">):</span>\n    <span class=\"n\">name</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">CharField</span><span class=\"p\">(</span><span class=\"n\">max_length</span><span class=\"o\">=</span><span class=\"mi\">30</span><span class=\"p\">)</span>\n    <span class=\"c1\"># A projected coordinate system (only valid for South Texas!)</span>\n    <span class=\"c1\"># is used, units are in meters.</span>\n    <span class=\"n\">point</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">PointField</span><span class=\"p\">(</span><span class=\"n\">srid</span><span class=\"o\">=</span><span class=\"mi\">32140</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Les requêtes de distance suivantes pourraient être effectuées :</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.contrib.gis.geos</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">GEOSGeometry</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.contrib.gis.measure</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">D</span> <span class=\"c1\"># ``D`` is a shortcut for ``Distance``</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">geoapp.models</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">SouthTexasCity</span>\n<span class=\"go\"># Distances will be calculated from this point, which does not have to be projected.</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">pnt</span> <span class=\"o\">=</span> <span class=\"n\">GEOSGeometry</span><span class=\"p\">(</span><span class=\"s1\">&#39;POINT(-96.876369 29.905320)&#39;</span><span class=\"p\">,</span> <span class=\"n\">srid</span><span class=\"o\">=</span><span class=\"mi\">4326</span><span class=\"p\">)</span>\n<span class=\"go\"># If numeric parameter, units of field (meters in this case) are assumed.</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">qs</span> <span class=\"o\">=</span> <span class=\"n\">SouthTexasCity</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">filter</span><span class=\"p\">(</span><span class=\"n\">point__distance_lte</span><span class=\"o\">=</span><span class=\"p\">(</span><span class=\"n\">pnt</span><span class=\"p\">,</span> <span class=\"mi\">7000</span><span class=\"p\">))</span>\n<span class=\"go\"># Find all Cities within 7 km, &gt; 20 miles away, and &gt; 100 chains away (an obscure unit)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">qs</span> <span class=\"o\">=</span> <span class=\"n\">SouthTexasCity</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">filter</span><span class=\"p\">(</span><span class=\"n\">point__distance_lte</span><span class=\"o\">=</span><span class=\"p\">(</span><span class=\"n\">pnt</span><span class=\"p\">,</span> <span class=\"n\">D</span><span class=\"p\">(</span><span class=\"n\">km</span><span class=\"o\">=</span><span class=\"mi\">7</span><span class=\"p\">)))</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">qs</span> <span class=\"o\">=</span> <span class=\"n\">SouthTexasCity</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">filter</span><span class=\"p\">(</span><span class=\"n\">point__distance_gte</span><span class=\"o\">=</span><span class=\"p\">(</span><span class=\"n\">pnt</span><span class=\"p\">,</span> <span class=\"n\">D</span><span class=\"p\">(</span><span class=\"n\">mi</span><span class=\"o\">=</span><span class=\"mi\">20</span><span class=\"p\">)))</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">qs</span> <span class=\"o\">=</span> <span class=\"n\">SouthTexasCity</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">filter</span><span class=\"p\">(</span><span class=\"n\">point__distance_gte</span><span class=\"o\">=</span><span class=\"p\">(</span><span class=\"n\">pnt</span><span class=\"p\">,</span> <span class=\"n\">D</span><span class=\"p\">(</span><span class=\"n\">chain</span><span class=\"o\">=</span><span class=\"mi\">100</span><span class=\"p\">)))</span>\n</code></pre></div>\n<p>Les requêtes matricielles fonctionnent de la même manière en remplaçant simplement le champ géométrique <code class=\"docutils literal notranslate\"><span class=\"pre\">point</span></code> par un champ marticiel, ou l’objet <code class=\"docutils literal notranslate\"><span class=\"pre\">pnt</span></code> par un objet matriciel, ou les deux. Pour indiquer l’indice de bande d’une entrée matricielle dans le côté droit, un tuple ternaire peut être passé à la requête comme ceci :</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">qs</span> <span class=\"o\">=</span> <span class=\"n\">SouthTexasCity</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">filter</span><span class=\"p\">(</span><span class=\"n\">point__distance_gte</span><span class=\"o\">=</span><span class=\"p\">(</span><span class=\"n\">rst</span><span class=\"p\">,</span> <span class=\"mi\">2</span><span class=\"p\">,</span> <span class=\"n\">D</span><span class=\"p\">(</span><span class=\"n\">km</span><span class=\"o\">=</span><span class=\"mi\">7</span><span class=\"p\">)))</span>\n</code></pre></div>\n<p>Où la bande avec indice 2 (troisième bande) de la matrice <code class=\"docutils literal notranslate\"><span class=\"pre\">rst</span></code> serait utilisée pour la requête.</p>\n</section>\n</section>\n<section id=\"compatibility-tables\">\n<span id=\"compatibility-table\"></span><h2>Tableaux de compatibilité<a class=\"heading-anchor\" href=\"#compatibility-tables\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<section id=\"spatial-lookup-compatibility\">\n<span id=\"id10\"></span><h3>Recherches spatiales<a class=\"heading-anchor\" href=\"#spatial-lookup-compatibility\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Le tableau suivant fournit un résumé des requêtes spatiales disponibles pour chaque moteur de base de données spatial. Les requêtes PostGIS Raster (PGRaster) sont divisées dans les trois catégories décrites dans les <a class=\"reference internal\" href=\"#spatial-lookup-raster\"><span class=\"std std-ref\">détails de requêtes matricielles</span></a>: prise en charge native <code class=\"docutils literal notranslate\"><span class=\"pre\">N</span></code>, prise en charge native bilatérale <code class=\"docutils literal notranslate\"><span class=\"pre\">B</span></code> et prise en charge par conversion géométrique <code class=\"docutils literal notranslate\"><span class=\"pre\">C</span></code>.</p>\n<div class=\"table-scroll\" role=\"region\" tabindex=\"0\" aria-label=\"Table\"><table class=\"docutils align-default\">\n<thead>\n<tr class=\"row-odd\"><th class=\"head\"><p>Type de recherche</p></th>\n<th class=\"head\"><p>PostGIS</p></th>\n<th class=\"head\"><p>Oracle</p></th>\n<th class=\"head\"><p>MySQL <a class=\"footnote-reference brackets\" href=\"#id12\" id=\"id11\" role=\"doc-noteref\"><span class=\"fn-bracket\">[</span>6<span class=\"fn-bracket\">]</span></a></p></th>\n<th class=\"head\"><p>SpatiaLite</p></th>\n<th class=\"head\"><p>PGRaster</p></th>\n</tr>\n</thead>\n<tbody>\n<tr class=\"row-even\"><td><p><a class=\"reference internal\" href=\"/fr/2.1/ref/contrib/gis/geoquerysets/#std-fieldlookup-bbcontains\"><code class=\"xref std std-lookup docutils literal notranslate\"><span class=\"pre\">bbcontains</span></code></a></p></td>\n<td><p>X</p></td>\n<td></td>\n<td><p>X</p></td>\n<td><p>X</p></td>\n<td><p>N</p></td>\n</tr>\n<tr class=\"row-odd\"><td><p><a class=\"reference internal\" href=\"/fr/2.1/ref/contrib/gis/geoquerysets/#std-fieldlookup-bboverlaps\"><code class=\"xref std std-lookup docutils literal notranslate\"><span class=\"pre\">bboverlaps</span></code></a></p></td>\n<td><p>X</p></td>\n<td></td>\n<td><p>X</p></td>\n<td><p>X</p></td>\n<td><p>N</p></td>\n</tr>\n<tr class=\"row-even\"><td><p><a class=\"reference internal\" href=\"/fr/2.1/ref/contrib/gis/geoquerysets/#std-fieldlookup-contained\"><code class=\"xref std std-lookup docutils literal notranslate\"><span class=\"pre\">contained</span></code></a></p></td>\n<td><p>X</p></td>\n<td></td>\n<td><p>X</p></td>\n<td><p>X</p></td>\n<td><p>N</p></td>\n</tr>\n<tr class=\"row-odd\"><td><p><a class=\"reference internal\" href=\"/fr/2.1/ref/contrib/gis/geoquerysets/#std-fieldlookup-gis-contains\"><code class=\"xref std std-lookup docutils literal notranslate\"><span class=\"pre\">contains</span></code></a></p></td>\n<td><p>X</p></td>\n<td><p>X</p></td>\n<td><p>X</p></td>\n<td><p>X</p></td>\n<td><p>B</p></td>\n</tr>\n<tr class=\"row-even\"><td><p><a class=\"reference internal\" href=\"/fr/2.1/ref/contrib/gis/geoquerysets/#std-fieldlookup-contains_properly\"><code class=\"xref std std-lookup docutils literal notranslate\"><span class=\"pre\">contains_properly</span></code></a></p></td>\n<td><p>X</p></td>\n<td></td>\n<td></td>\n<td></td>\n<td><p>B</p></td>\n</tr>\n<tr class=\"row-odd\"><td><p><a class=\"reference internal\" href=\"/fr/2.1/ref/contrib/gis/geoquerysets/#std-fieldlookup-coveredby\"><code class=\"xref std std-lookup docutils literal notranslate\"><span class=\"pre\">coveredby</span></code></a></p></td>\n<td><p>X</p></td>\n<td><p>X</p></td>\n<td></td>\n<td></td>\n<td><p>B</p></td>\n</tr>\n<tr class=\"row-even\"><td><p><a class=\"reference internal\" href=\"/fr/2.1/ref/contrib/gis/geoquerysets/#std-fieldlookup-covers\"><code class=\"xref std std-lookup docutils literal notranslate\"><span class=\"pre\">covers</span></code></a></p></td>\n<td><p>X</p></td>\n<td><p>X</p></td>\n<td></td>\n<td></td>\n<td><p>B</p></td>\n</tr>\n<tr class=\"row-odd\"><td><p><a class=\"reference internal\" href=\"/fr/2.1/ref/contrib/gis/geoquerysets/#std-fieldlookup-crosses\"><code class=\"xref std std-lookup docutils literal notranslate\"><span class=\"pre\">crosses</span></code></a></p></td>\n<td><p>X</p></td>\n<td></td>\n<td></td>\n<td><p>X</p></td>\n<td><p>C</p></td>\n</tr>\n<tr class=\"row-even\"><td><p><a class=\"reference internal\" href=\"/fr/2.1/ref/contrib/gis/geoquerysets/#std-fieldlookup-disjoint\"><code class=\"xref std std-lookup docutils literal notranslate\"><span class=\"pre\">disjoint</span></code></a></p></td>\n<td><p>X</p></td>\n<td><p>X</p></td>\n<td><p>X</p></td>\n<td><p>X</p></td>\n<td><p>B</p></td>\n</tr>\n<tr class=\"row-odd\"><td><p><a class=\"reference internal\" href=\"/fr/2.1/ref/contrib/gis/geoquerysets/#std-fieldlookup-distance_gt\"><code class=\"xref std std-lookup docutils literal notranslate\"><span class=\"pre\">distance_gt</span></code></a></p></td>\n<td><p>X</p></td>\n<td><p>X</p></td>\n<td></td>\n<td><p>X</p></td>\n<td><p>N</p></td>\n</tr>\n<tr class=\"row-even\"><td><p><a class=\"reference internal\" href=\"/fr/2.1/ref/contrib/gis/geoquerysets/#std-fieldlookup-distance_gte\"><code class=\"xref std std-lookup docutils literal notranslate\"><span class=\"pre\">distance_gte</span></code></a></p></td>\n<td><p>X</p></td>\n<td><p>X</p></td>\n<td></td>\n<td><p>X</p></td>\n<td><p>N</p></td>\n</tr>\n<tr class=\"row-odd\"><td><p><a class=\"reference internal\" href=\"/fr/2.1/ref/contrib/gis/geoquerysets/#std-fieldlookup-distance_lt\"><code class=\"xref std std-lookup docutils literal notranslate\"><span class=\"pre\">distance_lt</span></code></a></p></td>\n<td><p>X</p></td>\n<td><p>X</p></td>\n<td></td>\n<td><p>X</p></td>\n<td><p>N</p></td>\n</tr>\n<tr class=\"row-even\"><td><p><a class=\"reference internal\" href=\"/fr/2.1/ref/contrib/gis/geoquerysets/#std-fieldlookup-distance_lte\"><code class=\"xref std std-lookup docutils literal notranslate\"><span class=\"pre\">distance_lte</span></code></a></p></td>\n<td><p>X</p></td>\n<td><p>X</p></td>\n<td></td>\n<td><p>X</p></td>\n<td><p>N</p></td>\n</tr>\n<tr class=\"row-odd\"><td><p><a class=\"reference internal\" href=\"/fr/2.1/ref/contrib/gis/geoquerysets/#std-fieldlookup-dwithin\"><code class=\"xref std std-lookup docutils literal notranslate\"><span class=\"pre\">dwithin</span></code></a></p></td>\n<td><p>X</p></td>\n<td><p>X</p></td>\n<td></td>\n<td><p>X</p></td>\n<td><p>B</p></td>\n</tr>\n<tr class=\"row-even\"><td><p><a class=\"reference internal\" href=\"/fr/2.1/ref/contrib/gis/geoquerysets/#std-fieldlookup-equals\"><code class=\"xref std std-lookup docutils literal notranslate\"><span class=\"pre\">equals</span></code></a></p></td>\n<td><p>X</p></td>\n<td><p>X</p></td>\n<td><p>X</p></td>\n<td><p>X</p></td>\n<td><p>C</p></td>\n</tr>\n<tr class=\"row-odd\"><td><p><a class=\"reference internal\" href=\"/fr/2.1/ref/models/querysets/#std-fieldlookup-exact\"><code class=\"xref std std-lookup docutils literal notranslate\"><span class=\"pre\">exact</span></code></a></p></td>\n<td><p>X</p></td>\n<td><p>X</p></td>\n<td><p>X</p></td>\n<td><p>X</p></td>\n<td><p>B</p></td>\n</tr>\n<tr class=\"row-even\"><td><p><a class=\"reference internal\" href=\"/fr/2.1/ref/contrib/gis/geoquerysets/#std-fieldlookup-intersects\"><code class=\"xref std std-lookup docutils literal notranslate\"><span class=\"pre\">intersects</span></code></a></p></td>\n<td><p>X</p></td>\n<td><p>X</p></td>\n<td><p>X</p></td>\n<td><p>X</p></td>\n<td><p>B</p></td>\n</tr>\n<tr class=\"row-odd\"><td><p><a class=\"reference internal\" href=\"/fr/2.1/ref/contrib/gis/geoquerysets/#std-fieldlookup-isvalid\"><code class=\"xref std std-lookup docutils literal notranslate\"><span class=\"pre\">isvalid</span></code></a></p></td>\n<td><p>X</p></td>\n<td><p>X</p></td>\n<td><p>X (≥ 5.7.5)</p></td>\n<td><p>X (LWGEOM)</p></td>\n<td></td>\n</tr>\n<tr class=\"row-even\"><td><p><a class=\"reference internal\" href=\"/fr/2.1/ref/contrib/gis/geoquerysets/#std-fieldlookup-overlaps\"><code class=\"xref std std-lookup docutils literal notranslate\"><span class=\"pre\">overlaps</span></code></a></p></td>\n<td><p>X</p></td>\n<td><p>X</p></td>\n<td><p>X</p></td>\n<td><p>X</p></td>\n<td><p>B</p></td>\n</tr>\n<tr class=\"row-odd\"><td><p><a class=\"reference internal\" href=\"/fr/2.1/ref/contrib/gis/geoquerysets/#std-fieldlookup-relate\"><code class=\"xref std std-lookup docutils literal notranslate\"><span class=\"pre\">relate</span></code></a></p></td>\n<td><p>X</p></td>\n<td><p>X</p></td>\n<td></td>\n<td><p>X</p></td>\n<td><p>C</p></td>\n</tr>\n<tr class=\"row-even\"><td><p><a class=\"reference internal\" href=\"/fr/2.1/ref/contrib/gis/geoquerysets/#std-fieldlookup-same_as\"><code class=\"xref std std-lookup docutils literal notranslate\"><span class=\"pre\">same_as</span></code></a></p></td>\n<td><p>X</p></td>\n<td><p>X</p></td>\n<td><p>X</p></td>\n<td><p>X</p></td>\n<td><p>B</p></td>\n</tr>\n<tr class=\"row-odd\"><td><p><a class=\"reference internal\" href=\"/fr/2.1/ref/contrib/gis/geoquerysets/#std-fieldlookup-touches\"><code class=\"xref std std-lookup docutils literal notranslate\"><span class=\"pre\">touches</span></code></a></p></td>\n<td><p>X</p></td>\n<td><p>X</p></td>\n<td><p>X</p></td>\n<td><p>X</p></td>\n<td><p>B</p></td>\n</tr>\n<tr class=\"row-even\"><td><p><a class=\"reference internal\" href=\"/fr/2.1/ref/contrib/gis/geoquerysets/#std-fieldlookup-within\"><code class=\"xref std std-lookup docutils literal notranslate\"><span class=\"pre\">within</span></code></a></p></td>\n<td><p>X</p></td>\n<td><p>X</p></td>\n<td><p>X</p></td>\n<td><p>X</p></td>\n<td><p>B</p></td>\n</tr>\n<tr class=\"row-odd\"><td><p><a class=\"reference internal\" href=\"/fr/2.1/ref/contrib/gis/geoquerysets/#std-fieldlookup-left\"><code class=\"xref std std-lookup docutils literal notranslate\"><span class=\"pre\">left</span></code></a></p></td>\n<td><p>X</p></td>\n<td></td>\n<td></td>\n<td></td>\n<td><p>C</p></td>\n</tr>\n<tr class=\"row-even\"><td><p><a class=\"reference internal\" href=\"/fr/2.1/ref/contrib/gis/geoquerysets/#std-fieldlookup-right\"><code class=\"xref std std-lookup docutils literal notranslate\"><span class=\"pre\">right</span></code></a></p></td>\n<td><p>X</p></td>\n<td></td>\n<td></td>\n<td></td>\n<td><p>C</p></td>\n</tr>\n<tr class=\"row-odd\"><td><p><a class=\"reference internal\" href=\"/fr/2.1/ref/contrib/gis/geoquerysets/#std-fieldlookup-overlaps_left\"><code class=\"xref std std-lookup docutils literal notranslate\"><span class=\"pre\">overlaps_left</span></code></a></p></td>\n<td><p>X</p></td>\n<td></td>\n<td></td>\n<td></td>\n<td><p>B</p></td>\n</tr>\n<tr class=\"row-even\"><td><p><a class=\"reference internal\" href=\"/fr/2.1/ref/contrib/gis/geoquerysets/#std-fieldlookup-overlaps_right\"><code class=\"xref std std-lookup docutils literal notranslate\"><span class=\"pre\">overlaps_right</span></code></a></p></td>\n<td><p>X</p></td>\n<td></td>\n<td></td>\n<td></td>\n<td><p>B</p></td>\n</tr>\n<tr class=\"row-odd\"><td><p><a class=\"reference internal\" href=\"/fr/2.1/ref/contrib/gis/geoquerysets/#std-fieldlookup-overlaps_above\"><code class=\"xref std std-lookup docutils literal notranslate\"><span class=\"pre\">overlaps_above</span></code></a></p></td>\n<td><p>X</p></td>\n<td></td>\n<td></td>\n<td></td>\n<td><p>C</p></td>\n</tr>\n<tr class=\"row-even\"><td><p><a class=\"reference internal\" href=\"/fr/2.1/ref/contrib/gis/geoquerysets/#std-fieldlookup-overlaps_below\"><code class=\"xref std std-lookup docutils literal notranslate\"><span class=\"pre\">overlaps_below</span></code></a></p></td>\n<td><p>X</p></td>\n<td></td>\n<td></td>\n<td></td>\n<td><p>C</p></td>\n</tr>\n<tr class=\"row-odd\"><td><p><a class=\"reference internal\" href=\"/fr/2.1/ref/contrib/gis/geoquerysets/#std-fieldlookup-strictly_above\"><code class=\"xref std std-lookup docutils literal notranslate\"><span class=\"pre\">strictly_above</span></code></a></p></td>\n<td><p>X</p></td>\n<td></td>\n<td></td>\n<td></td>\n<td><p>C</p></td>\n</tr>\n<tr class=\"row-even\"><td><p><a class=\"reference internal\" href=\"/fr/2.1/ref/contrib/gis/geoquerysets/#std-fieldlookup-strictly_below\"><code class=\"xref std std-lookup docutils literal notranslate\"><span class=\"pre\">strictly_below</span></code></a></p></td>\n<td><p>X</p></td>\n<td></td>\n<td></td>\n<td></td>\n<td><p>C</p></td>\n</tr>\n</tbody>\n</table>\n</div>\n</section>\n<section id=\"module-django.contrib.gis.db.models.functions\">\n<span id=\"database-functions\"></span><span id=\"database-functions-compatibility\"></span><h3>Fonctions de base de données<a class=\"heading-anchor\" href=\"#module-django.contrib.gis.db.models.functions\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Le tableau suivant indique en résumé quelles sont les fonctions géométriques de base de données disponibles pour chaque moteur spatial.</p>\n<div class=\"table-scroll\" role=\"region\" tabindex=\"0\" aria-label=\"Table\"><table class=\"docutils align-default\">\n<thead>\n<tr class=\"row-odd\"><th class=\"head\"><p>Fonction</p></th>\n<th class=\"head\"><p>PostGIS</p></th>\n<th class=\"head\"><p>Oracle</p></th>\n<th class=\"head\"><p>MySQL</p></th>\n<th class=\"head\"><p>SpatiaLite</p></th>\n</tr>\n</thead>\n<tbody>\n<tr class=\"row-even\"><td><p><a class=\"reference internal\" href=\"/fr/2.1/ref/contrib/gis/functions/#django.contrib.gis.db.models.functions.Area\" title=\"django.contrib.gis.db.models.functions.Area\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">Area</span></code></a></p></td>\n<td><p>X</p></td>\n<td><p>X</p></td>\n<td><p>X</p></td>\n<td><p>X</p></td>\n</tr>\n<tr class=\"row-odd\"><td><p><a class=\"reference internal\" href=\"/fr/2.1/ref/contrib/gis/functions/#django.contrib.gis.db.models.functions.AsGeoJSON\" title=\"django.contrib.gis.db.models.functions.AsGeoJSON\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">AsGeoJSON</span></code></a></p></td>\n<td><p>X</p></td>\n<td></td>\n<td><p>X (≥ 5.7.5)</p></td>\n<td><p>X</p></td>\n</tr>\n<tr class=\"row-even\"><td><p><a class=\"reference internal\" href=\"/fr/2.1/ref/contrib/gis/functions/#django.contrib.gis.db.models.functions.AsGML\" title=\"django.contrib.gis.db.models.functions.AsGML\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">AsGML</span></code></a></p></td>\n<td><p>X</p></td>\n<td><p>X</p></td>\n<td></td>\n<td><p>X</p></td>\n</tr>\n<tr class=\"row-odd\"><td><p><a class=\"reference internal\" href=\"/fr/2.1/ref/contrib/gis/functions/#django.contrib.gis.db.models.functions.AsKML\" title=\"django.contrib.gis.db.models.functions.AsKML\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">AsKML</span></code></a></p></td>\n<td><p>X</p></td>\n<td></td>\n<td></td>\n<td><p>X</p></td>\n</tr>\n<tr class=\"row-even\"><td><p><a class=\"reference internal\" href=\"/fr/2.1/ref/contrib/gis/functions/#django.contrib.gis.db.models.functions.AsSVG\" title=\"django.contrib.gis.db.models.functions.AsSVG\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">AsSVG</span></code></a></p></td>\n<td><p>X</p></td>\n<td></td>\n<td></td>\n<td><p>X</p></td>\n</tr>\n<tr class=\"row-odd\"><td><p><a class=\"reference internal\" href=\"/fr/2.1/ref/contrib/gis/functions/#django.contrib.gis.db.models.functions.Azimuth\" title=\"django.contrib.gis.db.models.functions.Azimuth\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">Azimuth</span></code></a></p></td>\n<td><p>X</p></td>\n<td></td>\n<td></td>\n<td><p>X (LWGEOM)</p></td>\n</tr>\n<tr class=\"row-even\"><td><p><a class=\"reference internal\" href=\"/fr/2.1/ref/contrib/gis/functions/#django.contrib.gis.db.models.functions.BoundingCircle\" title=\"django.contrib.gis.db.models.functions.BoundingCircle\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">BoundingCircle</span></code></a></p></td>\n<td><p>X</p></td>\n<td><p>X</p></td>\n<td></td>\n<td></td>\n</tr>\n<tr class=\"row-odd\"><td><p><a class=\"reference internal\" href=\"/fr/2.1/ref/contrib/gis/functions/#django.contrib.gis.db.models.functions.Centroid\" title=\"django.contrib.gis.db.models.functions.Centroid\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">Centroid</span></code></a></p></td>\n<td><p>X</p></td>\n<td><p>X</p></td>\n<td><p>X</p></td>\n<td><p>X</p></td>\n</tr>\n<tr class=\"row-even\"><td><p><a class=\"reference internal\" href=\"/fr/2.1/ref/contrib/gis/functions/#django.contrib.gis.db.models.functions.Difference\" title=\"django.contrib.gis.db.models.functions.Difference\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">Difference</span></code></a></p></td>\n<td><p>X</p></td>\n<td><p>X</p></td>\n<td><p>X</p></td>\n<td><p>X</p></td>\n</tr>\n<tr class=\"row-odd\"><td><p><a class=\"reference internal\" href=\"/fr/2.1/ref/contrib/gis/functions/#django.contrib.gis.db.models.functions.Distance\" title=\"django.contrib.gis.db.models.functions.Distance\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">Distance</span></code></a></p></td>\n<td><p>X</p></td>\n<td><p>X</p></td>\n<td><p>X</p></td>\n<td><p>X</p></td>\n</tr>\n<tr class=\"row-even\"><td><p><a class=\"reference internal\" href=\"/fr/2.1/ref/contrib/gis/functions/#django.contrib.gis.db.models.functions.Envelope\" title=\"django.contrib.gis.db.models.functions.Envelope\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">Envelope</span></code></a></p></td>\n<td><p>X</p></td>\n<td></td>\n<td><p>X</p></td>\n<td><p>X</p></td>\n</tr>\n<tr class=\"row-odd\"><td><p><a class=\"reference internal\" href=\"/fr/2.1/ref/contrib/gis/functions/#django.contrib.gis.db.models.functions.ForcePolygonCW\" title=\"django.contrib.gis.db.models.functions.ForcePolygonCW\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">ForcePolygonCW</span></code></a></p></td>\n<td><p>X</p></td>\n<td></td>\n<td></td>\n<td><p>X</p></td>\n</tr>\n<tr class=\"row-even\"><td><p><a class=\"reference internal\" href=\"/fr/2.1/ref/contrib/gis/functions/#django.contrib.gis.db.models.functions.ForceRHR\" title=\"django.contrib.gis.db.models.functions.ForceRHR\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">ForceRHR</span></code></a></p></td>\n<td><p>X</p></td>\n<td></td>\n<td></td>\n<td></td>\n</tr>\n<tr class=\"row-odd\"><td><p><a class=\"reference internal\" href=\"/fr/2.1/ref/contrib/gis/functions/#django.contrib.gis.db.models.functions.GeoHash\" title=\"django.contrib.gis.db.models.functions.GeoHash\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">GeoHash</span></code></a></p></td>\n<td><p>X</p></td>\n<td></td>\n<td><p>X (≥ 5.7.5)</p></td>\n<td><p>X (LWGEOM)</p></td>\n</tr>\n<tr class=\"row-even\"><td><p><a class=\"reference internal\" href=\"/fr/2.1/ref/contrib/gis/functions/#django.contrib.gis.db.models.functions.Intersection\" title=\"django.contrib.gis.db.models.functions.Intersection\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">Intersection</span></code></a></p></td>\n<td><p>X</p></td>\n<td><p>X</p></td>\n<td><p>X</p></td>\n<td><p>X</p></td>\n</tr>\n<tr class=\"row-odd\"><td><p><a class=\"reference internal\" href=\"/fr/2.1/ref/contrib/gis/functions/#django.contrib.gis.db.models.functions.IsValid\" title=\"django.contrib.gis.db.models.functions.IsValid\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">IsValid</span></code></a></p></td>\n<td><p>X</p></td>\n<td><p>X</p></td>\n<td><p>X (≥ 5.7.5)</p></td>\n<td><p>X (LWGEOM)</p></td>\n</tr>\n<tr class=\"row-even\"><td><p><a class=\"reference internal\" href=\"/fr/2.1/ref/contrib/gis/functions/#django.contrib.gis.db.models.functions.Length\" title=\"django.contrib.gis.db.models.functions.Length\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">Length</span></code></a></p></td>\n<td><p>X</p></td>\n<td><p>X</p></td>\n<td><p>X</p></td>\n<td><p>X</p></td>\n</tr>\n<tr class=\"row-odd\"><td><p><a class=\"reference internal\" href=\"/fr/2.1/ref/contrib/gis/functions/#django.contrib.gis.db.models.functions.LineLocatePoint\" title=\"django.contrib.gis.db.models.functions.LineLocatePoint\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">LineLocatePoint</span></code></a></p></td>\n<td><p>X</p></td>\n<td></td>\n<td></td>\n<td><p>X</p></td>\n</tr>\n<tr class=\"row-even\"><td><p><a class=\"reference internal\" href=\"/fr/2.1/ref/contrib/gis/functions/#django.contrib.gis.db.models.functions.MakeValid\" title=\"django.contrib.gis.db.models.functions.MakeValid\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">MakeValid</span></code></a></p></td>\n<td><p>X</p></td>\n<td></td>\n<td></td>\n<td><p>X (LWGEOM)</p></td>\n</tr>\n<tr class=\"row-odd\"><td><p><a class=\"reference internal\" href=\"/fr/2.1/ref/contrib/gis/functions/#django.contrib.gis.db.models.functions.MemSize\" title=\"django.contrib.gis.db.models.functions.MemSize\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">MemSize</span></code></a></p></td>\n<td><p>X</p></td>\n<td></td>\n<td></td>\n<td></td>\n</tr>\n<tr class=\"row-even\"><td><p><a class=\"reference internal\" href=\"/fr/2.1/ref/contrib/gis/functions/#django.contrib.gis.db.models.functions.NumGeometries\" title=\"django.contrib.gis.db.models.functions.NumGeometries\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">NumGeometries</span></code></a></p></td>\n<td><p>X</p></td>\n<td><p>X</p></td>\n<td><p>X</p></td>\n<td><p>X</p></td>\n</tr>\n<tr class=\"row-odd\"><td><p><a class=\"reference internal\" href=\"/fr/2.1/ref/contrib/gis/functions/#django.contrib.gis.db.models.functions.NumPoints\" title=\"django.contrib.gis.db.models.functions.NumPoints\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">NumPoints</span></code></a></p></td>\n<td><p>X</p></td>\n<td><p>X</p></td>\n<td><p>X</p></td>\n<td><p>X</p></td>\n</tr>\n<tr class=\"row-even\"><td><p><a class=\"reference internal\" href=\"/fr/2.1/ref/contrib/gis/functions/#django.contrib.gis.db.models.functions.Perimeter\" title=\"django.contrib.gis.db.models.functions.Perimeter\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">Perimeter</span></code></a></p></td>\n<td><p>X</p></td>\n<td><p>X</p></td>\n<td></td>\n<td><p>X</p></td>\n</tr>\n<tr class=\"row-odd\"><td><p><a class=\"reference internal\" href=\"/fr/2.1/ref/contrib/gis/functions/#django.contrib.gis.db.models.functions.PointOnSurface\" title=\"django.contrib.gis.db.models.functions.PointOnSurface\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">PointOnSurface</span></code></a></p></td>\n<td><p>X</p></td>\n<td><p>X</p></td>\n<td></td>\n<td><p>X</p></td>\n</tr>\n<tr class=\"row-even\"><td><p><a class=\"reference internal\" href=\"/fr/2.1/ref/contrib/gis/functions/#django.contrib.gis.db.models.functions.Reverse\" title=\"django.contrib.gis.db.models.functions.Reverse\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">Reverse</span></code></a></p></td>\n<td><p>X</p></td>\n<td><p>X</p></td>\n<td></td>\n<td><p>X</p></td>\n</tr>\n<tr class=\"row-odd\"><td><p><a class=\"reference internal\" href=\"/fr/2.1/ref/contrib/gis/functions/#django.contrib.gis.db.models.functions.Scale\" title=\"django.contrib.gis.db.models.functions.Scale\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">Scale</span></code></a></p></td>\n<td><p>X</p></td>\n<td></td>\n<td></td>\n<td><p>X</p></td>\n</tr>\n<tr class=\"row-even\"><td><p><a class=\"reference internal\" href=\"/fr/2.1/ref/contrib/gis/functions/#django.contrib.gis.db.models.functions.SnapToGrid\" title=\"django.contrib.gis.db.models.functions.SnapToGrid\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">SnapToGrid</span></code></a></p></td>\n<td><p>X</p></td>\n<td></td>\n<td></td>\n<td><p>X</p></td>\n</tr>\n<tr class=\"row-odd\"><td><p><a class=\"reference internal\" href=\"/fr/2.1/ref/contrib/gis/functions/#django.contrib.gis.db.models.functions.SymDifference\" title=\"django.contrib.gis.db.models.functions.SymDifference\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">SymDifference</span></code></a></p></td>\n<td><p>X</p></td>\n<td><p>X</p></td>\n<td><p>X</p></td>\n<td><p>X</p></td>\n</tr>\n<tr class=\"row-even\"><td><p><a class=\"reference internal\" href=\"/fr/2.1/ref/contrib/gis/functions/#django.contrib.gis.db.models.functions.Transform\" title=\"django.contrib.gis.db.models.functions.Transform\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">Transform</span></code></a></p></td>\n<td><p>X</p></td>\n<td><p>X</p></td>\n<td></td>\n<td><p>X</p></td>\n</tr>\n<tr class=\"row-odd\"><td><p><a class=\"reference internal\" href=\"/fr/2.1/ref/contrib/gis/functions/#django.contrib.gis.db.models.functions.Translate\" title=\"django.contrib.gis.db.models.functions.Translate\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">Translate</span></code></a></p></td>\n<td><p>X</p></td>\n<td></td>\n<td></td>\n<td><p>X</p></td>\n</tr>\n<tr class=\"row-even\"><td><p><a class=\"reference internal\" href=\"/fr/2.1/ref/contrib/gis/functions/#django.contrib.gis.db.models.functions.Union\" title=\"django.contrib.gis.db.models.functions.Union\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">Union</span></code></a></p></td>\n<td><p>X</p></td>\n<td><p>X</p></td>\n<td><p>X</p></td>\n<td><p>X</p></td>\n</tr>\n</tbody>\n</table>\n</div>\n</section>\n<section id=\"aggregate-functions\">\n<h3>Fonctions d’agrégation<a class=\"heading-anchor\" href=\"#aggregate-functions\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Le tableau suivant indique en résumé quelles fonctions d’agrégation géographiques sont disponibles pour chaque moteur de base de données spatiale. Notez que MySQL n’en prend en charge aucune et qu’il est donc exclu du tableau.</p>\n<div class=\"table-scroll\" role=\"region\" tabindex=\"0\" aria-label=\"Table\"><table class=\"docutils align-default\">\n<thead>\n<tr class=\"row-odd\"><th class=\"head\"><p>Méthode d’agrégation</p></th>\n<th class=\"head\"><p>PostGIS</p></th>\n<th class=\"head\"><p>Oracle</p></th>\n<th class=\"head\"><p>SpatiaLite</p></th>\n</tr>\n</thead>\n<tbody>\n<tr class=\"row-even\"><td><p><a class=\"reference internal\" href=\"/fr/2.1/ref/contrib/gis/geoquerysets/#django.contrib.gis.db.models.Collect\" title=\"django.contrib.gis.db.models.Collect\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">Collect</span></code></a></p></td>\n<td><p>X</p></td>\n<td></td>\n<td><p>X</p></td>\n</tr>\n<tr class=\"row-odd\"><td><p><a class=\"reference internal\" href=\"/fr/2.1/ref/contrib/gis/geoquerysets/#django.contrib.gis.db.models.Extent\" title=\"django.contrib.gis.db.models.Extent\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">Extent</span></code></a></p></td>\n<td><p>X</p></td>\n<td><p>X</p></td>\n<td><p>X</p></td>\n</tr>\n<tr class=\"row-even\"><td><p><a class=\"reference internal\" href=\"/fr/2.1/ref/contrib/gis/geoquerysets/#django.contrib.gis.db.models.Extent3D\" title=\"django.contrib.gis.db.models.Extent3D\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">Extent3D</span></code></a></p></td>\n<td><p>X</p></td>\n<td></td>\n<td></td>\n</tr>\n<tr class=\"row-odd\"><td><p><a class=\"reference internal\" href=\"/fr/2.1/ref/contrib/gis/geoquerysets/#django.contrib.gis.db.models.MakeLine\" title=\"django.contrib.gis.db.models.MakeLine\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">MakeLine</span></code></a></p></td>\n<td><p>X</p></td>\n<td></td>\n<td><p>X</p></td>\n</tr>\n<tr class=\"row-even\"><td><p><a class=\"reference internal\" href=\"/fr/2.1/ref/contrib/gis/geoquerysets/#django.contrib.gis.db.models.Union\" title=\"django.contrib.gis.db.models.Union\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">Union</span></code></a></p></td>\n<td><p>X</p></td>\n<td><p>X</p></td>\n<td><p>X</p></td>\n</tr>\n</tbody>\n</table>\n</div>\n<p class=\"rubric\">Notes de bas de page</p>\n<aside class=\"footnote-list brackets\">\n<aside class=\"footnote brackets\" id=\"fnwkt\" role=\"doc-footnote\">\n<span class=\"label\"><span class=\"fn-bracket\">[</span><a role=\"doc-backlink\" href=\"#id4\">1</a><span class=\"fn-bracket\">]</span></span>\n<p><em>Voir</em> Open Geospatial Consortium, Inc., <a class=\"reference external\" href=\"http://www.opengis.org/docs/99-049.pdf\">OpenGIS Simple Feature Specification For SQL</a>, Document 99-049 (5 mai 1999), au Ch. 3.2.5, p. 3-11 (SQL Textual Representation of Geometry).</p>\n</aside>\n<aside class=\"footnote brackets\" id=\"fnewkb\" role=\"doc-footnote\">\n<span class=\"label\"><span class=\"fn-bracket\">[</span><a role=\"doc-backlink\" href=\"#id5\">2</a><span class=\"fn-bracket\">]</span></span>\n<p><em>Voir</em> <a class=\"reference external\" href=\"https://postgis.net/docs/using_postgis_dbmanagement.html#EWKB_EWKT\">PostGIS EWKB, EWKT and Canonical Forms</a>, documentation de PostGIS au chap. 4.1.2.</p>\n</aside>\n<aside class=\"footnote brackets\" id=\"fngeojson\" role=\"doc-footnote\">\n<span class=\"label\"><span class=\"fn-bracket\">[</span><a role=\"doc-backlink\" href=\"#id6\">3</a><span class=\"fn-bracket\">]</span></span>\n<p><em>Voir</em> Howard Butler, Martin Daly, Allan Doyle, Tim Schaub, &amp; Christopher Schmidt, <a class=\"reference external\" href=\"http://geojson.org/geojson-spec.html\">The GeoJSON Format Specification</a>, révision 1.0 (16 juin 2008).</p>\n</aside>\n<aside class=\"footnote brackets\" id=\"fndistsphere15\" role=\"doc-footnote\">\n<span class=\"label\"><span class=\"fn-bracket\">[</span><a role=\"doc-backlink\" href=\"#id8\">4</a><span class=\"fn-bracket\">]</span></span>\n<p><em>Voir</em> la <a class=\"reference external\" href=\"https://postgis.net/docs/ST_DistanceSphere.html\">documentation de PostGIS</a> pour <code class=\"docutils literal notranslate\"><span class=\"pre\">ST_DistanceSphere</span></code>.</p>\n</aside>\n<aside class=\"footnote brackets\" id=\"fnmysqlidx\" role=\"doc-footnote\">\n<span class=\"label\"><span class=\"fn-bracket\">[</span><a role=\"doc-backlink\" href=\"#id3\">5</a><span class=\"fn-bracket\">]</span></span>\n<p><em>Voir</em> <a class=\"reference external\" href=\"https://dev.mysql.com/doc/refman/en/creating-spatial-indexes.html\">Création d’index spatiaux</a> dans le manuel de référence de MySQL :</p>\n<blockquote>\n<div><p>Pour les tables MyISAM, <code class=\"docutils literal notranslate\"><span class=\"pre\">SPATIAL</span> <span class=\"pre\">INDEX</span></code> crée un index R-tree. Pour les moteurs de stockage qui prennent en charge les index non spatiaux sur les colonnes spatiales, le moteur crée un index B-tree. Un index B-tree sur des valeurs spatiales est utile pour les recherches par valeur exacte, mais pas pour les recherches sur des intervalles.</p>\n</div></blockquote>\n</aside>\n<aside class=\"footnote brackets\" id=\"id12\" role=\"doc-footnote\">\n<span class=\"label\"><span class=\"fn-bracket\">[</span><a role=\"doc-backlink\" href=\"#id11\">6</a><span class=\"fn-bracket\">]</span></span>\n<p>Référez-vous à la section <a class=\"reference internal\" href=\"#mysql-spatial-limitations\"><span class=\"std std-ref\">Limitations spatiales de MySQL</span></a> pour plus de détails.</p>\n</aside>\n</aside>\n</section>\n</section>","rootId":"geodjango-database-api","toc":[{"title":"Moteurs de base de données spatiales","anchor":"module-django.contrib.gis.db.backends","children":[{"title":"Limitations spatiales de MySQL","anchor":"mysql-spatial-limitations","children":[]},{"title":"Données matricielles","anchor":"raster-support","children":[]}]},{"title":"Création et enregistrement de modèles avec des champs géométriques","anchor":"creating-and-saving-models-with-geometry-fields","children":[]},{"title":"Création et enregistrement de modèles avec des champs matriciels","anchor":"creating-and-saving-models-with-raster-fields","children":[]},{"title":"Recherches spatiales","anchor":"spatial-lookups","children":[{"title":"Recherches géométriques","anchor":"geometry-lookups","children":[]},{"title":"Recherches matricielles","anchor":"raster-lookups","children":[]}]},{"title":"Requêtes de distance","anchor":"distance-queries","children":[{"title":"Introduction","anchor":"introduction","children":[]},{"title":"Recherches de distance","anchor":"distance-lookups","children":[]}]},{"title":"Tableaux de compatibilité","anchor":"compatibility-tables","children":[{"title":"Recherches spatiales","anchor":"spatial-lookup-compatibility","children":[]},{"title":"Fonctions de base de données","anchor":"module-django.contrib.gis.db.models.functions","children":[]},{"title":"Fonctions d’agrégation","anchor":"aggregate-functions","children":[]}]}],"breadcrumbs":[{"docname":"ref/index","title":"Référence de l’API","url":"/fr/2.1/ref/"},{"docname":"ref/contrib/index","title":"Paquets contrib","url":"/fr/2.1/ref/contrib/"},{"docname":"ref/contrib/gis/index","title":"GeoDjango","url":"/fr/2.1/ref/contrib/gis/"}],"prev":{"docname":"ref/contrib/gis/model-api","title":"API de modèle de GeoDjango","url":"/fr/2.1/ref/contrib/gis/model-api/"},"next":{"docname":"ref/contrib/gis/forms-api","title":"API des formulaires GeoDjango","url":"/fr/2.1/ref/contrib/gis/forms-api/"},"formats":{"html":"/fr/2.1/ref/contrib/gis/db-api/","markdown":"/fr/2.1/ref/contrib/gis/db-api.md","json":"/fr/2.1/ref/contrib/gis/db-api.json"},"source":"https://github.com/django/django/blob/stable/2.1.x/docs/ref/contrib/gis/db-api.txt","official":"https://docs.djangoproject.com/fr/2.1/ref/contrib/gis/db-api/","inVersions":["6.1","6.0","5.2","5.1","5.0","4.2","4.1","4.0","3.2","3.1","3.0","2.2","2.1","2.0","1.11","1.10","1.9"],"inLocales":["en","zh-hans","fr","ja","id","pt-br","ko","es","el","pl"]}