{"title":"LayerMapping データインポートユーティリティ","version":"5.0","locale":"ja","docname":"ref/contrib/gis/layermapping","url":"/ja/5.0/ref/contrib/gis/layermapping/","canonical":"https://djangodocs.dev/ja/5.0/ref/contrib/gis/layermapping/","summary":"LayerMapping クラスは、ベクトル空間データファイル (例: shapefile) の内容を GeoDjango モデルにマッピングする方法を提供します。 このユーティリティは、ベクターレイヤーからジオメトリとフィールドを取り出し、別の座標系 (WGS84など) に変換し、GeoDjango…","html":"<span id=\"layermapping-data-import-utility\"></span><h1><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\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h1>\n<p><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> クラスは、ベクトル空間データファイル (例: shapefile) の内容を GeoDjango モデルにマッピングする方法を提供します。</p>\n<p>このユーティリティは、ベクターレイヤーからジオメトリとフィールドを取り出し、別の座標系 (WGS84など) に変換し、GeoDjango モデルに挿入するまでのコードの繰り返しをなくしたいという作者の個人的なニーズから生まれました。</p>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">注釈</p>\n<p><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> の使用には GDAL が必要です。</p>\n</aside>\n<aside class=\"admonition admonition-warning\" role=\"note\">\n<p class=\"admonition-title\">警告</p>\n<p>GISデータソース、例えば shapefile は非常に大きい場合があります。もし <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 class=\"reference internal\" href=\"/ja/5.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> に設定してください。 <a class=\"reference internal\" href=\"/ja/5.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\">True</span></code> に設定していると、Djangoは <a class=\"reference internal\" href=\"/ja/5.0/faq/models/#faq-see-raw-sql-queries\"><span class=\"std std-ref\">自動的にログを出力</span></a> します。 <em>すべての</em> SQLクエリが記録されるため、SQLステートメントにジオメトリが含まれると通常よりも多くのメモリを消費する可能性があります。</p>\n</aside>\n<section id=\"example\">\n<h2>カスタマイズ例<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 simple\">\n<li><p>シェープファイルのような、GDALがサポートするデータソースが必要です (ここでは、3つのフィーチャを持つ単純なポリゴンシェープファイル、 <code class=\"docutils literal notranslate\"><span class=\"pre\">test_poly.shp</span></code> を使用しています):</p></li>\n</ol>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</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=\"Python console 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=\"s2\">&quot;test_poly.shp&quot;</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<ol class=\"arabic\">\n<li><p>ここで、対応する Django モデルを定義します (必ず <a class=\"reference internal\" href=\"/ja/5.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\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=\"s2\">&quot;Name: </span><span class=\"si\">%s</span><span class=\"s2\">&quot;</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><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> を使用して、すべてのフィーチャを抽出し、データベースに配置します。</p></li>\n</ol>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</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=\"Python console 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>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;name&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;str&quot;</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=\"gp\">... </span>    <span class=\"s2\">&quot;poly&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;POLYGON&quot;</span><span class=\"p\">,</span>  <span class=\"c1\"># For geometry fields use OGC name.</span>\n<span class=\"gp\">... </span><span class=\"p\">}</span>  <span class=\"c1\"># 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=\"s2\">&quot;test_poly.shp&quot;</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<p>ここでは、<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> が、shapefile から取得した3つのジオメトリを、元の空間参照系 (WGS84) から GeoDjango モデルの空間参照系 (NAD83) に変換しました。もしレイヤーに空間参照系が定義されていない場合は、<code class=\"docutils literal notranslate\"><span class=\"pre\">source_srs</span></code> キーワードを使用し、<a class=\"reference internal\" href=\"/ja/5.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> オブジェクトで指定してください。</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>以下は <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>引数</p></th>\n<th class=\"head\"><p>説明</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>地理情報モデルで、インスタンスではありません。</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>OGR がサポートするデータソースファイル (シェープファイルなど) へのパス。 <a class=\"reference internal\" href=\"/ja/5.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>辞書: キーはモデルフィールドに対応する文字列で、値はOGRフィーチャ用の文字列フィールド名に対応します。もしくは、モデルフィールドがジオグラフィックの場合は、OGRジオメトリの種類に対応する必要があります。例: <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>キーワード引数</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>データソースから使用するレイヤーのインデックス (デフォルトは 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>ソース SRS を手動で指定する場合に使用します (例えば、シェープファイルの中には <code class=\"docutils literal notranslate\"><span class=\"pre\">'.prj'</span></code> ファイルが付属していないものがあります)。整数の SRID、WKT または PROJ 文字列、<a class=\"reference internal\" href=\"/ja/5.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>OGR データソースの文字列の文字セットエンコーディングを指定します。例えば、<code class=\"docutils literal notranslate\"><span class=\"pre\">'latin-1'</span></code>、<code class=\"docutils literal notranslate\"><span class=\"pre\">'utf-8'</span></code>、<code class=\"docutils literal notranslate\"><span class=\"pre\">'cp437'</span></code> はすべて有効なエンコーディングパラメータです。</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><code class=\"docutils literal notranslate\"><span class=\"pre\">commit_on_success'</span></code> (デフォルト) または <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>これを False に設定すると、座標変換が無効になります。つまり、ジオメトリはデータソース内の元の状態から変更されずにデータベースに挿入されます。</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>指定されたモデルの名前、または名前のタプルを設定すると、指定された名前 (複数可) のみに固有なモデルが作成されます。各フィーチャーのジオメトリは、一意のモデルに関連付けられたコレクションに追加されます。トランザクションモードを <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>空間データをインポートする際に使用するデータベースを設定します。デフォルトは <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> のキーワード引数<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><code class=\"docutils literal notranslate\"><span class=\"pre\">save()</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>Save のキーワード引数</p></th>\n<th class=\"head\"><p>説明</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>データソースからマップするフィーチャ ID のスライスまたはタプル (開始、終了) を設定できます。言い換えると、このキーワードを使用すると、地理データソース内のフィーチャのサブセット範囲を選択的にインポートできます。</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>このキーワードを設定すると、処理され、正常に保存されたフィーチャの数を示すステータス情報が出力されます。デフォルトでは、処理された 1000 フィーチャごとに進捗情報が表示されますが、このキーワードに希望の間隔の整数を設定することで、このデフォルトを上書きできます。</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>デフォルトでは、致命的でないエラー通知は <code class=\"docutils literal notranslate\"><span class=\"pre\">sys.stdout</span></code> に出力されますが、このキーワードを設定すると、これらの通知を無効できます。</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>整数で設定すると、トランザクションは各ステップの間隔で発生します。たとえば、<code class=\"docutils literal notranslate\"><span class=\"pre\">step=1000</span></code> の場合、1,000個目のフィーチャー、2,000個目のフィーチャーなどでコミットが行われます。</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>ステータス情報はこのファイルハンドルに書き込まれます。デフォルトでは <code class=\"docutils literal notranslate\"><span class=\"pre\">sys.stdout</span></code> が使用されますが、<code class=\"docutils literal notranslate\"><span class=\"pre\">write</span></code> メソッドを持つ任意のオブジェクトがサポートされています。</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>モデルマッピングの実行は、最初にエラーが発生した時点で停止します。デフォルト値 (<code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code>) の動作は、続行を試みます。</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>設定された場合、データベース上で実行される各モデル保存の後に情報が出力されます。</p></td>\n</tr>\n</tbody>\n</table>\n</div>\n</section>\n</section>\n<section id=\"troubleshooting\">\n<h2>トラブルシューティング<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>メモリ不足<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>このセクションの一番上の警告にあるように、 Django は <code class=\"docutils literal notranslate\"><span class=\"pre\">DEBUG=True</span></code> の場合、全ての SQL クエリを保存します。設定で <code class=\"docutils literal notranslate\"><span class=\"pre\">DEBUG=False</span></code> にすれば、 <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: <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\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">LayerMapping</span></code> とMySQLを使用する際に以下のエラーが発生した場合:</p>\n<div class=\"code-block\" data-language=\"pytb\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Pytb</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=\"Pytb code\"><code><span class=\"x\">OperationalError: (1153, &quot;Got a packet bigger than &#39;max_allowed_packet&#39; bytes&quot;)</span>\n</code></pre></div>\n<p>解決策は、MySQLの設定である <code class=\"docutils literal notranslate\"><span class=\"pre\">max_allowed_packet</span></code> の値を増やすことです。たとえば、デフォルト値は1MBのように低い場合があります。この設定は MySQL の設定ファイル (<code class=\"docutils literal notranslate\"><span class=\"pre\">my.cnf</span></code>) の <code class=\"docutils literal notranslate\"><span class=\"pre\">[mysqld]</span></code> セクションで変更できます。</p>\n<div class=\"code-block\" data-language=\"ini\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Ini</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=\"Ini code\"><code><span class=\"na\">max_allowed_packet</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"s\">10M</span>\n</code></pre></div>\n</section>\n</section>","rootId":"module-django.contrib.gis.utils.layermapping","toc":[{"title":"カスタマイズ例","anchor":"example","children":[]},{"title":"LayerMapping API","anchor":"layermapping-api","children":[{"title":"save() のキーワード引数","anchor":"save-keyword-arguments","children":[]}]},{"title":"トラブルシューティング","anchor":"troubleshooting","children":[{"title":"メモリ不足","anchor":"running-out-of-memory","children":[]},{"title":"MySQL: max_allowed_packet エラー","anchor":"mysql-max-allowed-packet-error","children":[]}]}],"breadcrumbs":[{"docname":"ref/index","title":"API リファレンス","url":"/ja/5.0/ref/"},{"docname":"ref/contrib/index","title":"contrib パッケージ","url":"/ja/5.0/ref/contrib/"},{"docname":"ref/contrib/gis/index","title":"GeoDjango","url":"/ja/5.0/ref/contrib/gis/"},{"docname":"ref/contrib/gis/utils","title":"GeoDjango ユーティリティ","url":"/ja/5.0/ref/contrib/gis/utils/"}],"prev":{"docname":"ref/contrib/gis/utils","title":"GeoDjango ユーティリティ","url":"/ja/5.0/ref/contrib/gis/utils/"},"next":{"docname":"ref/contrib/gis/ogrinspect","title":"OGR のインスペクション","url":"/ja/5.0/ref/contrib/gis/ogrinspect/"},"formats":{"html":"/ja/5.0/ref/contrib/gis/layermapping/","markdown":"/ja/5.0/ref/contrib/gis/layermapping.md","json":"/ja/5.0/ref/contrib/gis/layermapping.json"},"source":"https://github.com/django/django/blob/stable/5.0.x/docs/ref/contrib/gis/layermapping.txt","official":"https://docs.djangoproject.com/ja/5.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","it","pt-br","ko","es","el","pl"]}