<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>LayerMapping data import utility — Django 1.5.9 documentation</title> <link rel="stylesheet" href="../../../_static/default.css" type="text/css" /> <link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" /> <script type="text/javascript"> var DOCUMENTATION_OPTIONS = { URL_ROOT: '../../../', VERSION: '1.5.9', COLLAPSE_INDEX: false, FILE_SUFFIX: '.html', HAS_SOURCE: true }; </script> <script type="text/javascript" src="../../../_static/jquery.js"></script> <script type="text/javascript" src="../../../_static/underscore.js"></script> <script type="text/javascript" src="../../../_static/doctools.js"></script> <link rel="top" title="Django 1.5.9 documentation" href="../../../index.html" /> <link rel="up" title="GeoDjango Utilities" href="utils.html" /> <link rel="next" title="OGR Inspection" href="ogrinspect.html" /> <link rel="prev" title="GeoDjango Utilities" href="utils.html" /> <script type="text/javascript" src="../../../templatebuiltins.js"></script> <script type="text/javascript"> (function($) { if (!django_template_builtins) { // templatebuiltins.js missing, do nothing. return; } $(document).ready(function() { // Hyperlink Django template tags and filters var base = "../../templates/builtins.html"; if (base == "#") { // Special case for builtins.html itself base = ""; } // Tags are keywords, class '.k' $("div.highlight\\-html\\+django span.k").each(function(i, elem) { var tagname = $(elem).text(); if ($.inArray(tagname, django_template_builtins.ttags) != -1) { var fragment = tagname.replace(/_/, '-'); $(elem).html("<a href='" + base + "#" + fragment + "'>" + tagname + "</a>"); } }); // Filters are functions, class '.nf' $("div.highlight\\-html\\+django span.nf").each(function(i, elem) { var filtername = $(elem).text(); if ($.inArray(filtername, django_template_builtins.tfilters) != -1) { var fragment = filtername.replace(/_/, '-'); $(elem).html("<a href='" + base + "#" + fragment + "'>" + filtername + "</a>"); } }); }); })(jQuery); </script> </head> <body> <div class="document"> <div id="custom-doc" class="yui-t6"> <div id="hd"> <h1><a href="../../../index.html">Django 1.5.9 documentation</a></h1> <div id="global-nav"> <a title="Home page" href="../../../index.html">Home</a> | <a title="Table of contents" href="../../../contents.html">Table of contents</a> | <a title="Global index" href="../../../genindex.html">Index</a> | <a title="Module index" href="../../../py-modindex.html">Modules</a> </div> <div class="nav"> « <a href="utils.html" title="GeoDjango Utilities">previous</a> | <a href="../../index.html" title="API Reference" accesskey="U">up</a> | <a href="ogrinspect.html" title="OGR Inspection">next</a> »</div> </div> <div id="bd"> <div id="yui-main"> <div class="yui-b"> <div class="yui-g" id="ref-contrib-gis-layermapping"> <div class="section" id="s-module-django.contrib.gis.utils.layermapping"> <span id="s-layermapping-data-import-utility"></span><span id="s-ref-layermapping"></span><span id="module-django.contrib.gis.utils.layermapping"></span><span id="layermapping-data-import-utility"></span><span id="ref-layermapping"></span><h1><tt class="docutils literal"><span class="pre">LayerMapping</span></tt> data import utility<a class="headerlink" href="#module-django.contrib.gis.utils.layermapping" title="Permalink to this headline">¶</a></h1> <p>The <a class="reference internal" href="#django.contrib.gis.utils.LayerMapping" title="django.contrib.gis.utils.LayerMapping"><tt class="xref py py-class docutils literal"><span class="pre">LayerMapping</span></tt></a> class provides a way to map the contents of vector spatial data files (e.g. shapefiles) into GeoDjango models.</p> <p>This utility grew out of the author’s personal needs to eliminate the code repetition that went into pulling geometries and fields out of a vector layer, converting to another coordinate system (e.g. WGS84), and then inserting into a GeoDjango model.</p> <div class="admonition note"> <p class="first admonition-title">Note</p> <p class="last">Use of <a class="reference internal" href="#django.contrib.gis.utils.LayerMapping" title="django.contrib.gis.utils.LayerMapping"><tt class="xref py py-class docutils literal"><span class="pre">LayerMapping</span></tt></a> requires GDAL.</p> </div> <div class="admonition warning"> <p class="first admonition-title">Warning</p> <p class="last">GIS data sources, like shapefiles, may be very large. If you find that <a class="reference internal" href="#django.contrib.gis.utils.LayerMapping" title="django.contrib.gis.utils.LayerMapping"><tt class="xref py py-class docutils literal"><span class="pre">LayerMapping</span></tt></a> is using too much memory, set <a class="reference internal" href="../../settings.html#std:setting-DEBUG"><tt class="xref std std-setting docutils literal"><span class="pre">DEBUG</span></tt></a> to <tt class="docutils literal"><span class="pre">False</span></tt> in your settings. When <a class="reference internal" href="../../settings.html#std:setting-DEBUG"><tt class="xref std std-setting docutils literal"><span class="pre">DEBUG</span></tt></a> is set to <tt class="docutils literal"><span class="pre">True</span></tt>, Django <a class="reference internal" href="../../../faq/models.html#faq-see-raw-sql-queries"><em>automatically logs</em></a> <em>every</em> SQL query – thus, when SQL statements contain geometries, it is easy to consume more memory than is typical.</p> </div> <div class="section" id="s-example"> <span id="example"></span><h2>Example<a class="headerlink" href="#example" title="Permalink to this headline">¶</a></h2> <ol class="arabic"> <li><p class="first">You need a GDAL-supported data source, like a shapefile (here we’re using a simple polygon shapefile, <tt class="docutils literal"><span class="pre">test_poly.shp</span></tt>, with three features):</p> <div class="highlight-python"><div class="highlight"><pre><span class="gp">>>> </span><span class="kn">from</span> <span class="nn">django.contrib.gis.gdal</span> <span class="kn">import</span> <span class="n">DataSource</span> <span class="gp">>>> </span><span class="n">ds</span> <span class="o">=</span> <span class="n">DataSource</span><span class="p">(</span><span class="s">'test_poly.shp'</span><span class="p">)</span> <span class="gp">>>> </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> <span class="gp">>>> </span><span class="k">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="c"># Exploring the fields in the layer, we only want the 'str' field.</span> <span class="go">['float', 'int', 'str']</span> <span class="gp">>>> </span><span class="k">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="c"># getting the number of features in the layer (should be 3)</span> <span class="go">3</span> <span class="gp">>>> </span><span class="k">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="c"># Should be 'Polygon'</span> <span class="go">Polygon</span> <span class="gp">>>> </span><span class="k">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="c"># WGS84 in WKT</span> <span class="go">GEOGCS["GCS_WGS_1984",</span> <span class="go"> DATUM["WGS_1984",</span> <span class="go"> SPHEROID["WGS_1984",6378137,298.257223563]],</span> <span class="go"> PRIMEM["Greenwich",0],</span> <span class="go"> UNIT["Degree",0.017453292519943295]]</span> </pre></div> </div> </li> <li><p class="first">Now we define our corresponding Django model (make sure to use <tt class="docutils literal"><span class="pre">syncdb</span></tt>):</p> <div class="highlight-python"><div class="highlight"><pre><span class="kn">from</span> <span class="nn">django.contrib.gis.db</span> <span class="kn">import</span> <span class="n">models</span> <span class="k">class</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> <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="c"># corresponds to the 'str' field</span> <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="c"># we want our model in a different SRID</span> <span class="n">objects</span> <span class="o">=</span> <span class="n">models</span><span class="o">.</span><span class="n">GeoManager</span><span class="p">()</span> <span class="k">def</span> <span class="nf">__unicode__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> <span class="k">return</span> <span class="s">'Name: </span><span class="si">%s</span><span class="s">'</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span> </pre></div> </div> </li> <li><p class="first">Use <a class="reference internal" href="#django.contrib.gis.utils.LayerMapping" title="django.contrib.gis.utils.LayerMapping"><tt class="xref py py-class docutils literal"><span class="pre">LayerMapping</span></tt></a> to extract all the features and place them in the database:</p> <div class="highlight-python"><div class="highlight"><pre><span class="gp">>>> </span><span class="kn">from</span> <span class="nn">django.contrib.gis.utils</span> <span class="kn">import</span> <span class="n">LayerMapping</span> <span class="gp">>>> </span><span class="kn">from</span> <span class="nn">geoapp.models</span> <span class="kn">import</span> <span class="n">TestGeo</span> <span class="gp">>>> </span><span class="n">mapping</span> <span class="o">=</span> <span class="p">{</span><span class="s">'name'</span> <span class="p">:</span> <span class="s">'str'</span><span class="p">,</span> <span class="c"># The 'name' model field maps to the 'str' layer field.</span> <span class="go"> 'poly' : 'POLYGON', # For geometry fields use OGC name.</span> <span class="go"> } # The mapping is a dictionary</span> <span class="gp">>>> </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="s">'test_poly.shp'</span><span class="p">,</span> <span class="n">mapping</span><span class="p">)</span> <span class="gp">>>> </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="bp">True</span><span class="p">)</span> <span class="c"># Save the layermap, imports the data.</span> <span class="go">Saved: Name: 1</span> <span class="go">Saved: Name: 2</span> <span class="go">Saved: Name: 3</span> </pre></div> </div> </li> </ol> <p>Here, <a class="reference internal" href="#django.contrib.gis.utils.LayerMapping" title="django.contrib.gis.utils.LayerMapping"><tt class="xref py py-class docutils literal"><span class="pre">LayerMapping</span></tt></a> just transformed the three geometries from the shapefile in their original spatial reference system (WGS84) to the spatial reference system of the GeoDjango model (NAD83). If no spatial reference system is defined for the layer, use the <tt class="docutils literal"><span class="pre">source_srs</span></tt> keyword with a <a class="reference internal" href="gdal.html#django.contrib.gis.gdal.SpatialReference" title="django.contrib.gis.gdal.SpatialReference"><tt class="xref py py-class docutils literal"><span class="pre">SpatialReference</span></tt></a> object to specify one.</p> </div> <div class="section" id="s-layermapping-api"> <span id="layermapping-api"></span><h2><tt class="docutils literal"><span class="pre">LayerMapping</span></tt> API<a class="headerlink" href="#layermapping-api" title="Permalink to this headline">¶</a></h2> <dl class="class"> <dt id="django.contrib.gis.utils.LayerMapping"> <em class="property">class </em><tt class="descname">LayerMapping</tt>(<em>model</em>, <em>data_source</em>, <em>mapping</em><span class="optional">[</span>, <em>layer=0</em>, <em>source_srs=None</em>, <em>encoding=None</em>, <em>transaction_mode='commit_on_success'</em>, <em>transform=True</em>, <em>unique=True</em>, <em>using='default'</em><span class="optional">]</span>)<a class="headerlink" href="#django.contrib.gis.utils.LayerMapping" title="Permalink to this definition">¶</a></dt> <dd></dd></dl> <p>The following are the arguments and keywords that may be used during instantiation of <tt class="docutils literal"><span class="pre">LayerMapping</span></tt> objects.</p> <table class="docutils"> <colgroup> <col width="23%" /> <col width="77%" /> </colgroup> <thead valign="bottom"> <tr class="row-odd"><th class="head">Argument</th> <th class="head">Description</th> </tr> </thead> <tbody valign="top"> <tr class="row-even"><td><tt class="docutils literal"><span class="pre">model</span></tt></td> <td>The geographic model, <em>not</em> an instance.</td> </tr> <tr class="row-odd"><td><tt class="docutils literal"><span class="pre">data_source</span></tt></td> <td>The path to the OGR-supported data source file (e.g., a shapefile). Also accepts <a class="reference internal" href="gdal.html#django.contrib.gis.gdal.DataSource" title="django.contrib.gis.gdal.DataSource"><tt class="xref py py-class docutils literal"><span class="pre">django.contrib.gis.gdal.DataSource</span></tt></a> instances.</td> </tr> <tr class="row-even"><td><tt class="docutils literal"><span class="pre">mapping</span></tt></td> <td>A dictionary: keys are strings corresponding to the model field, and values correspond to string field names for the OGR feature, or if the model field is a geographic then it should correspond to the OGR geometry type, e.g., <tt class="docutils literal"><span class="pre">'POINT'</span></tt>, <tt class="docutils literal"><span class="pre">'LINESTRING'</span></tt>, <tt class="docutils literal"><span class="pre">'POLYGON'</span></tt>.</td> </tr> </tbody> </table> <table class="docutils"> <colgroup> <col width="28%" /> <col width="72%" /> </colgroup> <thead valign="bottom"> <tr class="row-odd"><th class="head">Keyword Arguments</th> <th class="head"> </th> </tr> </thead> <tbody valign="top"> <tr class="row-even"><td><tt class="docutils literal"><span class="pre">layer</span></tt></td> <td>The index of the layer to use from the Data Source (defaults to 0)</td> </tr> <tr class="row-odd"><td><tt class="docutils literal"><span class="pre">source_srs</span></tt></td> <td>Use this to specify the source SRS manually (for example, some shapefiles don’t come with a ‘.prj’ file). An integer SRID, WKT or PROJ.4 strings, and <a class="reference internal" href="gdal.html#django.contrib.gis.gdal.SpatialReference" title="django.contrib.gis.gdal.SpatialReference"><tt class="xref py py-class docutils literal"><span class="pre">django.contrib.gis.gdal.SpatialReference</span></tt></a> objects are accepted.</td> </tr> <tr class="row-even"><td><tt class="docutils literal"><span class="pre">encoding</span></tt></td> <td>Specifies the character set encoding of the strings in the OGR data source. For example, <tt class="docutils literal"><span class="pre">'latin-1'</span></tt>, <tt class="docutils literal"><span class="pre">'utf-8'</span></tt>, and <tt class="docutils literal"><span class="pre">'cp437'</span></tt> are all valid encoding parameters.</td> </tr> <tr class="row-odd"><td><tt class="docutils literal"><span class="pre">transaction_mode</span></tt></td> <td>May be <tt class="docutils literal"><span class="pre">'commit_on_success'</span></tt> (default) or <tt class="docutils literal"><span class="pre">'autocommit'</span></tt>.</td> </tr> <tr class="row-even"><td><tt class="docutils literal"><span class="pre">transform</span></tt></td> <td>Setting this to False will disable coordinate transformations. In other words, geometries will be inserted into the database unmodified from their original state in the data source.</td> </tr> <tr class="row-odd"><td><tt class="docutils literal"><span class="pre">unique</span></tt></td> <td>Setting this to the name, or a tuple of names, from the given model will create models unique only to the given name(s). Geometries will from each feature will be added into the collection associated with the unique model. Forces the transaction mode to be <tt class="docutils literal"><span class="pre">'autocommit'</span></tt>.</td> </tr> <tr class="row-even"><td><tt class="docutils literal"><span class="pre">using</span></tt></td> <td>New in version 1.2. Sets the database to use when importing spatial data. Default is <tt class="docutils literal"><span class="pre">'default'</span></tt></td> </tr> </tbody> </table> <div class="section" id="s-save-keyword-arguments"> <span id="save-keyword-arguments"></span><h3><tt class="docutils literal"><span class="pre">save()</span></tt> Keyword Arguments<a class="headerlink" href="#save-keyword-arguments" title="Permalink to this headline">¶</a></h3> <dl class="method"> <dt id="django.contrib.gis.utils.LayerMapping.save"> <tt class="descclassname">LayerMapping.</tt><tt class="descname">save</tt>(<span class="optional">[</span><em>verbose=False</em>, <em>fid_range=False</em>, <em>step=False</em>, <em>progress=False</em>, <em>silent=False</em>, <em>stream=sys.stdout</em>, <em>strict=False</em><span class="optional">]</span>)<a class="headerlink" href="#django.contrib.gis.utils.LayerMapping.save" title="Permalink to this definition">¶</a></dt> <dd></dd></dl> <p>The <tt class="docutils literal"><span class="pre">save()</span></tt> method also accepts keywords. These keywords are used for controlling output logging, error handling, and for importing specific feature ranges.</p> <table class="docutils"> <colgroup> <col width="36%" /> <col width="64%" /> </colgroup> <thead valign="bottom"> <tr class="row-odd"><th class="head">Save Keyword Arguments</th> <th class="head">Description</th> </tr> </thead> <tbody valign="top"> <tr class="row-even"><td><tt class="docutils literal"><span class="pre">fid_range</span></tt></td> <td>May be set with a slice or tuple of (begin, end) feature ID’s to map from the data source. In other words, this keyword enables the user to selectively import a subset range of features in the geographic data source.</td> </tr> <tr class="row-odd"><td><tt class="docutils literal"><span class="pre">progress</span></tt></td> <td>When this keyword is set, status information will be printed giving the number of features processed and successfully saved. By default, progress information will be printed every 1000 features processed, however, this default may be overridden by setting this keyword with an integer for the desired interval.</td> </tr> <tr class="row-even"><td><tt class="docutils literal"><span class="pre">silent</span></tt></td> <td>By default, non-fatal error notifications are printed to <tt class="docutils literal"><span class="pre">sys.stdout</span></tt>, but this keyword may be set to disable these notifications.</td> </tr> <tr class="row-odd"><td><tt class="docutils literal"><span class="pre">step</span></tt></td> <td>If set with an integer, transactions will occur at every step interval. For example, if <tt class="docutils literal"><span class="pre">step=1000</span></tt>, a commit would occur after the 1,000th feature, the 2,000th feature etc.</td> </tr> <tr class="row-even"><td><tt class="docutils literal"><span class="pre">stream</span></tt></td> <td>Status information will be written to this file handle. Defaults to using <tt class="docutils literal"><span class="pre">sys.stdout</span></tt>, but any object with a <tt class="docutils literal"><span class="pre">write</span></tt> method is supported.</td> </tr> <tr class="row-odd"><td><tt class="docutils literal"><span class="pre">strict</span></tt></td> <td>Execution of the model mapping will cease upon the first error encountered. The default value (<tt class="docutils literal"><span class="pre">False</span></tt>) behavior is to attempt to continue.</td> </tr> <tr class="row-even"><td><tt class="docutils literal"><span class="pre">verbose</span></tt></td> <td>If set, information will be printed subsequent to each model save executed on the database.</td> </tr> </tbody> </table> </div> </div> <div class="section" id="s-troubleshooting"> <span id="troubleshooting"></span><h2>Troubleshooting<a class="headerlink" href="#troubleshooting" title="Permalink to this headline">¶</a></h2> <div class="section" id="s-running-out-of-memory"> <span id="running-out-of-memory"></span><h3>Running out of memory<a class="headerlink" href="#running-out-of-memory" title="Permalink to this headline">¶</a></h3> <p>As noted in the warning at the top of this section, Django stores all SQL queries when <tt class="docutils literal"><span class="pre">DEBUG=True</span></tt>. Set <tt class="docutils literal"><span class="pre">DEBUG=False</span></tt> in your settings, and this should stop excessive memory use when running <tt class="docutils literal"><span class="pre">LayerMapping</span></tt> scripts.</p> </div> <div class="section" id="s-mysql-max-allowed-packet-error"> <span id="mysql-max-allowed-packet-error"></span><h3>MySQL: <tt class="docutils literal"><span class="pre">max_allowed_packet</span></tt> error<a class="headerlink" href="#mysql-max-allowed-packet-error" title="Permalink to this headline">¶</a></h3> <p>If you encounter the following error when using <tt class="docutils literal"><span class="pre">LayerMapping</span></tt> and MySQL:</p> <div class="highlight-python"><pre>OperationalError: (1153, "Got a packet bigger than 'max_allowed_packet' bytes")</pre> </div> <p>Then the solution is to increase the value of the <tt class="docutils literal"><span class="pre">max_allowed_packet</span></tt> setting in your MySQL configuration. For example, the default value may be something low like one megabyte – the setting may be modified in MySQL’s configuration file (<tt class="docutils literal"><span class="pre">my.cnf</span></tt>) in the <tt class="docutils literal"><span class="pre">[mysqld]</span></tt> section:</p> <div class="highlight-python"><pre>max_allowed_packet = 10M</pre> </div> </div> </div> </div> </div> </div> </div> <div class="yui-b" id="sidebar"> <div class="sphinxsidebar"> <div class="sphinxsidebarwrapper"> <h3><a href="../../../contents.html">Table Of Contents</a></h3> <ul> <li><a class="reference internal" href="#"><tt class="docutils literal"><span class="pre">LayerMapping</span></tt> data import utility</a><ul> <li><a class="reference internal" href="#example">Example</a></li> <li><a class="reference internal" href="#layermapping-api"><tt class="docutils literal"><span class="pre">LayerMapping</span></tt> API</a><ul> <li><a class="reference internal" href="#save-keyword-arguments"><tt class="docutils literal"><span class="pre">save()</span></tt> Keyword Arguments</a></li> </ul> </li> <li><a class="reference internal" href="#troubleshooting">Troubleshooting</a><ul> <li><a class="reference internal" href="#running-out-of-memory">Running out of memory</a></li> <li><a class="reference internal" href="#mysql-max-allowed-packet-error">MySQL: <tt class="docutils literal"><span class="pre">max_allowed_packet</span></tt> error</a></li> </ul> </li> </ul> </li> </ul> <h3>Browse</h3> <ul> <li>Prev: <a href="utils.html">GeoDjango Utilities</a></li> <li>Next: <a href="ogrinspect.html">OGR Inspection</a></li> </ul> <h3>You are here:</h3> <ul> <li> <a href="../../../index.html">Django 1.5.9 documentation</a> <ul><li><a href="../../index.html">API Reference</a> <ul><li><a href="../index.html"><tt class="docutils literal"><span class="pre">contrib</span></tt> packages</a> <ul><li><a href="index.html">GeoDjango</a> <ul><li><a href="utils.html">GeoDjango Utilities</a> <ul><li><tt class="docutils literal"><span class="pre">LayerMapping</span></tt> data import utility</li></ul> </li></ul></li></ul></li></ul></li></ul> </li> </ul> <h3>This Page</h3> <ul class="this-page-menu"> <li><a href="../../../_sources/ref/contrib/gis/layermapping.txt" rel="nofollow">Show Source</a></li> </ul> <div id="searchbox" style="display: none"> <h3>Quick search</h3> <form class="search" action="../../../search.html" method="get"> <input type="text" name="q" /> <input type="submit" value="Go" /> <input type="hidden" name="check_keywords" value="yes" /> <input type="hidden" name="area" value="default" /> </form> <p class="searchtip" style="font-size: 90%"> Enter search terms or a module, class or function name. </p> </div> <script type="text/javascript">$('#searchbox').show(0);</script> </div> </div> <h3>Last update:</h3> <p class="topless">Aug 21, 2014</p> </div> </div> <div id="ft"> <div class="nav"> « <a href="utils.html" title="GeoDjango Utilities">previous</a> | <a href="../../index.html" title="API Reference" accesskey="U">up</a> | <a href="ogrinspect.html" title="OGR Inspection">next</a> »</div> </div> </div> <div class="clearer"></div> </div> </body> </html>