{"title":"LayerMapping data import utility","version":"3.0","locale":"el","docname":"ref/contrib/gis/layermapping","url":"/el/3.0/ref/contrib/gis/layermapping/","canonical":"https://djangodocs.dev/el/3.0/ref/contrib/gis/layermapping/","summary":"The LayerMapping class provides a way to map the contents of vector spatial data files (e.g. shapefiles) into GeoDjango models. This utility grew out of the…","html":"<span id=\"layermapping-data-import-utility\"></span><h1><code class=\"docutils literal notranslate\"><span class=\"pre\">LayerMapping</span></code> data import utility<a class=\"heading-anchor\" href=\"#module-django.contrib.gis.utils.layermapping\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h1>\n<p>The <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> class provides a way to map the contents of\nvector spatial data files (e.g. shapefiles) into GeoDjango models.</p>\n<p>This utility grew out of the author’s personal needs to eliminate\nthe code repetition that went into pulling geometries and fields out of\na vector layer, converting to another coordinate system (e.g. WGS84), and\nthen inserting into a GeoDjango model.</p>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Σημείωση</p>\n<p>Use of <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> requires GDAL.</p>\n</aside>\n<aside class=\"admonition admonition-warning\" role=\"note\">\n<p class=\"admonition-title\">Προειδοποίηση</p>\n<p>GIS data sources, like shapefiles, may be very large.  If you find\nthat <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> is using too much memory, set\n<a class=\"reference internal\" href=\"/el/3.0/ref/settings/#std-setting-DEBUG\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">DEBUG</span></code></a> to <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code> in your settings.  When <a class=\"reference internal\" href=\"/el/3.0/ref/settings/#std-setting-DEBUG\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">DEBUG</span></code></a>\nis set to <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>, Django <a class=\"reference internal\" href=\"/el/3.0/faq/models/#faq-see-raw-sql-queries\"><span class=\"std std-ref\">automatically logs</span></a>\n<em>every</em> SQL query – and when SQL statements contain geometries, this may\nconsume more memory than is typical.</p>\n</aside>\n<section id=\"example\">\n<h2>Example<a class=\"heading-anchor\" href=\"#example\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<ol class=\"arabic\">\n<li><p>You need a GDAL-supported data source, like a shapefile (here we’re using\na simple polygon shapefile, <code class=\"docutils literal notranslate\"><span class=\"pre\">test_poly.shp</span></code>, with three features):</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>Now we define our corresponding Django model (make sure to use <a class=\"reference internal\" href=\"/el/3.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>Use <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> to extract all the features and place them in the\ndatabase:</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>Here, <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> transformed the three geometries from the shapefile\nin their original spatial reference system (WGS84) to the spatial reference\nsystem of the GeoDjango model (NAD83).  If no spatial reference system is\ndefined for the layer, use the <code class=\"docutils literal notranslate\"><span class=\"pre\">source_srs</span></code> keyword with a\n<a class=\"reference internal\" href=\"/el/3.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> object to specify one.</p>\n</section>\n<section id=\"layermapping-api\">\n<h2><code class=\"docutils literal notranslate\"><span class=\"pre\">LayerMapping</span></code> API<a class=\"heading-anchor\" href=\"#layermapping-api\"><span class=\"visually-hidden\">Link to this heading</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\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>The following are the arguments and keywords that may be used during\ninstantiation of <code class=\"docutils literal notranslate\"><span class=\"pre\">LayerMapping</span></code> objects.</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>Argument</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>The geographic model, <em>not</em> an 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>The path to the OGR-supported data source file\n(e.g., a shapefile).  Also accepts\n<a class=\"reference internal\" href=\"/el/3.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> instances.</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>A dictionary: keys are strings corresponding to\nthe model field, and values correspond to\nstring field names for the OGR feature, or if the\nmodel field is a geographic then it should\ncorrespond to the OGR geometry type,\ne.g., <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>Keyword Arguments</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>The index of the layer to use from the Data Source\n(defaults to 0)</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>Use this to specify the source SRS manually (for\nexample, some shapefiles don’t come with a <code class=\"docutils literal notranslate\"><span class=\"pre\">'.prj'</span></code>\nfile).  An integer SRID, WKT or PROJ.4 strings, and\n<a class=\"reference internal\" href=\"/el/3.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>\nobjects are accepted.</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>Specifies the character set encoding of the strings\nin the OGR data source.  For example, <code class=\"docutils literal notranslate\"><span class=\"pre\">'latin-1'</span></code>,\n<code class=\"docutils literal notranslate\"><span class=\"pre\">'utf-8'</span></code>, and <code class=\"docutils literal notranslate\"><span class=\"pre\">'cp437'</span></code> are all valid encoding\nparameters.</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>May be <code class=\"docutils literal notranslate\"><span class=\"pre\">'commit_on_success'</span></code> (default) or\n<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>Setting this to False will disable coordinate\ntransformations.  In other words, geometries will\nbe inserted into the database unmodified from their\noriginal state in the data source.</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>Setting this to the name, or a tuple of names,\nfrom the given  model will create models unique\nonly to the given name(s). Geometries from\neach feature will be added into the collection\nassociated with the unique model.  Forces\nthe transaction mode to be <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>Sets the database to use when importing spatial data.\nDefault is <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><code class=\"docutils literal notranslate\"><span class=\"pre\">save()</span></code> Keyword Arguments<a class=\"heading-anchor\" href=\"#save-keyword-arguments\"><span class=\"visually-hidden\">Link to this heading</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\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>The <code class=\"docutils literal notranslate\"><span class=\"pre\">save()</span></code> method also accepts keywords.  These keywords are\nused for controlling output logging, error handling, and for importing\nspecific feature ranges.</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>Save Keyword Arguments</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>May be set with a slice or tuple of\n(begin, end) feature ID’s to map from\nthe data source.  In other words, this\nkeyword enables the user to selectively\nimport a subset range of features in the\ngeographic data source.</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>When this keyword is set, status information\nwill be printed giving the number of features\nprocessed and successfully saved.  By default,\nprogress information will be printed every 1000\nfeatures processed, however, this default may\nbe overridden by setting this keyword with an\ninteger for the desired interval.</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>By default, non-fatal error notifications are\nprinted to <code class=\"docutils literal notranslate\"><span class=\"pre\">sys.stdout</span></code>, but this keyword may\nbe set to disable these 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>If set with an integer, transactions will\noccur at every step interval. For example, if\n<code class=\"docutils literal notranslate\"><span class=\"pre\">step=1000</span></code>, a commit would occur after the\n1,000th feature, the 2,000th feature 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>Status information will be written to this file\nhandle.  Defaults to using <code class=\"docutils literal notranslate\"><span class=\"pre\">sys.stdout</span></code>, but\nany object with a <code class=\"docutils literal notranslate\"><span class=\"pre\">write</span></code> method is supported.</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>Execution of the model mapping will cease upon\nthe first error encountered.  The default value\n(<code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code>)\nbehavior is to attempt to continue.</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>If set, information will be printed\nsubsequent to each model save\nexecuted on the database.</p></td>\n</tr>\n</tbody>\n</table>\n</div>\n</section>\n</section>\n<section id=\"troubleshooting\">\n<h2>Troubleshooting<a class=\"heading-anchor\" href=\"#troubleshooting\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<section id=\"running-out-of-memory\">\n<h3>Running out of memory<a class=\"heading-anchor\" href=\"#running-out-of-memory\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>As noted in the warning at the top of this section, Django stores all SQL\nqueries when <code class=\"docutils literal notranslate\"><span class=\"pre\">DEBUG=True</span></code>.  Set <code class=\"docutils literal notranslate\"><span class=\"pre\">DEBUG=False</span></code> in your settings, and this\nshould stop excessive memory use when running <code class=\"docutils literal notranslate\"><span class=\"pre\">LayerMapping</span></code> scripts.</p>\n</section>\n<section id=\"mysql-max-allowed-packet-error\">\n<h3>MySQL: <code class=\"docutils literal notranslate\"><span class=\"pre\">max_allowed_packet</span></code> error<a class=\"heading-anchor\" href=\"#mysql-max-allowed-packet-error\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>If you encounter the following error when using <code class=\"docutils literal notranslate\"><span class=\"pre\">LayerMapping</span></code> and 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>Then the solution is to increase the value of the <code class=\"docutils literal notranslate\"><span class=\"pre\">max_allowed_packet</span></code>\nsetting in your MySQL configuration.  For example, the default value may\nbe something low like one megabyte – the setting may be modified in MySQL’s\nconfiguration file (<code class=\"docutils literal notranslate\"><span class=\"pre\">my.cnf</span></code>) in the <code class=\"docutils literal notranslate\"><span class=\"pre\">[mysqld]</span></code> section:</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":"Example","anchor":"example","children":[]},{"title":"LayerMapping API","anchor":"layermapping-api","children":[{"title":"save() Keyword Arguments","anchor":"save-keyword-arguments","children":[]}]},{"title":"Troubleshooting","anchor":"troubleshooting","children":[{"title":"Running out of memory","anchor":"running-out-of-memory","children":[]},{"title":"MySQL: max_allowed_packet error","anchor":"mysql-max-allowed-packet-error","children":[]}]}],"breadcrumbs":[{"docname":"ref/index","title":"API Reference","url":"/el/3.0/ref/"},{"docname":"ref/contrib/index","title":"contrib packages","url":"/el/3.0/ref/contrib/"},{"docname":"ref/contrib/gis/index","title":"GeoDjango","url":"/el/3.0/ref/contrib/gis/"},{"docname":"ref/contrib/gis/utils","title":"GeoDjango Utilities","url":"/el/3.0/ref/contrib/gis/utils/"}],"prev":{"docname":"ref/contrib/gis/utils","title":"GeoDjango Utilities","url":"/el/3.0/ref/contrib/gis/utils/"},"next":{"docname":"ref/contrib/gis/ogrinspect","title":"OGR Inspection","url":"/el/3.0/ref/contrib/gis/ogrinspect/"},"formats":{"html":"/el/3.0/ref/contrib/gis/layermapping/","markdown":"/el/3.0/ref/contrib/gis/layermapping.md","json":"/el/3.0/ref/contrib/gis/layermapping.json"},"source":"https://github.com/django/django/blob/stable/3.0.x/docs/ref/contrib/gis/layermapping.txt","official":"https://docs.djangoproject.com/el/3.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"],"inLocales":["en","zh-hans","fr","ja","id","pt-br","ko","es","el","pl"]}