{"title":"Utilitaire d’importation de données LayerMapping","version":"2.0","locale":"fr","docname":"ref/contrib/gis/layermapping","url":"/fr/2.0/ref/contrib/gis/layermapping/","canonical":"https://djangodocs.dev/fr/2.0/ref/contrib/gis/layermapping/","summary":"La classe LayerMapping fournit une manière de faire correspondre du contenu provenant de fichiers de données spatiales (par ex. des fichiers shape) avec des modèles…","html":"<span id=\"layermapping-data-import-utility\"></span><h1>Utilitaire d’importation de données <code class=\"docutils literal notranslate\"><span class=\"pre\">LayerMapping</span></code><a class=\"heading-anchor\" href=\"#module-django.contrib.gis.utils.layermapping\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h1>\n<p>La classe <a class=\"reference internal\" href=\"#django.contrib.gis.utils.LayerMapping\" title=\"django.contrib.gis.utils.LayerMapping\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">LayerMapping</span></code></a> fournit une manière de faire correspondre du contenu provenant de fichiers de données spatiales (par ex. des fichiers shape) avec des modèles GeoDjango.</p>\n<p>Cet utilitaire a été fabriqué à partir des besoins personnels de son auteur qui a ressenti le besoin d’éliminer de la répétition de code provenant de l’extraction d’objets géométriques et de champs de données à partir d’une couche vectorielle, de les convertir dans un autre système de coordonnées (par ex. WGS84) et de les insérer dans un modèle GeoDjango.</p>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Note</p>\n<p>L’utilisation de <a class=\"reference internal\" href=\"#django.contrib.gis.utils.LayerMapping\" title=\"django.contrib.gis.utils.LayerMapping\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">LayerMapping</span></code></a> nécessite GDAL.</p>\n</aside>\n<aside class=\"admonition admonition-warning\" role=\"note\">\n<p class=\"admonition-title\">Avertissement</p>\n<p>Les sources de données GIS comme les fichiers shape peuvent être très volumineuses. Si vous constatez que <a class=\"reference internal\" href=\"#django.contrib.gis.utils.LayerMapping\" title=\"django.contrib.gis.utils.LayerMapping\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">LayerMapping</span></code></a> utilise trop de mémoire, définissez <a class=\"reference internal\" href=\"/fr/2.0/ref/settings/#std-setting-DEBUG\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">DEBUG</span></code></a> à <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code> dans vos réglages. Lorsque <a class=\"reference internal\" href=\"/fr/2.0/ref/settings/#std-setting-DEBUG\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">DEBUG</span></code></a> est défini à <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>, Django <a class=\"reference internal\" href=\"/fr/2.0/faq/models/#faq-see-raw-sql-queries\"><span class=\"std std-ref\">journalise automatiquement</span></a> <em>chaque</em> requête SQL, ce qui fait que lorsque des instructions SQL contiennent des géométries, il n’est pas étonnant de voir la consommation mémoire augmenter plus que d’habitude.</p>\n</aside>\n<section id=\"example\">\n<h2>Exemple<a class=\"heading-anchor\" href=\"#example\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<ol class=\"arabic\">\n<li><p>Vous avez besoin d’une source de données prise en charge par GDAL, comme un fichier shape (nous utiliserons ici un fichier shape simple formé de trois polygones) :</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\">DataSource</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">ds</span> <span class=\"o\">=</span> <span class=\"n\">DataSource</span><span class=\"p\">(</span><span class=\"s1\">&#39;test_poly.shp&#39;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">layer</span> <span class=\"o\">=</span> <span class=\"n\">ds</span><span class=\"p\">[</span><span class=\"mi\">0</span><span class=\"p\">]</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span><span class=\"n\">layer</span><span class=\"o\">.</span><span class=\"n\">fields</span><span class=\"p\">)</span> <span class=\"c1\"># Exploring the fields in the layer, we only want the &#39;str&#39; field.</span>\n<span class=\"go\">[&#39;float&#39;, &#39;int&#39;, &#39;str&#39;]</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span><span class=\"nb\">len</span><span class=\"p\">(</span><span class=\"n\">layer</span><span class=\"p\">))</span> <span class=\"c1\"># getting the number of features in the layer (should be 3)</span>\n<span class=\"go\">3</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span><span class=\"n\">layer</span><span class=\"o\">.</span><span class=\"n\">geom_type</span><span class=\"p\">)</span> <span class=\"c1\"># Should be &#39;Polygon&#39;</span>\n<span class=\"go\">Polygon</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span><span class=\"n\">layer</span><span class=\"o\">.</span><span class=\"n\">srs</span><span class=\"p\">)</span> <span class=\"c1\"># WGS84 in WKT</span>\n<span class=\"go\">GEOGCS[&quot;GCS_WGS_1984&quot;,</span>\n<span class=\"go\">    DATUM[&quot;WGS_1984&quot;,</span>\n<span class=\"go\">        SPHEROID[&quot;WGS_1984&quot;,6378137,298.257223563]],</span>\n<span class=\"go\">    PRIMEM[&quot;Greenwich&quot;,0],</span>\n<span class=\"go\">    UNIT[&quot;Degree&quot;,0.017453292519943295]]</span>\n</code></pre></div>\n</li>\n<li><p>Nous définissons ensuite le modèle Django correspondant (assurez-vous d’utiliser <a class=\"reference internal\" href=\"/fr/2.0/ref/django-admin/#django-admin-migrate\"><code class=\"xref std std-djadmin docutils literal notranslate\"><span class=\"pre\">migrate</span></code></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=\"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\">TestGeo</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\">25</span><span class=\"p\">)</span> <span class=\"c1\"># corresponds to the &#39;str&#39; field</span>\n    <span class=\"n\">poly</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">PolygonField</span><span class=\"p\">(</span><span class=\"n\">srid</span><span class=\"o\">=</span><span class=\"mi\">4269</span><span class=\"p\">)</span> <span class=\"c1\"># we want our model in a different SRID</span>\n\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"fm\">__str__</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">):</span>\n        <span class=\"k\">return</span> <span class=\"s1\">&#39;Name: </span><span class=\"si\">%s</span><span class=\"s1\">&#39;</span> <span class=\"o\">%</span> <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">name</span>\n</code></pre></div>\n</li>\n<li><p>Utilisez <a class=\"reference internal\" href=\"#django.contrib.gis.utils.LayerMapping\" title=\"django.contrib.gis.utils.LayerMapping\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">LayerMapping</span></code></a> pour extraire tous les éléments et les placer dans la base de donné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.utils</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">LayerMapping</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\">TestGeo</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">mapping</span> <span class=\"o\">=</span> <span class=\"p\">{</span><span class=\"s1\">&#39;name&#39;</span> <span class=\"p\">:</span> <span class=\"s1\">&#39;str&#39;</span><span class=\"p\">,</span> <span class=\"c1\"># The &#39;name&#39; model field maps to the &#39;str&#39; layer field.</span>\n<span class=\"go\">               &#39;poly&#39; : &#39;POLYGON&#39;, # For geometry fields use OGC name.</span>\n<span class=\"go\">               } # The mapping is a dictionary</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">lm</span> <span class=\"o\">=</span> <span class=\"n\">LayerMapping</span><span class=\"p\">(</span><span class=\"n\">TestGeo</span><span class=\"p\">,</span> <span class=\"s1\">&#39;test_poly.shp&#39;</span><span class=\"p\">,</span> <span class=\"n\">mapping</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">lm</span><span class=\"o\">.</span><span class=\"n\">save</span><span class=\"p\">(</span><span class=\"n\">verbose</span><span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">)</span> <span class=\"c1\"># Save the layermap, imports the data.</span>\n<span class=\"go\">Saved: Name: 1</span>\n<span class=\"go\">Saved: Name: 2</span>\n<span class=\"go\">Saved: Name: 3</span>\n</code></pre></div>\n</li>\n</ol>\n<p>Dans cet exemple, <a class=\"reference internal\" href=\"#django.contrib.gis.utils.LayerMapping\" title=\"django.contrib.gis.utils.LayerMapping\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">LayerMapping</span></code></a> a simplement transformé les trois objets géométriques du fichier shape de leur système de référence spatiale original (WGS84) vers le système de référence spatiale du modèle GeoDjango (NAD83). Si aucun système de référence spatiale n’avait été défini dans la couche, il aurait fallu employer le paramètre <code class=\"docutils literal notranslate\"><span class=\"pre\">source_srs</span></code> avec un objet <a class=\"reference internal\" href=\"/fr/2.0/ref/contrib/gis/gdal/#django.contrib.gis.gdal.SpatialReference\" title=\"django.contrib.gis.gdal.SpatialReference\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">SpatialReference</span></code></a> pour en définir un.</p>\n</section>\n<section id=\"layermapping-api\">\n<h2>API de <code class=\"docutils literal notranslate\"><span class=\"pre\">LayerMapping</span></code><a class=\"heading-anchor\" href=\"#layermapping-api\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.utils.LayerMapping\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">LayerMapping</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">model</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">data_source</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">mapping</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">layer</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">0</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">source_srs</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">encoding</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">transaction_mode</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">'commit_on_success'</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">transform</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">True</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">unique</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">True</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">using</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">'default'</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.utils.LayerMapping\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Voici les paramètres positionnels et nommés pouvant être utilisés durant la création d’instances d’objets <code class=\"docutils literal notranslate\"><span class=\"pre\">LayerMapping</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>Paramètre</p></th>\n<th class=\"head\"><p>Description</p></th>\n</tr>\n</thead>\n<tbody>\n<tr class=\"row-even\"><td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">model</span></code></p></td>\n<td><p>Le modèle géographique, <em>pas</em> une instance.</p></td>\n</tr>\n<tr class=\"row-odd\"><td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">data_source</span></code></p></td>\n<td><p>Le chemin vers le fichier de source de données pris en charge par OGR (par ex. un fichier shape). Accepte aussi des instances de <a class=\"reference internal\" href=\"/fr/2.0/ref/contrib/gis/gdal/#django.contrib.gis.gdal.DataSource\" title=\"django.contrib.gis.gdal.DataSource\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">django.contrib.gis.gdal.DataSource</span></code></a>.</p></td>\n</tr>\n<tr class=\"row-even\"><td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">mapping</span></code></p></td>\n<td><p>Un dictionnaire : les clés sont des chaînes correspondant aux champs de modèle et les valeurs correspondent aux noms de champs des éléments OGR ou, dans le cas où le champ de modèle est géographique, au type géométrique OGR, par ex. <code class=\"docutils literal notranslate\"><span class=\"pre\">'POINT'</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">'LINESTRING'</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">'POLYGON'</span></code>.</p></td>\n</tr>\n</tbody>\n</table>\n</div>\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>Paramètres nommés</p></th>\n<th class=\"head\"></th>\n</tr>\n</thead>\n<tbody>\n<tr class=\"row-even\"><td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">layer</span></code></p></td>\n<td><p>L’indice de la couche à utiliser dans la source de données (0 par défaut).</p></td>\n</tr>\n<tr class=\"row-odd\"><td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">source_srs</span></code></p></td>\n<td><p>Utile pour définir manuellement le système de référence spatiale de la source (par exemple pour les fichiers shape sans fichier <code class=\"docutils literal notranslate\"><span class=\"pre\">'.prj'</span></code> annexe). Les valeurs acceptées sont un code SRID nombre entier, une chaîne WKT ou PROJ.4, ou un objet <a class=\"reference internal\" href=\"/fr/2.0/ref/contrib/gis/gdal/#django.contrib.gis.gdal.SpatialReference\" title=\"django.contrib.gis.gdal.SpatialReference\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">django.contrib.gis.gdal.SpatialReference</span></code></a>.</p></td>\n</tr>\n<tr class=\"row-even\"><td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">encoding</span></code></p></td>\n<td><p>Définit le codage du jeu de caractères du contenu textuel dans la source de données OGR. Par exemple, <code class=\"docutils literal notranslate\"><span class=\"pre\">'latin-1'</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">'utf-8'</span></code> et <code class=\"docutils literal notranslate\"><span class=\"pre\">'cp437'</span></code> sont tous des paramètres de codage valables.</p></td>\n</tr>\n<tr class=\"row-odd\"><td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">transaction_mode</span></code></p></td>\n<td><p>Peut être <code class=\"docutils literal notranslate\"><span class=\"pre\">'commit_on_success'</span></code> (par défaut) ou <code class=\"docutils literal notranslate\"><span class=\"pre\">'autocommit'</span></code>.</p></td>\n</tr>\n<tr class=\"row-even\"><td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">transform</span></code></p></td>\n<td><p>Quand ce paramètre vaut <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code>, les transformations de coordonnées sont désactivées. En d’autres termes, les objets géométriques sont insérés dans la base de données exactement tels qu’ils sont lus à partir de leur source de données.</p></td>\n</tr>\n<tr class=\"row-odd\"><td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">unique</span></code></p></td>\n<td><p>Ce paramètre peut contenir un nom ou un tuple de noms du modèle concerné afin que les instances créées soient uniques pour le ou les noms de champs donnés. Les objets géométriques de chaque élément seront ajoutés à la collection associée au modèle unique. Le mode de transaction est forcé à <code class=\"docutils literal notranslate\"><span class=\"pre\">'autocommit'</span></code>.</p></td>\n</tr>\n<tr class=\"row-even\"><td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">using</span></code></p></td>\n<td><p>Définit la base de données à utiliser lors de l’importation de données spatiales. La valeur par défaut est <code class=\"docutils literal notranslate\"><span class=\"pre\">'default'</span></code>.</p></td>\n</tr>\n</tbody>\n</table>\n</div>\n<section id=\"save-keyword-arguments\">\n<h3>Paramètres nommés de <code class=\"docutils literal notranslate\"><span class=\"pre\">save()</span></code><a class=\"heading-anchor\" href=\"#save-keyword-arguments\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.utils.LayerMapping.save\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">LayerMapping.</span></span><span class=\"sig-name descname\"><span class=\"pre\">save</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">verbose</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">False</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">fid_range</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">False</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">step</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">False</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">progress</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">False</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">silent</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">False</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">stream</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">sys.stdout</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">strict</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">False</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.utils.LayerMapping.save\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>La méthode <code class=\"docutils literal notranslate\"><span class=\"pre\">save()</span></code> accepte aussi des paramètres nommés. Ils sont utilisés pour contrôler la journalisation en sortie, le traitement des erreurs et pour l’importation de sous-ensembles d’éléments.</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>Paramètre nommé de <code class=\"docutils literal notranslate\"><span class=\"pre\">save</span></code></p></th>\n<th class=\"head\"><p>Description</p></th>\n</tr>\n</thead>\n<tbody>\n<tr class=\"row-even\"><td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">fid_range</span></code></p></td>\n<td><p>Peut être défini avec une segmentation ou un tuple <code class=\"docutils literal notranslate\"><span class=\"pre\">(début,</span> <span class=\"pre\">fin)</span></code> d’identifiants d’éléments dans la source de données. Autrement dit, ce paramètre permet d’importer un sous-ensemble d’éléments de manière sélective dans la source de données géographique.</p></td>\n</tr>\n<tr class=\"row-odd\"><td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">progress</span></code></p></td>\n<td><p>Si ce paramètre contient <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>, des informations de détail sont affichées pour indiquer le nombre d’éléments traités et enregistrés. Par défaut, des informations de progression sont affichées après chaque groupe de 1000 éléments traités. Ce comportement peut être surchargé en attribuant un nombre entier à ce paramètre pour définir l’intervalle souhaité.</p></td>\n</tr>\n<tr class=\"row-even\"><td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">silent</span></code></p></td>\n<td><p>Par défaut, les notifications d’erreurs non fatales sont affichées sur <code class=\"docutils literal notranslate\"><span class=\"pre\">sys.stdout</span></code>, mais ce paramètre booléen peut être défini pour désactiver ces notifications.</p></td>\n</tr>\n<tr class=\"row-odd\"><td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">step</span></code></p></td>\n<td><p>Lorsqu’il contient un nombre entier, définit l’intervalle d’enregistrement par transaction. Par exemple, si <code class=\"docutils literal notranslate\"><span class=\"pre\">step=1000</span></code>, une transaction est validée (commit) après le 1000e élément, après le 2000e élément, etc.</p></td>\n</tr>\n<tr class=\"row-even\"><td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">stream</span></code></p></td>\n<td><p>Les informations de progression sont écrites sur ce flux fichier. Par défaut, il s’agit de <code class=\"docutils literal notranslate\"><span class=\"pre\">sys.stdout</span></code>, mais tout objet comportant une méthode <code class=\"docutils literal notranslate\"><span class=\"pre\">write</span></code> convient également.</p></td>\n</tr>\n<tr class=\"row-odd\"><td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">strict</span></code></p></td>\n<td><p>Si ce paramètre vaut <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>, l’importation d’éléments dans le modèle s’arrête dès qu’une première erreur est rencontrée. Avec le comportement par défaut (<code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code>), le script tente de poursuivre.</p></td>\n</tr>\n<tr class=\"row-even\"><td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">verbose</span></code></p></td>\n<td><p>Si défini à <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>, des informations s’affichent après chaque enregistrement de modèle dans la base de données.</p></td>\n</tr>\n</tbody>\n</table>\n</div>\n</section>\n</section>\n<section id=\"troubleshooting\">\n<h2>Dépannage<a class=\"heading-anchor\" href=\"#troubleshooting\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<section id=\"running-out-of-memory\">\n<h3>Consommation excessive de mémoire<a class=\"heading-anchor\" href=\"#running-out-of-memory\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Comme relevé dans l’avertissement en haut de cette section, Django mémorise toutes les requêtes SQL lorsque <code class=\"docutils literal notranslate\"><span class=\"pre\">DEBUG=True</span></code>. Définissez <code class=\"docutils literal notranslate\"><span class=\"pre\">DEBUG=False</span></code> dans vos réglages pour empêcher une consommation excessive de la mémoire lorsque vous exécutez les scripts <code class=\"docutils literal notranslate\"><span class=\"pre\">LayerMapping</span></code>.</p>\n</section>\n<section id=\"mysql-max-allowed-packet-error\">\n<h3>MySQL : erreur <code class=\"docutils literal notranslate\"><span class=\"pre\">max_allowed_packet</span></code><a class=\"heading-anchor\" href=\"#mysql-max-allowed-packet-error\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Si vous rencontrez l’erreur suivante lorsque vous utilisez la fonctionnalité <code class=\"docutils literal notranslate\"><span class=\"pre\">LayerMapping</span></code> avec MySQL :</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=\"n\">OperationalError</span><span class=\"p\">:</span> <span class=\"p\">(</span><span class=\"mi\">1153</span><span class=\"p\">,</span> <span class=\"s2\">&quot;Got a packet bigger than &#39;max_allowed_packet&#39; bytes&quot;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>La solution est alors d’augmenter la valeur du paramètre <code class=\"docutils literal notranslate\"><span class=\"pre\">max_allowed_packet</span></code> dans votre configuration de MySQL. Par exemple, la valeur par défaut peut être parfois aussi basse qu’un mégaoctet. Ce paramètre peut être modifié dans le fichier de configuration de MySQL (<code class=\"docutils literal notranslate\"><span class=\"pre\">my.cnf</span></code>) à la section <code class=\"docutils literal notranslate\"><span class=\"pre\">[mysqld]</span></code>:</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=\"n\">max_allowed_packet</span> <span class=\"o\">=</span> <span class=\"mi\">10</span><span class=\"n\">M</span>\n</code></pre></div>\n</section>\n</section>","rootId":"module-django.contrib.gis.utils.layermapping","toc":[{"title":"Exemple","anchor":"example","children":[]},{"title":"API de LayerMapping","anchor":"layermapping-api","children":[{"title":"Paramètres nommés de save()","anchor":"save-keyword-arguments","children":[]}]},{"title":"Dépannage","anchor":"troubleshooting","children":[{"title":"Consommation excessive de mémoire","anchor":"running-out-of-memory","children":[]},{"title":"MySQL : erreur max_allowed_packet","anchor":"mysql-max-allowed-packet-error","children":[]}]}],"breadcrumbs":[{"docname":"ref/index","title":"Référence de l’API","url":"/fr/2.0/ref/"},{"docname":"ref/contrib/index","title":"Paquets contrib","url":"/fr/2.0/ref/contrib/"},{"docname":"ref/contrib/gis/index","title":"GeoDjango","url":"/fr/2.0/ref/contrib/gis/"},{"docname":"ref/contrib/gis/utils","title":"Utilitaires GeoDjango","url":"/fr/2.0/ref/contrib/gis/utils/"}],"prev":{"docname":"ref/contrib/gis/utils","title":"Utilitaires GeoDjango","url":"/fr/2.0/ref/contrib/gis/utils/"},"next":{"docname":"ref/contrib/gis/ogrinspect","title":"Inspection OGR","url":"/fr/2.0/ref/contrib/gis/ogrinspect/"},"formats":{"html":"/fr/2.0/ref/contrib/gis/layermapping/","markdown":"/fr/2.0/ref/contrib/gis/layermapping.md","json":"/fr/2.0/ref/contrib/gis/layermapping.json"},"source":"https://github.com/django/django/blob/stable/2.0.x/docs/ref/contrib/gis/layermapping.txt","official":"https://docs.djangoproject.com/fr/2.0/ref/contrib/gis/layermapping/","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"]}