{"title":"GEOS API","version":"5.0","locale":"en","docname":"ref/contrib/gis/geos","url":"/en/5.0/ref/contrib/gis/geos/","canonical":"https://djangodocs.dev/en/5.0/ref/contrib/gis/geos/","summary":"Background Link to this heading # What is GEOS? Link to this heading # GEOS stands for Geometry Engine - Open Source , and is a C++ library, ported from the Java…","html":"<span id=\"geos-api\"></span><h1>GEOS API<a class=\"heading-anchor\" href=\"#module-django.contrib.gis.geos\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h1>\n<section id=\"background\">\n<h2>Background<a class=\"heading-anchor\" href=\"#background\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<section id=\"what-is-geos\">\n<h3>What is GEOS?<a class=\"heading-anchor\" href=\"#what-is-geos\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p><a class=\"reference external\" href=\"https://libgeos.org/\">GEOS</a> stands for <strong>Geometry Engine - Open Source</strong>,\nand is a C++ library, ported from the  <a class=\"reference external\" href=\"https://sourceforge.net/projects/jts-topo-suite/\">Java Topology Suite</a>.  GEOS\nimplements the OpenGIS <a class=\"reference external\" href=\"https://www.ogc.org/standard/sfs/\">Simple Features for SQL</a> spatial predicate functions\nand spatial operators. GEOS, now an OSGeo project, was initially developed and\nmaintained by <a class=\"reference external\" href=\"http://www.refractions.net/\">Refractions Research</a> of Victoria, Canada.</p>\n</section>\n<section id=\"features\">\n<h3>Features<a class=\"heading-anchor\" href=\"#features\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>GeoDjango implements a high-level Python wrapper for the GEOS library, its\nfeatures include:</p>\n<ul class=\"simple\">\n<li><p>A BSD-licensed interface to the GEOS geometry routines, implemented purely\nin Python using <code class=\"docutils literal notranslate\">ctypes</code>.</p></li>\n<li><p>Loosely-coupled to GeoDjango.  For example, <a class=\"reference internal\" href=\"#django.contrib.gis.geos.GEOSGeometry\" title=\"django.contrib.gis.geos.GEOSGeometry\"><code class=\"xref py py-class docutils literal notranslate\">GEOSGeometry</code></a> objects\nmay be used outside of a Django project/application.  In other words,\nno need to have <span class=\"target\" id=\"index-0\"></span><a class=\"reference internal\" href=\"/en/5.0/topics/settings/#envvar-DJANGO_SETTINGS_MODULE\"><code class=\"xref std std-envvar docutils literal notranslate\">DJANGO_SETTINGS_MODULE</code></a> set or use a database, etc.</p></li>\n<li><p>Mutability: <a class=\"reference internal\" href=\"#django.contrib.gis.geos.GEOSGeometry\" title=\"django.contrib.gis.geos.GEOSGeometry\"><code class=\"xref py py-class docutils literal notranslate\">GEOSGeometry</code></a> objects may be modified.</p></li>\n<li><p>Cross-platform and tested; compatible with Windows, Linux, Solaris, and\nmacOS platforms.</p></li>\n</ul>\n</section>\n</section>\n<section id=\"tutorial\">\n<span id=\"geos-tutorial\"></span><h2>Tutorial<a class=\"heading-anchor\" href=\"#tutorial\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>This section contains a brief introduction and tutorial to using\n<a class=\"reference internal\" href=\"#django.contrib.gis.geos.GEOSGeometry\" title=\"django.contrib.gis.geos.GEOSGeometry\"><code class=\"xref py py-class docutils literal notranslate\">GEOSGeometry</code></a> objects.</p>\n<section id=\"creating-a-geometry\">\n<h3>Creating a Geometry<a class=\"heading-anchor\" href=\"#creating-a-geometry\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p><a class=\"reference internal\" href=\"#django.contrib.gis.geos.GEOSGeometry\" title=\"django.contrib.gis.geos.GEOSGeometry\"><code class=\"xref py py-class docutils literal notranslate\">GEOSGeometry</code></a> objects may be created in a few ways.  The first is\nto simply instantiate the object on some spatial input – the following\nare examples of creating the same geometry from WKT, HEX, WKB, and GeoJSON:</p>\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=\"nn\">django.contrib.gis.geos</span> <span class=\"kn\">import</span> GEOSGeometry\n<span class=\"gp\">&gt;&gt;&gt; </span>pnt <span class=\"o\">=</span> GEOSGeometry<span class=\"p\">(</span><span class=\"s2\">&quot;POINT(5 23)&quot;</span><span class=\"p\">)</span>  <span class=\"c1\"># WKT</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>pnt <span class=\"o\">=</span> GEOSGeometry<span class=\"p\">(</span><span class=\"s2\">&quot;010100000000000000000014400000000000003740&quot;</span><span class=\"p\">)</span>  <span class=\"c1\"># HEX</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>pnt <span class=\"o\">=</span> GEOSGeometry<span class=\"p\">(</span>\n<span class=\"gp\">... </span>    <span class=\"nb\">memoryview</span><span class=\"p\">(</span>\n<span class=\"gp\">... </span>        <span class=\"sa\">b</span><span class=\"s2\">&quot;</span><span class=\"se\">\\x01\\x01\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x14</span><span class=\"s2\">@</span><span class=\"se\">\\x00\\x00\\x00\\x00\\x00\\x00</span><span class=\"s2\">7@&quot;</span>\n<span class=\"gp\">... </span>    <span class=\"p\">)</span>\n<span class=\"gp\">... </span><span class=\"p\">)</span>  <span class=\"c1\"># WKB</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>pnt <span class=\"o\">=</span> GEOSGeometry<span class=\"p\">(</span>\n<span class=\"gp\">... </span>    <span class=\"s1\">&#39;{ &quot;type&quot;: &quot;Point&quot;, &quot;coordinates&quot;: [ 5.000000, 23.000000 ] }&#39;</span>\n<span class=\"gp\">... </span><span class=\"p\">)</span>  <span class=\"c1\"># GeoJSON</span>\n</code></pre></div>\n<p>Another option is to use the constructor for the specific geometry type\nthat you wish to create.  For example, a <a class=\"reference internal\" href=\"#django.contrib.gis.geos.Point\" title=\"django.contrib.gis.geos.Point\"><code class=\"xref py py-class docutils literal notranslate\">Point</code></a> object may be\ncreated by passing in the X and Y coordinates into its constructor:</p>\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=\"nn\">django.contrib.gis.geos</span> <span class=\"kn\">import</span> Point\n<span class=\"gp\">&gt;&gt;&gt; </span>pnt <span class=\"o\">=</span> Point<span class=\"p\">(</span><span class=\"mi\">5</span><span class=\"p\">,</span> <span class=\"mi\">23</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>All these constructors take the keyword argument <code class=\"docutils literal notranslate\">srid</code>. For example:</p>\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=\"nn\">django.contrib.gis.geos</span> <span class=\"kn\">import</span> GEOSGeometry<span class=\"p\">,</span> LineString<span class=\"p\">,</span> Point\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span>GEOSGeometry<span class=\"p\">(</span><span class=\"s2\">&quot;POINT (0 0)&quot;</span><span class=\"p\">,</span> srid<span class=\"o\">=</span><span class=\"mi\">4326</span><span class=\"p\">))</span>\n<span class=\"go\">SRID=4326;POINT (0 0)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span>LineString<span class=\"p\">((</span><span class=\"mi\">0</span><span class=\"p\">,</span> <span class=\"mi\">0</span><span class=\"p\">),</span> <span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">,</span> <span class=\"mi\">1</span><span class=\"p\">),</span> srid<span class=\"o\">=</span><span class=\"mi\">4326</span><span class=\"p\">))</span>\n<span class=\"go\">SRID=4326;LINESTRING (0 0, 1 1)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span>Point<span class=\"p\">(</span><span class=\"mi\">0</span><span class=\"p\">,</span> <span class=\"mi\">0</span><span class=\"p\">,</span> srid<span class=\"o\">=</span><span class=\"mi\">32140</span><span class=\"p\">))</span>\n<span class=\"go\">SRID=32140;POINT (0 0)</span>\n</code></pre></div>\n<p>Finally, there is the <a class=\"reference internal\" href=\"#django.contrib.gis.geos.fromfile\" title=\"django.contrib.gis.geos.fromfile\"><code class=\"xref py py-func docutils literal notranslate\">fromfile()</code></a> factory method which returns a\n<a class=\"reference internal\" href=\"#django.contrib.gis.geos.GEOSGeometry\" title=\"django.contrib.gis.geos.GEOSGeometry\"><code class=\"xref py py-class docutils literal notranslate\">GEOSGeometry</code></a> object from a file:</p>\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=\"nn\">django.contrib.gis.geos</span> <span class=\"kn\">import</span> fromfile\n<span class=\"gp\">&gt;&gt;&gt; </span>pnt <span class=\"o\">=</span> fromfile<span class=\"p\">(</span><span class=\"s2\">&quot;/path/to/pnt.wkt&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>pnt <span class=\"o\">=</span> fromfile<span class=\"p\">(</span><span class=\"nb\">open</span><span class=\"p\">(</span><span class=\"s2\">&quot;/path/to/pnt.wkt&quot;</span><span class=\"p\">))</span>\n</code></pre></div>\n<aside class=\"admonition-my-logs-are-filled-with-geos-related-errors admonition\" id=\"geos-exceptions-in-logfile\" role=\"note\">\n<p class=\"admonition-title\">My logs are filled with GEOS-related errors</p>\n<p>You find many <code class=\"docutils literal notranslate\">TypeError</code> or <code class=\"docutils literal notranslate\">AttributeError</code> exceptions filling your\nweb server’s log files. This generally means that you are creating GEOS\nobjects at the top level of some of your Python modules. Then, due to a race\ncondition in the garbage collector, your module is garbage collected before\nthe GEOS object. To prevent this, create <a class=\"reference internal\" href=\"#django.contrib.gis.geos.GEOSGeometry\" title=\"django.contrib.gis.geos.GEOSGeometry\"><code class=\"xref py py-class docutils literal notranslate\">GEOSGeometry</code></a> objects\ninside the local scope of your functions/methods.</p>\n</aside>\n</section>\n<section id=\"geometries-are-pythonic\">\n<h3>Geometries are Pythonic<a class=\"heading-anchor\" href=\"#geometries-are-pythonic\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p><a class=\"reference internal\" href=\"#django.contrib.gis.geos.GEOSGeometry\" title=\"django.contrib.gis.geos.GEOSGeometry\"><code class=\"xref py py-class docutils literal notranslate\">GEOSGeometry</code></a> objects are ‘Pythonic’, in other words components may\nbe accessed, modified, and iterated over using standard Python conventions.\nFor example, you can iterate over the coordinates in a <a class=\"reference internal\" href=\"#django.contrib.gis.geos.Point\" title=\"django.contrib.gis.geos.Point\"><code class=\"xref py py-class docutils literal notranslate\">Point</code></a>:</p>\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>pnt <span class=\"o\">=</span> Point<span class=\"p\">(</span><span class=\"mi\">5</span><span class=\"p\">,</span> <span class=\"mi\">23</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"p\">[</span>coord <span class=\"k\">for</span> coord <span class=\"ow\">in</span> pnt<span class=\"p\">]</span>\n<span class=\"go\">[5.0, 23.0]</span>\n</code></pre></div>\n<p>With any geometry object, the <a class=\"reference internal\" href=\"#django.contrib.gis.geos.GEOSGeometry.coords\" title=\"django.contrib.gis.geos.GEOSGeometry.coords\"><code class=\"xref py py-attr docutils literal notranslate\">GEOSGeometry.coords</code></a> property\nmay be used to get the geometry coordinates as a Python tuple:</p>\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>pnt<span class=\"o\">.</span>coords\n<span class=\"go\">(5.0, 23.0)</span>\n</code></pre></div>\n<p>You can get/set geometry components using standard Python indexing\ntechniques.  However, what is returned depends on the geometry type\nof the object.  For example, indexing on a <a class=\"reference internal\" href=\"#django.contrib.gis.geos.LineString\" title=\"django.contrib.gis.geos.LineString\"><code class=\"xref py py-class docutils literal notranslate\">LineString</code></a>\nreturns a coordinate tuple:</p>\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=\"nn\">django.contrib.gis.geos</span> <span class=\"kn\">import</span> LineString\n<span class=\"gp\">&gt;&gt;&gt; </span>line <span class=\"o\">=</span> LineString<span class=\"p\">((</span><span class=\"mi\">0</span><span class=\"p\">,</span> <span class=\"mi\">0</span><span class=\"p\">),</span> <span class=\"p\">(</span><span class=\"mi\">0</span><span class=\"p\">,</span> <span class=\"mi\">50</span><span class=\"p\">),</span> <span class=\"p\">(</span><span class=\"mi\">50</span><span class=\"p\">,</span> <span class=\"mi\">50</span><span class=\"p\">),</span> <span class=\"p\">(</span><span class=\"mi\">50</span><span class=\"p\">,</span> <span class=\"mi\">0</span><span class=\"p\">),</span> <span class=\"p\">(</span><span class=\"mi\">0</span><span class=\"p\">,</span> <span class=\"mi\">0</span><span class=\"p\">))</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>line<span class=\"p\">[</span><span class=\"mi\">0</span><span class=\"p\">]</span>\n<span class=\"go\">(0.0, 0.0)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>line<span class=\"p\">[</span><span class=\"o\">-</span><span class=\"mi\">2</span><span class=\"p\">]</span>\n<span class=\"go\">(50.0, 0.0)</span>\n</code></pre></div>\n<p>Whereas indexing on a <a class=\"reference internal\" href=\"#django.contrib.gis.geos.Polygon\" title=\"django.contrib.gis.geos.Polygon\"><code class=\"xref py py-class docutils literal notranslate\">Polygon</code></a> will return the ring\n(a <a class=\"reference internal\" href=\"#django.contrib.gis.geos.LinearRing\" title=\"django.contrib.gis.geos.LinearRing\"><code class=\"xref py py-class docutils literal notranslate\">LinearRing</code></a> object) corresponding to the index:</p>\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=\"nn\">django.contrib.gis.geos</span> <span class=\"kn\">import</span> Polygon\n<span class=\"gp\">&gt;&gt;&gt; </span>poly <span class=\"o\">=</span> Polygon<span class=\"p\">(((</span><span class=\"mf\">0.0</span><span class=\"p\">,</span> <span class=\"mf\">0.0</span><span class=\"p\">),</span> <span class=\"p\">(</span><span class=\"mf\">0.0</span><span class=\"p\">,</span> <span class=\"mf\">50.0</span><span class=\"p\">),</span> <span class=\"p\">(</span><span class=\"mf\">50.0</span><span class=\"p\">,</span> <span class=\"mf\">50.0</span><span class=\"p\">),</span> <span class=\"p\">(</span><span class=\"mf\">50.0</span><span class=\"p\">,</span> <span class=\"mf\">0.0</span><span class=\"p\">),</span> <span class=\"p\">(</span><span class=\"mf\">0.0</span><span class=\"p\">,</span> <span class=\"mf\">0.0</span><span class=\"p\">)))</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>poly<span class=\"p\">[</span><span class=\"mi\">0</span><span class=\"p\">]</span>\n<span class=\"go\">&lt;LinearRing object at 0x1044395b0&gt;</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>poly<span class=\"p\">[</span><span class=\"mi\">0</span><span class=\"p\">][</span><span class=\"o\">-</span><span class=\"mi\">2</span><span class=\"p\">]</span>  <span class=\"c1\"># second-to-last coordinate of external ring</span>\n<span class=\"go\">(50.0, 0.0)</span>\n</code></pre></div>\n<p>In addition, coordinates/components of the geometry may added or modified,\njust like a Python list:</p>\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>line<span class=\"p\">[</span><span class=\"mi\">0</span><span class=\"p\">]</span> <span class=\"o\">=</span> <span class=\"p\">(</span><span class=\"mf\">1.0</span><span class=\"p\">,</span> <span class=\"mf\">1.0</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>line<span class=\"o\">.</span>pop<span class=\"p\">()</span>\n<span class=\"go\">(0.0, 0.0)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>line<span class=\"o\">.</span>append<span class=\"p\">((</span><span class=\"mf\">1.0</span><span class=\"p\">,</span> <span class=\"mf\">1.0</span><span class=\"p\">))</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>line<span class=\"o\">.</span>coords\n<span class=\"go\">((1.0, 1.0), (0.0, 50.0), (50.0, 50.0), (50.0, 0.0), (1.0, 1.0))</span>\n</code></pre></div>\n<p>Geometries support set-like operators:</p>\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=\"nn\">django.contrib.gis.geos</span> <span class=\"kn\">import</span> LineString\n<span class=\"gp\">&gt;&gt;&gt; </span>ls1 <span class=\"o\">=</span> LineString<span class=\"p\">((</span><span class=\"mi\">0</span><span class=\"p\">,</span> <span class=\"mi\">0</span><span class=\"p\">),</span> <span class=\"p\">(</span><span class=\"mi\">2</span><span class=\"p\">,</span> <span class=\"mi\">2</span><span class=\"p\">))</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>ls2 <span class=\"o\">=</span> LineString<span class=\"p\">((</span><span class=\"mi\">1</span><span class=\"p\">,</span> <span class=\"mi\">1</span><span class=\"p\">),</span> <span class=\"p\">(</span><span class=\"mi\">3</span><span class=\"p\">,</span> <span class=\"mi\">3</span><span class=\"p\">))</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span>ls1 <span class=\"o\">|</span> ls2<span class=\"p\">)</span>  <span class=\"c1\"># equivalent to `ls1.union(ls2)`</span>\n<span class=\"go\">MULTILINESTRING ((0 0, 1 1), (1 1, 2 2), (2 2, 3 3))</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span>ls1 <span class=\"o\">&amp;</span> ls2<span class=\"p\">)</span>  <span class=\"c1\"># equivalent to `ls1.intersection(ls2)`</span>\n<span class=\"go\">LINESTRING (1 1, 2 2)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span>ls1 <span class=\"o\">-</span> ls2<span class=\"p\">)</span>  <span class=\"c1\"># equivalent to `ls1.difference(ls2)`</span>\n<span class=\"go\">LINESTRING(0 0, 1 1)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span>ls1 <span class=\"o\">^</span> ls2<span class=\"p\">)</span>  <span class=\"c1\"># equivalent to `ls1.sym_difference(ls2)`</span>\n<span class=\"go\">MULTILINESTRING ((0 0, 1 1), (2 2, 3 3))</span>\n</code></pre></div>\n<aside class=\"admonition-equality-operator-doesn-t-check-spatial-equality admonition\" role=\"note\">\n<p class=\"admonition-title\">Equality operator doesn’t check spatial equality</p>\n<p>The <a class=\"reference internal\" href=\"#django.contrib.gis.geos.GEOSGeometry\" title=\"django.contrib.gis.geos.GEOSGeometry\"><code class=\"xref py py-class docutils literal notranslate\">GEOSGeometry</code></a> equality operator uses\n<a class=\"reference internal\" href=\"#django.contrib.gis.geos.GEOSGeometry.equals_exact\" title=\"django.contrib.gis.geos.GEOSGeometry.equals_exact\"><code class=\"xref py py-meth docutils literal notranslate\">equals_exact()</code></a>, not <a class=\"reference internal\" href=\"#django.contrib.gis.geos.GEOSGeometry.equals\" title=\"django.contrib.gis.geos.GEOSGeometry.equals\"><code class=\"xref py py-meth docutils literal notranslate\">equals()</code></a>, i.e.\nit requires the compared geometries to have the same coordinates in the\nsame positions with the same SRIDs:</p>\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=\"nn\">django.contrib.gis.geos</span> <span class=\"kn\">import</span> LineString\n<span class=\"gp\">&gt;&gt;&gt; </span>ls1 <span class=\"o\">=</span> LineString<span class=\"p\">((</span><span class=\"mi\">0</span><span class=\"p\">,</span> <span class=\"mi\">0</span><span class=\"p\">),</span> <span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">,</span> <span class=\"mi\">1</span><span class=\"p\">))</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>ls2 <span class=\"o\">=</span> LineString<span class=\"p\">((</span><span class=\"mi\">1</span><span class=\"p\">,</span> <span class=\"mi\">1</span><span class=\"p\">),</span> <span class=\"p\">(</span><span class=\"mi\">0</span><span class=\"p\">,</span> <span class=\"mi\">0</span><span class=\"p\">))</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>ls3 <span class=\"o\">=</span> LineString<span class=\"p\">((</span><span class=\"mi\">1</span><span class=\"p\">,</span> <span class=\"mi\">1</span><span class=\"p\">),</span> <span class=\"p\">(</span><span class=\"mi\">0</span><span class=\"p\">,</span> <span class=\"mi\">0</span><span class=\"p\">),</span> srid<span class=\"o\">=</span><span class=\"mi\">4326</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>ls1<span class=\"o\">.</span>equals<span class=\"p\">(</span>ls2<span class=\"p\">)</span>\n<span class=\"go\">True</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>ls1 <span class=\"o\">==</span> ls2\n<span class=\"go\">False</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>ls3 <span class=\"o\">==</span> ls2  <span class=\"c1\"># different SRIDs</span>\n<span class=\"go\">False</span>\n</code></pre></div>\n</aside>\n</section>\n</section>\n<section id=\"geometry-objects\">\n<h2>Geometry Objects<a class=\"heading-anchor\" href=\"#geometry-objects\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<section id=\"geosgeometry\">\n<h3><code class=\"docutils literal notranslate\">GEOSGeometry</code><a class=\"heading-anchor\" href=\"#geosgeometry\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.GEOSGeometry\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">GEOSGeometry</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">geo_input</em>, <em class=\"sig-param\">srid<span class=\"o\">=</span><span class=\"default_value\">None</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.geos.GEOSGeometry\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><dl class=\"field-list simple\">\n<dt class=\"field-odd\">Parameters<span class=\"colon\">:</span></dt>\n<dd class=\"field-odd\"><ul class=\"simple\">\n<li><p><strong>geo_input</strong> – Geometry input value (string or <a class=\"reference external\" href=\"https://docs.python.org/3/library/stdtypes.html#memoryview\" title=\"(in Python v3.14)\"><code class=\"xref py py-class docutils literal notranslate\">memoryview</code></a>)</p></li>\n<li><p><strong>srid</strong> (<a class=\"reference external\" href=\"https://docs.python.org/3/library/functions.html#int\" title=\"(in Python v3.14)\"><em>int</em></a>) – spatial reference identifier</p></li>\n</ul>\n</dd>\n</dl>\n</dd></dl>\n\n<p>This is the base class for all GEOS geometry objects.  It initializes on the\ngiven <code class=\"docutils literal notranslate\">geo_input</code> argument, and then assumes the proper geometry subclass\n(e.g., <code class=\"docutils literal notranslate\">GEOSGeometry('POINT(1 1)')</code> will create a <a class=\"reference internal\" href=\"#django.contrib.gis.geos.Point\" title=\"django.contrib.gis.geos.Point\"><code class=\"xref py py-class docutils literal notranslate\">Point</code></a> object).</p>\n<p>The <code class=\"docutils literal notranslate\">srid</code> parameter, if given, is set as the SRID of the created geometry if\n<code class=\"docutils literal notranslate\">geo_input</code> doesn’t have an SRID. If different SRIDs are provided through the\n<code class=\"docutils literal notranslate\">geo_input</code> and <code class=\"docutils literal notranslate\">srid</code> parameters, <code class=\"docutils literal notranslate\">ValueError</code> is raised:</p>\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=\"nn\">django.contrib.gis.geos</span> <span class=\"kn\">import</span> GEOSGeometry\n<span class=\"gp\">&gt;&gt;&gt; </span>GEOSGeometry<span class=\"p\">(</span><span class=\"s2\">&quot;POINT EMPTY&quot;</span><span class=\"p\">,</span> srid<span class=\"o\">=</span><span class=\"mi\">4326</span><span class=\"p\">)</span><span class=\"o\">.</span>ewkt\n<span class=\"go\">&#39;SRID=4326;POINT EMPTY&#39;</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>GEOSGeometry<span class=\"p\">(</span><span class=\"s2\">&quot;SRID=4326;POINT EMPTY&quot;</span><span class=\"p\">,</span> srid<span class=\"o\">=</span><span class=\"mi\">4326</span><span class=\"p\">)</span><span class=\"o\">.</span>ewkt\n<span class=\"go\">&#39;SRID=4326;POINT EMPTY&#39;</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>GEOSGeometry<span class=\"p\">(</span><span class=\"s2\">&quot;SRID=1;POINT EMPTY&quot;</span><span class=\"p\">,</span> srid<span class=\"o\">=</span><span class=\"mi\">4326</span><span class=\"p\">)</span>\n<span class=\"gt\">Traceback (most recent call last):</span>\n<span class=\"c\">...</span>\n<span class=\"gr\">ValueError</span>: Input geometry already has SRID: 1.\n</code></pre></div>\n<p>The following input formats, along with their corresponding Python types,\nare accepted:</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>Format</p></th>\n<th class=\"head\"><p>Input Type</p></th>\n</tr>\n</thead>\n<tbody>\n<tr class=\"row-even\"><td><p>WKT / EWKT</p></td>\n<td><p><code class=\"docutils literal notranslate\">str</code></p></td>\n</tr>\n<tr class=\"row-odd\"><td><p>HEX / HEXEWKB</p></td>\n<td><p><code class=\"docutils literal notranslate\">str</code></p></td>\n</tr>\n<tr class=\"row-even\"><td><p>WKB / EWKB</p></td>\n<td><p><code class=\"docutils literal notranslate\">memoryview</code></p></td>\n</tr>\n<tr class=\"row-odd\"><td><p><span class=\"target\" id=\"index-1\"></span><a class=\"rfc reference external\" href=\"https://datatracker.ietf.org/doc/html/rfc7946.html\"><strong>GeoJSON</strong></a></p></td>\n<td><p><code class=\"docutils literal notranslate\">str</code></p></td>\n</tr>\n</tbody>\n</table>\n</div>\n<p>For the GeoJSON format, the SRID is set based on the <code class=\"docutils literal notranslate\">crs</code> member. If <code class=\"docutils literal notranslate\">crs</code>\nisn’t provided, the SRID defaults to 4326.</p>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.GEOSGeometry.from_gml\">\n<em class=\"property\"><span class=\"k\">classmethod</span> </em><span class=\"sig-prename descclassname\">GEOSGeometry.</span><span class=\"sig-name descname\">from_gml</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">gml_string</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.geos.GEOSGeometry.from_gml\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Constructs a <a class=\"reference internal\" href=\"#django.contrib.gis.geos.GEOSGeometry\" title=\"django.contrib.gis.geos.GEOSGeometry\"><code class=\"xref py py-class docutils literal notranslate\">GEOSGeometry</code></a> from the given GML string.</p>\n</dd></dl>\n\n<section id=\"properties\">\n<h4>Properties<a class=\"heading-anchor\" href=\"#properties\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.GEOSGeometry.coords\">\n<span class=\"sig-prename descclassname\">GEOSGeometry.</span><span class=\"sig-name descname\">coords</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.geos.GEOSGeometry.coords\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Returns the coordinates of the geometry as a tuple.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.GEOSGeometry.dims\">\n<span class=\"sig-prename descclassname\">GEOSGeometry.</span><span class=\"sig-name descname\">dims</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.geos.GEOSGeometry.dims\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Returns the dimension of the geometry:</p>\n<ul class=\"simple\">\n<li><p><code class=\"docutils literal notranslate\">0</code> for <a class=\"reference internal\" href=\"#django.contrib.gis.geos.Point\" title=\"django.contrib.gis.geos.Point\"><code class=\"xref py py-class docutils literal notranslate\">Point</code></a>s and <a class=\"reference internal\" href=\"#django.contrib.gis.geos.MultiPoint\" title=\"django.contrib.gis.geos.MultiPoint\"><code class=\"xref py py-class docutils literal notranslate\">MultiPoint</code></a>s</p></li>\n<li><p><code class=\"docutils literal notranslate\">1</code> for <a class=\"reference internal\" href=\"#django.contrib.gis.geos.LineString\" title=\"django.contrib.gis.geos.LineString\"><code class=\"xref py py-class docutils literal notranslate\">LineString</code></a>s and <a class=\"reference internal\" href=\"#django.contrib.gis.geos.MultiLineString\" title=\"django.contrib.gis.geos.MultiLineString\"><code class=\"xref py py-class docutils literal notranslate\">MultiLineString</code></a>s</p></li>\n<li><p><code class=\"docutils literal notranslate\">2</code> for <a class=\"reference internal\" href=\"#django.contrib.gis.geos.Polygon\" title=\"django.contrib.gis.geos.Polygon\"><code class=\"xref py py-class docutils literal notranslate\">Polygon</code></a>s and <a class=\"reference internal\" href=\"#django.contrib.gis.geos.MultiPolygon\" title=\"django.contrib.gis.geos.MultiPolygon\"><code class=\"xref py py-class docutils literal notranslate\">MultiPolygon</code></a>s</p></li>\n<li><p><code class=\"docutils literal notranslate\">-1</code> for empty <a class=\"reference internal\" href=\"#django.contrib.gis.geos.GeometryCollection\" title=\"django.contrib.gis.geos.GeometryCollection\"><code class=\"xref py py-class docutils literal notranslate\">GeometryCollection</code></a>s</p></li>\n<li><p>the maximum dimension of its elements for non-empty\n<a class=\"reference internal\" href=\"#django.contrib.gis.geos.GeometryCollection\" title=\"django.contrib.gis.geos.GeometryCollection\"><code class=\"xref py py-class docutils literal notranslate\">GeometryCollection</code></a>s</p></li>\n</ul>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.GEOSGeometry.empty\">\n<span class=\"sig-prename descclassname\">GEOSGeometry.</span><span class=\"sig-name descname\">empty</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.geos.GEOSGeometry.empty\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Returns whether or not the set of points in the geometry is empty.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.GEOSGeometry.geom_type\">\n<span class=\"sig-prename descclassname\">GEOSGeometry.</span><span class=\"sig-name descname\">geom_type</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.geos.GEOSGeometry.geom_type\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Returns a string corresponding to the type of geometry.  For example:</p>\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>pnt <span class=\"o\">=</span> GEOSGeometry<span class=\"p\">(</span><span class=\"s2\">&quot;POINT(5 23)&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>pnt<span class=\"o\">.</span>geom_type\n<span class=\"go\">&#39;Point&#39;</span>\n</code></pre></div>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.GEOSGeometry.geom_typeid\">\n<span class=\"sig-prename descclassname\">GEOSGeometry.</span><span class=\"sig-name descname\">geom_typeid</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.geos.GEOSGeometry.geom_typeid\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Returns the GEOS geometry type identification number.  The following table\nshows the value for each geometry type:</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>Geometry</p></th>\n<th class=\"head\"><p>ID</p></th>\n</tr>\n</thead>\n<tbody>\n<tr class=\"row-even\"><td><p><a class=\"reference internal\" href=\"#django.contrib.gis.geos.Point\" title=\"django.contrib.gis.geos.Point\"><code class=\"xref py py-class docutils literal notranslate\">Point</code></a></p></td>\n<td><p>0</p></td>\n</tr>\n<tr class=\"row-odd\"><td><p><a class=\"reference internal\" href=\"#django.contrib.gis.geos.LineString\" title=\"django.contrib.gis.geos.LineString\"><code class=\"xref py py-class docutils literal notranslate\">LineString</code></a></p></td>\n<td><p>1</p></td>\n</tr>\n<tr class=\"row-even\"><td><p><a class=\"reference internal\" href=\"#django.contrib.gis.geos.LinearRing\" title=\"django.contrib.gis.geos.LinearRing\"><code class=\"xref py py-class docutils literal notranslate\">LinearRing</code></a></p></td>\n<td><p>2</p></td>\n</tr>\n<tr class=\"row-odd\"><td><p><a class=\"reference internal\" href=\"#django.contrib.gis.geos.Polygon\" title=\"django.contrib.gis.geos.Polygon\"><code class=\"xref py py-class docutils literal notranslate\">Polygon</code></a></p></td>\n<td><p>3</p></td>\n</tr>\n<tr class=\"row-even\"><td><p><a class=\"reference internal\" href=\"#django.contrib.gis.geos.MultiPoint\" title=\"django.contrib.gis.geos.MultiPoint\"><code class=\"xref py py-class docutils literal notranslate\">MultiPoint</code></a></p></td>\n<td><p>4</p></td>\n</tr>\n<tr class=\"row-odd\"><td><p><a class=\"reference internal\" href=\"#django.contrib.gis.geos.MultiLineString\" title=\"django.contrib.gis.geos.MultiLineString\"><code class=\"xref py py-class docutils literal notranslate\">MultiLineString</code></a></p></td>\n<td><p>5</p></td>\n</tr>\n<tr class=\"row-even\"><td><p><a class=\"reference internal\" href=\"#django.contrib.gis.geos.MultiPolygon\" title=\"django.contrib.gis.geos.MultiPolygon\"><code class=\"xref py py-class docutils literal notranslate\">MultiPolygon</code></a></p></td>\n<td><p>6</p></td>\n</tr>\n<tr class=\"row-odd\"><td><p><a class=\"reference internal\" href=\"#django.contrib.gis.geos.GeometryCollection\" title=\"django.contrib.gis.geos.GeometryCollection\"><code class=\"xref py py-class docutils literal notranslate\">GeometryCollection</code></a></p></td>\n<td><p>7</p></td>\n</tr>\n</tbody>\n</table>\n</div>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.GEOSGeometry.num_coords\">\n<span class=\"sig-prename descclassname\">GEOSGeometry.</span><span class=\"sig-name descname\">num_coords</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.geos.GEOSGeometry.num_coords\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Returns the number of coordinates in the geometry.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.GEOSGeometry.num_geom\">\n<span class=\"sig-prename descclassname\">GEOSGeometry.</span><span class=\"sig-name descname\">num_geom</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.geos.GEOSGeometry.num_geom\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Returns the number of geometries in this geometry.  In other words, will\nreturn 1 on anything but geometry collections.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.GEOSGeometry.hasz\">\n<span class=\"sig-prename descclassname\">GEOSGeometry.</span><span class=\"sig-name descname\">hasz</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.geos.GEOSGeometry.hasz\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Returns a boolean indicating whether the geometry is three-dimensional.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.GEOSGeometry.ring\">\n<span class=\"sig-prename descclassname\">GEOSGeometry.</span><span class=\"sig-name descname\">ring</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.geos.GEOSGeometry.ring\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Returns a boolean indicating whether the geometry is a <code class=\"docutils literal notranslate\">LinearRing</code>.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.GEOSGeometry.simple\">\n<span class=\"sig-prename descclassname\">GEOSGeometry.</span><span class=\"sig-name descname\">simple</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.geos.GEOSGeometry.simple\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Returns a boolean indicating whether the geometry is ‘simple’. A geometry\nis simple if and only if it does not intersect itself (except at boundary\npoints).  For example, a <a class=\"reference internal\" href=\"#django.contrib.gis.geos.LineString\" title=\"django.contrib.gis.geos.LineString\"><code class=\"xref py py-class docutils literal notranslate\">LineString</code></a> object is not simple if it\nintersects itself. Thus, <a class=\"reference internal\" href=\"#django.contrib.gis.geos.LinearRing\" title=\"django.contrib.gis.geos.LinearRing\"><code class=\"xref py py-class docutils literal notranslate\">LinearRing</code></a> and <a class=\"reference internal\" href=\"#django.contrib.gis.geos.Polygon\" title=\"django.contrib.gis.geos.Polygon\"><code class=\"xref py py-class docutils literal notranslate\">Polygon</code></a> objects\nare always simple because they cannot intersect themselves, by definition.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.GEOSGeometry.valid\">\n<span class=\"sig-prename descclassname\">GEOSGeometry.</span><span class=\"sig-name descname\">valid</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.geos.GEOSGeometry.valid\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Returns a boolean indicating whether the geometry is valid.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.GEOSGeometry.valid_reason\">\n<span class=\"sig-prename descclassname\">GEOSGeometry.</span><span class=\"sig-name descname\">valid_reason</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.geos.GEOSGeometry.valid_reason\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Returns a string describing the reason why a geometry is invalid.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.GEOSGeometry.srid\">\n<span class=\"sig-prename descclassname\">GEOSGeometry.</span><span class=\"sig-name descname\">srid</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.geos.GEOSGeometry.srid\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Property that may be used to retrieve or set the SRID associated with the\ngeometry.  For example:</p>\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>pnt <span class=\"o\">=</span> Point<span class=\"p\">(</span><span class=\"mi\">5</span><span class=\"p\">,</span> <span class=\"mi\">23</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span>pnt<span class=\"o\">.</span>srid<span class=\"p\">)</span>\n<span class=\"go\">None</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>pnt<span class=\"o\">.</span>srid <span class=\"o\">=</span> <span class=\"mi\">4326</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>pnt<span class=\"o\">.</span>srid\n<span class=\"go\">4326</span>\n</code></pre></div>\n</dd></dl>\n\n</section>\n<section id=\"output-properties\">\n<h4>Output Properties<a class=\"heading-anchor\" href=\"#output-properties\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>The properties in this section export the <a class=\"reference internal\" href=\"#django.contrib.gis.geos.GEOSGeometry\" title=\"django.contrib.gis.geos.GEOSGeometry\"><code class=\"xref py py-class docutils literal notranslate\">GEOSGeometry</code></a> object into\na different.  This output may be in the form of a string, buffer, or even\nanother object.</p>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.GEOSGeometry.ewkt\">\n<span class=\"sig-prename descclassname\">GEOSGeometry.</span><span class=\"sig-name descname\">ewkt</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.geos.GEOSGeometry.ewkt\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Returns the “extended” Well-Known Text of the geometry.  This representation\nis specific to PostGIS and is a superset of the OGC WKT standard. <a class=\"footnote-reference brackets\" href=\"#fnogc\" id=\"id5\" role=\"doc-noteref\"><span class=\"fn-bracket\">[</span>1<span class=\"fn-bracket\">]</span></a>\nEssentially the SRID is prepended to the WKT representation, for example\n<code class=\"docutils literal notranslate\">SRID=4326;POINT(5 23)</code>.</p>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Note</p>\n<p>The output from this property does not include the 3dm, 3dz, and 4d\ninformation that PostGIS supports in its EWKT representations.</p>\n</aside>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.GEOSGeometry.hex\">\n<span class=\"sig-prename descclassname\">GEOSGeometry.</span><span class=\"sig-name descname\">hex</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.geos.GEOSGeometry.hex\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Returns the WKB of this Geometry in hexadecimal form.  Please note\nthat the SRID value is not included in this representation\nbecause it is not a part of the OGC specification (use the\n<a class=\"reference internal\" href=\"#django.contrib.gis.geos.GEOSGeometry.hexewkb\" title=\"django.contrib.gis.geos.GEOSGeometry.hexewkb\"><code class=\"xref py py-attr docutils literal notranslate\">GEOSGeometry.hexewkb</code></a> property instead).</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.GEOSGeometry.hexewkb\">\n<span class=\"sig-prename descclassname\">GEOSGeometry.</span><span class=\"sig-name descname\">hexewkb</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.geos.GEOSGeometry.hexewkb\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Returns the EWKB of this Geometry in hexadecimal form.  This is an\nextension of the WKB specification that includes the SRID value\nthat are a part of this geometry.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.GEOSGeometry.json\">\n<span class=\"sig-prename descclassname\">GEOSGeometry.</span><span class=\"sig-name descname\">json</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.geos.GEOSGeometry.json\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Returns the GeoJSON representation of the geometry. Note that the result is\nnot a complete GeoJSON structure but only the <code class=\"docutils literal notranslate\">geometry</code> key content of a\nGeoJSON structure. See also <a class=\"reference internal\" href=\"/en/5.0/ref/contrib/gis/serializers/\"><span class=\"doc\">GeoJSON Serializer</span></a>.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.GEOSGeometry.geojson\">\n<span class=\"sig-prename descclassname\">GEOSGeometry.</span><span class=\"sig-name descname\">geojson</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.geos.GEOSGeometry.geojson\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Alias for <a class=\"reference internal\" href=\"#django.contrib.gis.geos.GEOSGeometry.json\" title=\"django.contrib.gis.geos.GEOSGeometry.json\"><code class=\"xref py py-attr docutils literal notranslate\">GEOSGeometry.json</code></a>.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.GEOSGeometry.kml\">\n<span class=\"sig-prename descclassname\">GEOSGeometry.</span><span class=\"sig-name descname\">kml</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.geos.GEOSGeometry.kml\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Returns a <a class=\"reference external\" href=\"https://developers.google.com/kml/documentation/\">KML</a> (Keyhole Markup Language) representation of the\ngeometry.  This should only be used for geometries with an SRID of\n4326 (WGS84), but this restriction is not enforced.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.GEOSGeometry.ogr\">\n<span class=\"sig-prename descclassname\">GEOSGeometry.</span><span class=\"sig-name descname\">ogr</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.geos.GEOSGeometry.ogr\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Returns an <a class=\"reference internal\" href=\"/en/5.0/ref/contrib/gis/gdal/#django.contrib.gis.gdal.OGRGeometry\" title=\"django.contrib.gis.gdal.OGRGeometry\"><code class=\"xref py py-class docutils literal notranslate\">OGRGeometry</code></a> object\ncorresponding to the GEOS geometry.</p>\n</dd></dl>\n\n<dl class=\"py attribute\" id=\"wkb\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.GEOSGeometry.wkb\">\n<span class=\"sig-prename descclassname\">GEOSGeometry.</span><span class=\"sig-name descname\">wkb</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.geos.GEOSGeometry.wkb\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Returns the WKB (Well-Known Binary) representation of this Geometry\nas a Python buffer.  SRID value is not included, use the\n<a class=\"reference internal\" href=\"#django.contrib.gis.geos.GEOSGeometry.ewkb\" title=\"django.contrib.gis.geos.GEOSGeometry.ewkb\"><code class=\"xref py py-attr docutils literal notranslate\">GEOSGeometry.ewkb</code></a> property instead.</p>\n</dd></dl>\n\n<dl class=\"py attribute\" id=\"ewkb\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.GEOSGeometry.ewkb\">\n<span class=\"sig-prename descclassname\">GEOSGeometry.</span><span class=\"sig-name descname\">ewkb</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.geos.GEOSGeometry.ewkb\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Return the EWKB representation of this Geometry as a Python buffer.\nThis is an extension of the WKB specification that includes any SRID\nvalue that are a part of this geometry.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.GEOSGeometry.wkt\">\n<span class=\"sig-prename descclassname\">GEOSGeometry.</span><span class=\"sig-name descname\">wkt</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.geos.GEOSGeometry.wkt\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Returns the Well-Known Text of the geometry (an OGC standard).</p>\n</dd></dl>\n\n</section>\n<section id=\"spatial-predicate-methods\">\n<h4>Spatial Predicate Methods<a class=\"heading-anchor\" href=\"#spatial-predicate-methods\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>All of the following spatial predicate methods take another\n<a class=\"reference internal\" href=\"#django.contrib.gis.geos.GEOSGeometry\" title=\"django.contrib.gis.geos.GEOSGeometry\"><code class=\"xref py py-class docutils literal notranslate\">GEOSGeometry</code></a> instance (<code class=\"docutils literal notranslate\">other</code>) as a parameter, and\nreturn a boolean.</p>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.GEOSGeometry.contains\">\n<span class=\"sig-prename descclassname\">GEOSGeometry.</span><span class=\"sig-name descname\">contains</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">other</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.geos.GEOSGeometry.contains\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Returns <code class=\"docutils literal notranslate\">True</code> if <a class=\"reference internal\" href=\"#django.contrib.gis.geos.GEOSGeometry.within\" title=\"django.contrib.gis.geos.GEOSGeometry.within\"><code class=\"xref py py-meth docutils literal notranslate\">other.within(this)</code></a> returns\n<code class=\"docutils literal notranslate\">True</code>.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.GEOSGeometry.covers\">\n<span class=\"sig-prename descclassname\">GEOSGeometry.</span><span class=\"sig-name descname\">covers</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">other</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.geos.GEOSGeometry.covers\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Returns <code class=\"docutils literal notranslate\">True</code> if this geometry covers the specified geometry.</p>\n<p>The <code class=\"docutils literal notranslate\">covers</code> predicate has the following equivalent definitions:</p>\n<ul class=\"simple\">\n<li><p>Every point of the other geometry is a point of this geometry.</p></li>\n<li><p>The <a class=\"reference external\" href=\"https://en.wikipedia.org/wiki/DE-9IM\">DE-9IM</a> Intersection Matrix for the two geometries is\n<code class=\"docutils literal notranslate\">T*****FF*</code>, <code class=\"docutils literal notranslate\">*T****FF*</code>, <code class=\"docutils literal notranslate\">***T**FF*</code>, or <code class=\"docutils literal notranslate\">****T*FF*</code>.</p></li>\n</ul>\n<p>If either geometry is empty, returns <code class=\"docutils literal notranslate\">False</code>.</p>\n<p>This predicate is similar to <a class=\"reference internal\" href=\"#django.contrib.gis.geos.GEOSGeometry.contains\" title=\"django.contrib.gis.geos.GEOSGeometry.contains\"><code class=\"xref py py-meth docutils literal notranslate\">GEOSGeometry.contains()</code></a>, but is more\ninclusive (i.e. returns <code class=\"docutils literal notranslate\">True</code> for more cases). In particular, unlike\n<a class=\"reference internal\" href=\"#django.contrib.gis.geos.GEOSGeometry.contains\" title=\"django.contrib.gis.geos.GEOSGeometry.contains\"><code class=\"xref py py-meth docutils literal notranslate\">contains()</code></a> it does not distinguish between points in the\nboundary and in the interior of geometries. For most situations,\n<code class=\"docutils literal notranslate\">covers()</code> should be preferred to <a class=\"reference internal\" href=\"#django.contrib.gis.geos.GEOSGeometry.contains\" title=\"django.contrib.gis.geos.GEOSGeometry.contains\"><code class=\"xref py py-meth docutils literal notranslate\">contains()</code></a>. As an\nadded benefit, <code class=\"docutils literal notranslate\">covers()</code> is more amenable to optimization and hence\nshould outperform <a class=\"reference internal\" href=\"#django.contrib.gis.geos.GEOSGeometry.contains\" title=\"django.contrib.gis.geos.GEOSGeometry.contains\"><code class=\"xref py py-meth docutils literal notranslate\">contains()</code></a>.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.GEOSGeometry.crosses\">\n<span class=\"sig-prename descclassname\">GEOSGeometry.</span><span class=\"sig-name descname\">crosses</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">other</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.geos.GEOSGeometry.crosses\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Returns <code class=\"docutils literal notranslate\">True</code> if the DE-9IM intersection matrix for the two Geometries\nis <code class=\"docutils literal notranslate\">T*T******</code> (for a point and a curve,a point and an area or a line\nand an area) <code class=\"docutils literal notranslate\">0********</code> (for two curves).</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.GEOSGeometry.disjoint\">\n<span class=\"sig-prename descclassname\">GEOSGeometry.</span><span class=\"sig-name descname\">disjoint</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">other</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.geos.GEOSGeometry.disjoint\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Returns <code class=\"docutils literal notranslate\">True</code> if the DE-9IM intersection matrix for the two geometries\nis <code class=\"docutils literal notranslate\">FF*FF****</code>.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.GEOSGeometry.equals\">\n<span class=\"sig-prename descclassname\">GEOSGeometry.</span><span class=\"sig-name descname\">equals</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">other</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.geos.GEOSGeometry.equals\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Returns <code class=\"docutils literal notranslate\">True</code> if the DE-9IM intersection matrix for the two geometries\nis <code class=\"docutils literal notranslate\">T*F**FFF*</code>.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.GEOSGeometry.equals_exact\">\n<span class=\"sig-prename descclassname\">GEOSGeometry.</span><span class=\"sig-name descname\">equals_exact</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">other</em>, <em class=\"sig-param\">tolerance<span class=\"o\">=</span><span class=\"default_value\">0</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.geos.GEOSGeometry.equals_exact\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Returns true if the two geometries are exactly equal, up to a\nspecified tolerance.  The <code class=\"docutils literal notranslate\">tolerance</code> value should be a floating\npoint number representing the error tolerance in the comparison, e.g.,\n<code class=\"docutils literal notranslate\">poly1.equals_exact(poly2, 0.001)</code> will compare equality to within\none thousandth of a unit.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.GEOSGeometry.equals_identical\">\n<span class=\"sig-prename descclassname\">GEOSGeometry.</span><span class=\"sig-name descname\">equals_identical</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">other</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.geos.GEOSGeometry.equals_identical\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><aside class=\"version-note version-added\" data-version=\"5.0\" role=\"note\">\n<p class=\"version-note-title\">New in Django 5.0</p></aside>\n<p>Returns <code class=\"docutils literal notranslate\">True</code> if the two geometries are point-wise equivalent by\nchecking that the structure, ordering, and values of all vertices are\nidentical in all dimensions. <code class=\"docutils literal notranslate\">NaN</code> values are considered to be equal to\nother <code class=\"docutils literal notranslate\">NaN</code> values. Requires GEOS 3.12.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.GEOSGeometry.intersects\">\n<span class=\"sig-prename descclassname\">GEOSGeometry.</span><span class=\"sig-name descname\">intersects</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">other</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.geos.GEOSGeometry.intersects\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Returns <code class=\"docutils literal notranslate\">True</code> if <a class=\"reference internal\" href=\"#django.contrib.gis.geos.GEOSGeometry.disjoint\" title=\"django.contrib.gis.geos.GEOSGeometry.disjoint\"><code class=\"xref py py-meth docutils literal notranslate\">GEOSGeometry.disjoint()</code></a> is <code class=\"docutils literal notranslate\">False</code>.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.GEOSGeometry.overlaps\">\n<span class=\"sig-prename descclassname\">GEOSGeometry.</span><span class=\"sig-name descname\">overlaps</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">other</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.geos.GEOSGeometry.overlaps\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Returns true if the DE-9IM intersection matrix for the two geometries\nis <code class=\"docutils literal notranslate\">T*T***T**</code> (for two points or two surfaces) <code class=\"docutils literal notranslate\">1*T***T**</code>\n(for two curves).</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.GEOSGeometry.relate_pattern\">\n<span class=\"sig-prename descclassname\">GEOSGeometry.</span><span class=\"sig-name descname\">relate_pattern</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">other</em>, <em class=\"sig-param\">pattern</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.geos.GEOSGeometry.relate_pattern\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Returns <code class=\"docutils literal notranslate\">True</code> if the elements in the DE-9IM intersection matrix\nfor this geometry and the other matches the given <code class=\"docutils literal notranslate\">pattern</code> –\na string of nine characters from the alphabet: {<code class=\"docutils literal notranslate\">T</code>, <code class=\"docutils literal notranslate\">F</code>, <code class=\"docutils literal notranslate\">*</code>, <code class=\"docutils literal notranslate\">0</code>}.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.GEOSGeometry.touches\">\n<span class=\"sig-prename descclassname\">GEOSGeometry.</span><span class=\"sig-name descname\">touches</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">other</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.geos.GEOSGeometry.touches\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Returns <code class=\"docutils literal notranslate\">True</code> if the DE-9IM intersection matrix for the two geometries\nis <code class=\"docutils literal notranslate\">FT*******</code>, <code class=\"docutils literal notranslate\">F**T*****</code> or <code class=\"docutils literal notranslate\">F***T****</code>.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.GEOSGeometry.within\">\n<span class=\"sig-prename descclassname\">GEOSGeometry.</span><span class=\"sig-name descname\">within</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">other</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.geos.GEOSGeometry.within\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Returns <code class=\"docutils literal notranslate\">True</code> if the DE-9IM intersection matrix for the two geometries\nis <code class=\"docutils literal notranslate\">T*F**F***</code>.</p>\n</dd></dl>\n\n</section>\n<section id=\"topological-methods\">\n<h4>Topological Methods<a class=\"heading-anchor\" href=\"#topological-methods\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.GEOSGeometry.buffer\">\n<span class=\"sig-prename descclassname\">GEOSGeometry.</span><span class=\"sig-name descname\">buffer</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">width</em>, <em class=\"sig-param\">quadsegs<span class=\"o\">=</span><span class=\"default_value\">8</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.geos.GEOSGeometry.buffer\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Returns a <a class=\"reference internal\" href=\"#django.contrib.gis.geos.GEOSGeometry\" title=\"django.contrib.gis.geos.GEOSGeometry\"><code class=\"xref py py-class docutils literal notranslate\">GEOSGeometry</code></a> that represents all points whose distance\nfrom this geometry is less than or equal to the given <code class=\"docutils literal notranslate\">width</code>. The\noptional <code class=\"docutils literal notranslate\">quadsegs</code> keyword sets the number of segments used to\napproximate a quarter circle (defaults is 8).</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.GEOSGeometry.buffer_with_style\">\n<span class=\"sig-prename descclassname\">GEOSGeometry.</span><span class=\"sig-name descname\">buffer_with_style</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">width</em>, <em class=\"sig-param\">quadsegs<span class=\"o\">=</span><span class=\"default_value\">8</span></em>, <em class=\"sig-param\">end_cap_style<span class=\"o\">=</span><span class=\"default_value\">1</span></em>, <em class=\"sig-param\">join_style<span class=\"o\">=</span><span class=\"default_value\">1</span></em>, <em class=\"sig-param\">mitre_limit<span class=\"o\">=</span><span class=\"default_value\">5.0</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.geos.GEOSGeometry.buffer_with_style\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Same as <a class=\"reference internal\" href=\"#django.contrib.gis.geos.GEOSGeometry.buffer\" title=\"django.contrib.gis.geos.GEOSGeometry.buffer\"><code class=\"xref py py-meth docutils literal notranslate\">buffer()</code></a>, but allows customizing the style of the buffer.</p>\n<ul class=\"simple\">\n<li><p><code class=\"docutils literal notranslate\">end_cap_style</code> can be round (<code class=\"docutils literal notranslate\">1</code>), flat (<code class=\"docutils literal notranslate\">2</code>), or square (<code class=\"docutils literal notranslate\">3</code>).</p></li>\n<li><p><code class=\"docutils literal notranslate\">join_style</code> can be round (<code class=\"docutils literal notranslate\">1</code>), mitre (<code class=\"docutils literal notranslate\">2</code>), or bevel (<code class=\"docutils literal notranslate\">3</code>).</p></li>\n<li><p>Mitre ratio limit (<code class=\"docutils literal notranslate\">mitre_limit</code>) only affects mitered join style.</p></li>\n</ul>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.GEOSGeometry.difference\">\n<span class=\"sig-prename descclassname\">GEOSGeometry.</span><span class=\"sig-name descname\">difference</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">other</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.geos.GEOSGeometry.difference\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Returns a <a class=\"reference internal\" href=\"#django.contrib.gis.geos.GEOSGeometry\" title=\"django.contrib.gis.geos.GEOSGeometry\"><code class=\"xref py py-class docutils literal notranslate\">GEOSGeometry</code></a> representing the points making up this\ngeometry that do not make up other.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.GEOSGeometry.interpolate\">\n<span class=\"sig-prename descclassname\">GEOSGeometry.</span><span class=\"sig-name descname\">interpolate</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">distance</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.geos.GEOSGeometry.interpolate\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.GEOSGeometry.interpolate_normalized\">\n<span class=\"sig-prename descclassname\">GEOSGeometry.</span><span class=\"sig-name descname\">interpolate_normalized</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">distance</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.geos.GEOSGeometry.interpolate_normalized\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Given a distance (float), returns the point (or closest point) within the\ngeometry (<a class=\"reference internal\" href=\"#django.contrib.gis.geos.LineString\" title=\"django.contrib.gis.geos.LineString\"><code class=\"xref py py-class docutils literal notranslate\">LineString</code></a> or <a class=\"reference internal\" href=\"#django.contrib.gis.geos.MultiLineString\" title=\"django.contrib.gis.geos.MultiLineString\"><code class=\"xref py py-class docutils literal notranslate\">MultiLineString</code></a>) at that distance.\nThe normalized version takes the distance as a float between 0 (origin) and\n1 (endpoint).</p>\n<p>Reverse of <a class=\"reference internal\" href=\"#django.contrib.gis.geos.GEOSGeometry.project\" title=\"django.contrib.gis.geos.GEOSGeometry.project\"><code class=\"xref py py-meth docutils literal notranslate\">GEOSGeometry.project()</code></a>.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.GEOSGeometry.intersection\">\n<span class=\"sig-prename descclassname\">GEOSGeometry.</span><span class=\"sig-name descname\">intersection</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">other</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.geos.GEOSGeometry.intersection\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Returns a <a class=\"reference internal\" href=\"#django.contrib.gis.geos.GEOSGeometry\" title=\"django.contrib.gis.geos.GEOSGeometry\"><code class=\"xref py py-class docutils literal notranslate\">GEOSGeometry</code></a> representing the points shared by this\ngeometry and other.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.GEOSGeometry.project\">\n<span class=\"sig-prename descclassname\">GEOSGeometry.</span><span class=\"sig-name descname\">project</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">point</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.geos.GEOSGeometry.project\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.GEOSGeometry.project_normalized\">\n<span class=\"sig-prename descclassname\">GEOSGeometry.</span><span class=\"sig-name descname\">project_normalized</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">point</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.geos.GEOSGeometry.project_normalized\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Returns the distance (float) from the origin of the geometry\n(<a class=\"reference internal\" href=\"#django.contrib.gis.geos.LineString\" title=\"django.contrib.gis.geos.LineString\"><code class=\"xref py py-class docutils literal notranslate\">LineString</code></a> or <a class=\"reference internal\" href=\"#django.contrib.gis.geos.MultiLineString\" title=\"django.contrib.gis.geos.MultiLineString\"><code class=\"xref py py-class docutils literal notranslate\">MultiLineString</code></a>) to the point projected on\nthe geometry (that is to a point of the line the closest to the given\npoint). The normalized version returns the distance as a float between 0\n(origin) and 1 (endpoint).</p>\n<p>Reverse of <a class=\"reference internal\" href=\"#django.contrib.gis.geos.GEOSGeometry.interpolate\" title=\"django.contrib.gis.geos.GEOSGeometry.interpolate\"><code class=\"xref py py-meth docutils literal notranslate\">GEOSGeometry.interpolate()</code></a>.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.GEOSGeometry.relate\">\n<span class=\"sig-prename descclassname\">GEOSGeometry.</span><span class=\"sig-name descname\">relate</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">other</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.geos.GEOSGeometry.relate\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Returns the DE-9IM intersection matrix (a string) representing the\ntopological relationship between this geometry and the other.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.GEOSGeometry.simplify\">\n<span class=\"sig-prename descclassname\">GEOSGeometry.</span><span class=\"sig-name descname\">simplify</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">tolerance<span class=\"o\">=</span><span class=\"default_value\">0.0</span></em>, <em class=\"sig-param\">preserve_topology<span class=\"o\">=</span><span class=\"default_value\">False</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.geos.GEOSGeometry.simplify\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Returns a new <a class=\"reference internal\" href=\"#django.contrib.gis.geos.GEOSGeometry\" title=\"django.contrib.gis.geos.GEOSGeometry\"><code class=\"xref py py-class docutils literal notranslate\">GEOSGeometry</code></a>, simplified to the specified tolerance\nusing the Douglas-Peucker algorithm. A higher tolerance value implies\nfewer points in the output. If no tolerance is provided, it defaults to 0.</p>\n<p>By default, this function does not preserve topology. For example,\n<a class=\"reference internal\" href=\"#django.contrib.gis.geos.Polygon\" title=\"django.contrib.gis.geos.Polygon\"><code class=\"xref py py-class docutils literal notranslate\">Polygon</code></a> objects can be split, be collapsed into lines, or\ndisappear. <a class=\"reference internal\" href=\"#django.contrib.gis.geos.Polygon\" title=\"django.contrib.gis.geos.Polygon\"><code class=\"xref py py-class docutils literal notranslate\">Polygon</code></a> holes can be created or disappear, and lines may\ncross. By specifying <code class=\"docutils literal notranslate\">preserve_topology=True</code>, the result will have the\nsame dimension and number of components as the input; this is significantly\nslower, however.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.GEOSGeometry.sym_difference\">\n<span class=\"sig-prename descclassname\">GEOSGeometry.</span><span class=\"sig-name descname\">sym_difference</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">other</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.geos.GEOSGeometry.sym_difference\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Returns a <a class=\"reference internal\" href=\"#django.contrib.gis.geos.GEOSGeometry\" title=\"django.contrib.gis.geos.GEOSGeometry\"><code class=\"xref py py-class docutils literal notranslate\">GEOSGeometry</code></a> combining the points in this geometry\nnot in other, and the points in other not in this geometry.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.GEOSGeometry.union\">\n<span class=\"sig-prename descclassname\">GEOSGeometry.</span><span class=\"sig-name descname\">union</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">other</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.geos.GEOSGeometry.union\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Returns a <a class=\"reference internal\" href=\"#django.contrib.gis.geos.GEOSGeometry\" title=\"django.contrib.gis.geos.GEOSGeometry\"><code class=\"xref py py-class docutils literal notranslate\">GEOSGeometry</code></a> representing all the points in this\ngeometry and the other.</p>\n</dd></dl>\n\n</section>\n<section id=\"topological-properties\">\n<h4>Topological Properties<a class=\"heading-anchor\" href=\"#topological-properties\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.GEOSGeometry.boundary\">\n<span class=\"sig-prename descclassname\">GEOSGeometry.</span><span class=\"sig-name descname\">boundary</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.geos.GEOSGeometry.boundary\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Returns the boundary as a newly allocated Geometry object.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.GEOSGeometry.centroid\">\n<span class=\"sig-prename descclassname\">GEOSGeometry.</span><span class=\"sig-name descname\">centroid</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.geos.GEOSGeometry.centroid\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Returns a <a class=\"reference internal\" href=\"#django.contrib.gis.geos.Point\" title=\"django.contrib.gis.geos.Point\"><code class=\"xref py py-class docutils literal notranslate\">Point</code></a> object representing the geometric center of\nthe geometry.  The point is not guaranteed to be on the interior\nof the geometry.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.GEOSGeometry.convex_hull\">\n<span class=\"sig-prename descclassname\">GEOSGeometry.</span><span class=\"sig-name descname\">convex_hull</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.geos.GEOSGeometry.convex_hull\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Returns the smallest <a class=\"reference internal\" href=\"#django.contrib.gis.geos.Polygon\" title=\"django.contrib.gis.geos.Polygon\"><code class=\"xref py py-class docutils literal notranslate\">Polygon</code></a> that contains all the points in\nthe geometry.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.GEOSGeometry.envelope\">\n<span class=\"sig-prename descclassname\">GEOSGeometry.</span><span class=\"sig-name descname\">envelope</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.geos.GEOSGeometry.envelope\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Returns a <a class=\"reference internal\" href=\"#django.contrib.gis.geos.Polygon\" title=\"django.contrib.gis.geos.Polygon\"><code class=\"xref py py-class docutils literal notranslate\">Polygon</code></a> that represents the bounding envelope of\nthis geometry. Note that it can also return a <a class=\"reference internal\" href=\"#django.contrib.gis.geos.Point\" title=\"django.contrib.gis.geos.Point\"><code class=\"xref py py-class docutils literal notranslate\">Point</code></a> if the input\ngeometry is a point.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.GEOSGeometry.point_on_surface\">\n<span class=\"sig-prename descclassname\">GEOSGeometry.</span><span class=\"sig-name descname\">point_on_surface</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.geos.GEOSGeometry.point_on_surface\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Computes and returns a <a class=\"reference internal\" href=\"#django.contrib.gis.geos.Point\" title=\"django.contrib.gis.geos.Point\"><code class=\"xref py py-class docutils literal notranslate\">Point</code></a> guaranteed to be on the interior\nof this geometry.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.GEOSGeometry.unary_union\">\n<span class=\"sig-prename descclassname\">GEOSGeometry.</span><span class=\"sig-name descname\">unary_union</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.geos.GEOSGeometry.unary_union\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Computes the union of all the elements of this geometry.</p>\n<p>The result obeys the following contract:</p>\n<ul class=\"simple\">\n<li><p>Unioning a set of <a class=\"reference internal\" href=\"#django.contrib.gis.geos.LineString\" title=\"django.contrib.gis.geos.LineString\"><code class=\"xref py py-class docutils literal notranslate\">LineString</code></a>s has the effect of fully noding and\ndissolving the linework.</p></li>\n<li><p>Unioning a set of <a class=\"reference internal\" href=\"#django.contrib.gis.geos.Polygon\" title=\"django.contrib.gis.geos.Polygon\"><code class=\"xref py py-class docutils literal notranslate\">Polygon</code></a>s will always return a <a class=\"reference internal\" href=\"#django.contrib.gis.geos.Polygon\" title=\"django.contrib.gis.geos.Polygon\"><code class=\"xref py py-class docutils literal notranslate\">Polygon</code></a>\nor <a class=\"reference internal\" href=\"#django.contrib.gis.geos.MultiPolygon\" title=\"django.contrib.gis.geos.MultiPolygon\"><code class=\"xref py py-class docutils literal notranslate\">MultiPolygon</code></a> geometry (unlike <a class=\"reference internal\" href=\"#django.contrib.gis.geos.GEOSGeometry.union\" title=\"django.contrib.gis.geos.GEOSGeometry.union\"><code class=\"xref py py-meth docutils literal notranslate\">GEOSGeometry.union()</code></a>,\nwhich may return geometries of lower dimension if a topology collapse\noccurs).</p></li>\n</ul>\n</dd></dl>\n\n</section>\n<section id=\"other-properties-methods\">\n<h4>Other Properties &amp; Methods<a class=\"heading-anchor\" href=\"#other-properties-methods\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.GEOSGeometry.area\">\n<span class=\"sig-prename descclassname\">GEOSGeometry.</span><span class=\"sig-name descname\">area</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.geos.GEOSGeometry.area\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>This property returns the area of the Geometry.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.GEOSGeometry.extent\">\n<span class=\"sig-prename descclassname\">GEOSGeometry.</span><span class=\"sig-name descname\">extent</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.geos.GEOSGeometry.extent\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>This property returns the extent of this geometry as a 4-tuple,\nconsisting of <code class=\"docutils literal notranslate\">(xmin, ymin, xmax, ymax)</code>.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.GEOSGeometry.clone\">\n<span class=\"sig-prename descclassname\">GEOSGeometry.</span><span class=\"sig-name descname\">clone</span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.geos.GEOSGeometry.clone\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>This method returns a <a class=\"reference internal\" href=\"#django.contrib.gis.geos.GEOSGeometry\" title=\"django.contrib.gis.geos.GEOSGeometry\"><code class=\"xref py py-class docutils literal notranslate\">GEOSGeometry</code></a> that is a clone of the original.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.GEOSGeometry.distance\">\n<span class=\"sig-prename descclassname\">GEOSGeometry.</span><span class=\"sig-name descname\">distance</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">geom</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.geos.GEOSGeometry.distance\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Returns the distance between the closest points on this geometry and the\ngiven <code class=\"docutils literal notranslate\">geom</code> (another <a class=\"reference internal\" href=\"#django.contrib.gis.geos.GEOSGeometry\" title=\"django.contrib.gis.geos.GEOSGeometry\"><code class=\"xref py py-class docutils literal notranslate\">GEOSGeometry</code></a> object).</p>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Note</p>\n<p>GEOS distance calculations are  linear – in other words, GEOS does not\nperform a spherical calculation even if the SRID specifies a geographic\ncoordinate system.</p>\n</aside>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.GEOSGeometry.length\">\n<span class=\"sig-prename descclassname\">GEOSGeometry.</span><span class=\"sig-name descname\">length</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.geos.GEOSGeometry.length\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Returns the length of this geometry (e.g., 0 for a <a class=\"reference internal\" href=\"#django.contrib.gis.geos.Point\" title=\"django.contrib.gis.geos.Point\"><code class=\"xref py py-class docutils literal notranslate\">Point</code></a>,\nthe length of a <a class=\"reference internal\" href=\"#django.contrib.gis.geos.LineString\" title=\"django.contrib.gis.geos.LineString\"><code class=\"xref py py-class docutils literal notranslate\">LineString</code></a>, or the circumference of\na <a class=\"reference internal\" href=\"#django.contrib.gis.geos.Polygon\" title=\"django.contrib.gis.geos.Polygon\"><code class=\"xref py py-class docutils literal notranslate\">Polygon</code></a>).</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.GEOSGeometry.prepared\">\n<span class=\"sig-prename descclassname\">GEOSGeometry.</span><span class=\"sig-name descname\">prepared</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.geos.GEOSGeometry.prepared\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Returns a GEOS <code class=\"docutils literal notranslate\">PreparedGeometry</code> for the contents of this geometry.\n<code class=\"docutils literal notranslate\">PreparedGeometry</code> objects are optimized for the contains, intersects,\ncovers, crosses, disjoint, overlaps, touches and within operations. Refer to\nthe <a class=\"reference internal\" href=\"#prepared-geometries\"><span class=\"std std-ref\">Prepared Geometries</span></a> documentation for more information.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.GEOSGeometry.srs\">\n<span class=\"sig-prename descclassname\">GEOSGeometry.</span><span class=\"sig-name descname\">srs</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.geos.GEOSGeometry.srs\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Returns a <a class=\"reference internal\" href=\"/en/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\">SpatialReference</code></a> object\ncorresponding to the SRID of the geometry or <code class=\"docutils literal notranslate\">None</code>.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.GEOSGeometry.transform\">\n<span class=\"sig-prename descclassname\">GEOSGeometry.</span><span class=\"sig-name descname\">transform</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">ct</em>, <em class=\"sig-param\">clone<span class=\"o\">=</span><span class=\"default_value\">False</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.geos.GEOSGeometry.transform\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Transforms the geometry according to the given coordinate transformation\nparameter (<code class=\"docutils literal notranslate\">ct</code>), which may be an integer SRID, spatial reference WKT\nstring, a PROJ string, a <a class=\"reference internal\" href=\"/en/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\">SpatialReference</code></a>\nobject, or a <a class=\"reference internal\" href=\"/en/5.0/ref/contrib/gis/gdal/#django.contrib.gis.gdal.CoordTransform\" title=\"django.contrib.gis.gdal.CoordTransform\"><code class=\"xref py py-class docutils literal notranslate\">CoordTransform</code></a> object. By\ndefault, the geometry is transformed in-place and nothing is returned.\nHowever if the <code class=\"docutils literal notranslate\">clone</code> keyword is set, then the geometry is not modified\nand a transformed clone of the geometry is returned instead.</p>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Note</p>\n<p>Raises <a class=\"reference internal\" href=\"#django.contrib.gis.geos.GEOSException\" title=\"django.contrib.gis.geos.GEOSException\"><code class=\"xref py py-class docutils literal notranslate\">GEOSException</code></a> if GDAL is not\navailable or if the geometry’s SRID is <code class=\"docutils literal notranslate\">None</code> or less than 0. It\ndoesn’t impose any constraints on the geometry’s SRID if called with a\n<a class=\"reference internal\" href=\"/en/5.0/ref/contrib/gis/gdal/#django.contrib.gis.gdal.CoordTransform\" title=\"django.contrib.gis.gdal.CoordTransform\"><code class=\"xref py py-class docutils literal notranslate\">CoordTransform</code></a> object.</p>\n</aside>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.GEOSGeometry.make_valid\">\n<span class=\"sig-prename descclassname\">GEOSGeometry.</span><span class=\"sig-name descname\">make_valid</span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.geos.GEOSGeometry.make_valid\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Returns a valid <a class=\"reference internal\" href=\"#django.contrib.gis.geos.GEOSGeometry\" title=\"django.contrib.gis.geos.GEOSGeometry\"><code class=\"xref py py-class docutils literal notranslate\">GEOSGeometry</code></a> equivalent, trying not to lose any of\nthe input vertices. If the geometry is already valid, it is returned\nuntouched. This is similar to the\n<a class=\"reference internal\" href=\"/en/5.0/ref/contrib/gis/functions/#django.contrib.gis.db.models.functions.MakeValid\" title=\"django.contrib.gis.db.models.functions.MakeValid\"><code class=\"xref py py-class docutils literal notranslate\">MakeValid</code></a> database\nfunction. Requires GEOS 3.8.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.GEOSGeometry.normalize\">\n<span class=\"sig-prename descclassname\">GEOSGeometry.</span><span class=\"sig-name descname\">normalize</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">clone<span class=\"o\">=</span><span class=\"default_value\">False</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.geos.GEOSGeometry.normalize\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Converts this geometry to canonical form. If the <code class=\"docutils literal notranslate\">clone</code> keyword is set,\nthen the geometry is not modified and a normalized clone of the geometry is\nreturned instead:</p>\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>g <span class=\"o\">=</span> MultiPoint<span class=\"p\">(</span>Point<span class=\"p\">(</span><span class=\"mi\">0</span><span class=\"p\">,</span> <span class=\"mi\">0</span><span class=\"p\">),</span> Point<span class=\"p\">(</span><span class=\"mi\">2</span><span class=\"p\">,</span> <span class=\"mi\">2</span><span class=\"p\">),</span> Point<span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">,</span> <span class=\"mi\">1</span><span class=\"p\">))</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span>g<span class=\"p\">)</span>\n<span class=\"go\">MULTIPOINT (0 0, 2 2, 1 1)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>g<span class=\"o\">.</span>normalize<span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span>g<span class=\"p\">)</span>\n<span class=\"go\">MULTIPOINT (2 2, 1 1, 0 0)</span>\n</code></pre></div>\n</dd></dl>\n\n</section>\n</section>\n<section id=\"point\">\n<h3><code class=\"docutils literal notranslate\">Point</code><a class=\"heading-anchor\" href=\"#point\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.Point\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">Point</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">x<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">y<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">z<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">srid<span class=\"o\">=</span><span class=\"default_value\">None</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.geos.Point\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><code class=\"docutils literal notranslate\">Point</code> objects are instantiated using arguments that represent the\ncomponent coordinates of the point or with a single sequence coordinates.\nFor example, the following are equivalent:</p>\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>pnt <span class=\"o\">=</span> Point<span class=\"p\">(</span><span class=\"mi\">5</span><span class=\"p\">,</span> <span class=\"mi\">23</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>pnt <span class=\"o\">=</span> Point<span class=\"p\">([</span><span class=\"mi\">5</span><span class=\"p\">,</span> <span class=\"mi\">23</span><span class=\"p\">])</span>\n</code></pre></div>\n<p>Empty <code class=\"docutils literal notranslate\">Point</code> objects may be instantiated by passing no arguments or an\nempty sequence. The following are equivalent:</p>\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>pnt <span class=\"o\">=</span> Point<span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>pnt <span class=\"o\">=</span> Point<span class=\"p\">([])</span>\n</code></pre></div>\n</dd></dl>\n\n</section>\n<section id=\"linestring\">\n<h3><code class=\"docutils literal notranslate\">LineString</code><a class=\"heading-anchor\" href=\"#linestring\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.LineString\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">LineString</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\">*</span>args</em>, <em class=\"sig-param\"><span class=\"o\">**</span>kwargs</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.geos.LineString\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><code class=\"docutils literal notranslate\">LineString</code> objects are instantiated using arguments that are either a\nsequence of coordinates or <a class=\"reference internal\" href=\"#django.contrib.gis.geos.Point\" title=\"django.contrib.gis.geos.Point\"><code class=\"xref py py-class docutils literal notranslate\">Point</code></a> objects. For example, the\nfollowing are equivalent:</p>\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>ls <span class=\"o\">=</span> LineString<span class=\"p\">((</span><span class=\"mi\">0</span><span class=\"p\">,</span> <span class=\"mi\">0</span><span class=\"p\">),</span> <span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">,</span> <span class=\"mi\">1</span><span class=\"p\">))</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>ls <span class=\"o\">=</span> LineString<span class=\"p\">(</span>Point<span class=\"p\">(</span><span class=\"mi\">0</span><span class=\"p\">,</span> <span class=\"mi\">0</span><span class=\"p\">),</span> Point<span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">,</span> <span class=\"mi\">1</span><span class=\"p\">))</span>\n</code></pre></div>\n<p>In addition, <code class=\"docutils literal notranslate\">LineString</code> objects may also be created by passing in a\nsingle sequence of coordinate or <a class=\"reference internal\" href=\"#django.contrib.gis.geos.Point\" title=\"django.contrib.gis.geos.Point\"><code class=\"xref py py-class docutils literal notranslate\">Point</code></a> objects:</p>\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>ls <span class=\"o\">=</span> LineString<span class=\"p\">(((</span><span class=\"mi\">0</span><span class=\"p\">,</span> <span class=\"mi\">0</span><span class=\"p\">),</span> <span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">,</span> <span class=\"mi\">1</span><span class=\"p\">)))</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>ls <span class=\"o\">=</span> LineString<span class=\"p\">([</span>Point<span class=\"p\">(</span><span class=\"mi\">0</span><span class=\"p\">,</span> <span class=\"mi\">0</span><span class=\"p\">),</span> Point<span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">,</span> <span class=\"mi\">1</span><span class=\"p\">)])</span>\n</code></pre></div>\n<p>Empty <code class=\"docutils literal notranslate\">LineString</code> objects may be instantiated by passing no arguments\nor an empty sequence. The following are equivalent:</p>\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>ls <span class=\"o\">=</span> LineString<span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>ls <span class=\"o\">=</span> LineString<span class=\"p\">([])</span>\n</code></pre></div>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.LineString.closed\">\n<span class=\"sig-name descname\">closed</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.geos.LineString.closed\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Returns whether or not this <code class=\"docutils literal notranslate\">LineString</code> is closed.</p>\n</dd></dl>\n\n</dd></dl>\n\n</section>\n<section id=\"linearring\">\n<h3><code class=\"docutils literal notranslate\">LinearRing</code><a class=\"heading-anchor\" href=\"#linearring\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.LinearRing\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">LinearRing</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\">*</span>args</em>, <em class=\"sig-param\"><span class=\"o\">**</span>kwargs</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.geos.LinearRing\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><code class=\"docutils literal notranslate\">LinearRing</code> objects are constructed in the exact same way as\n<a class=\"reference internal\" href=\"#django.contrib.gis.geos.LineString\" title=\"django.contrib.gis.geos.LineString\"><code class=\"xref py py-class docutils literal notranslate\">LineString</code></a> objects, however the coordinates must be <em>closed</em>, in\nother words, the first coordinates must be the same as the last\ncoordinates. For example:</p>\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>ls <span class=\"o\">=</span> LinearRing<span class=\"p\">((</span><span class=\"mi\">0</span><span class=\"p\">,</span> <span class=\"mi\">0</span><span class=\"p\">),</span> <span class=\"p\">(</span><span class=\"mi\">0</span><span class=\"p\">,</span> <span class=\"mi\">1</span><span class=\"p\">),</span> <span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">,</span> <span class=\"mi\">1</span><span class=\"p\">),</span> <span class=\"p\">(</span><span class=\"mi\">0</span><span class=\"p\">,</span> <span class=\"mi\">0</span><span class=\"p\">))</span>\n</code></pre></div>\n<p>Notice that <code class=\"docutils literal notranslate\">(0, 0)</code> is the first and last coordinate – if they were not\nequal, an error would be raised.</p>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.LinearRing.is_counterclockwise\">\n<span class=\"sig-name descname\">is_counterclockwise</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.geos.LinearRing.is_counterclockwise\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Returns whether this <code class=\"docutils literal notranslate\">LinearRing</code> is counterclockwise.</p>\n</dd></dl>\n\n</dd></dl>\n\n</section>\n<section id=\"polygon\">\n<h3><code class=\"docutils literal notranslate\">Polygon</code><a class=\"heading-anchor\" href=\"#polygon\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.Polygon\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">Polygon</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\">*</span>args</em>, <em class=\"sig-param\"><span class=\"o\">**</span>kwargs</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.geos.Polygon\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><code class=\"docutils literal notranslate\">Polygon</code> objects may be instantiated by passing in parameters that\nrepresent the rings of the polygon.  The parameters must either be\n<a class=\"reference internal\" href=\"#django.contrib.gis.geos.LinearRing\" title=\"django.contrib.gis.geos.LinearRing\"><code class=\"xref py py-class docutils literal notranslate\">LinearRing</code></a> instances, or a sequence that may be used to construct a\n<a class=\"reference internal\" href=\"#django.contrib.gis.geos.LinearRing\" title=\"django.contrib.gis.geos.LinearRing\"><code class=\"xref py py-class docutils literal notranslate\">LinearRing</code></a>:</p>\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>ext_coords <span class=\"o\">=</span> <span class=\"p\">((</span><span class=\"mi\">0</span><span class=\"p\">,</span> <span class=\"mi\">0</span><span class=\"p\">),</span> <span class=\"p\">(</span><span class=\"mi\">0</span><span class=\"p\">,</span> <span class=\"mi\">1</span><span class=\"p\">),</span> <span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">,</span> <span class=\"mi\">1</span><span class=\"p\">),</span> <span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">,</span> <span class=\"mi\">0</span><span class=\"p\">),</span> <span class=\"p\">(</span><span class=\"mi\">0</span><span class=\"p\">,</span> <span class=\"mi\">0</span><span class=\"p\">))</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>int_coords <span class=\"o\">=</span> <span class=\"p\">((</span><span class=\"mf\">0.4</span><span class=\"p\">,</span> <span class=\"mf\">0.4</span><span class=\"p\">),</span> <span class=\"p\">(</span><span class=\"mf\">0.4</span><span class=\"p\">,</span> <span class=\"mf\">0.6</span><span class=\"p\">),</span> <span class=\"p\">(</span><span class=\"mf\">0.6</span><span class=\"p\">,</span> <span class=\"mf\">0.6</span><span class=\"p\">),</span> <span class=\"p\">(</span><span class=\"mf\">0.6</span><span class=\"p\">,</span> <span class=\"mf\">0.4</span><span class=\"p\">),</span> <span class=\"p\">(</span><span class=\"mf\">0.4</span><span class=\"p\">,</span> <span class=\"mf\">0.4</span><span class=\"p\">))</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>poly <span class=\"o\">=</span> Polygon<span class=\"p\">(</span>ext_coords<span class=\"p\">,</span> int_coords<span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>poly <span class=\"o\">=</span> Polygon<span class=\"p\">(</span>LinearRing<span class=\"p\">(</span>ext_coords<span class=\"p\">),</span> LinearRing<span class=\"p\">(</span>int_coords<span class=\"p\">))</span>\n</code></pre></div>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.Polygon.from_bbox\">\n<em class=\"property\"><span class=\"k\">classmethod</span> </em><span class=\"sig-name descname\">from_bbox</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">bbox</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.geos.Polygon.from_bbox\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Returns a polygon object from the given bounding-box, a 4-tuple\ncomprising <code class=\"docutils literal notranslate\">(xmin, ymin, xmax, ymax)</code>.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.Polygon.num_interior_rings\">\n<span class=\"sig-name descname\">num_interior_rings</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.geos.Polygon.num_interior_rings\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Returns the number of interior rings in this geometry.</p>\n</dd></dl>\n\n</dd></dl>\n\n<aside class=\"admonition-comparing-polygons admonition\" role=\"note\">\n<p class=\"admonition-title\">Comparing Polygons</p>\n<p>Note that it is possible to compare <code class=\"docutils literal notranslate\">Polygon</code> objects directly with <code class=\"docutils literal notranslate\">&lt;</code>\nor <code class=\"docutils literal notranslate\">&gt;</code>, but as the comparison is made through Polygon’s\n<a class=\"reference internal\" href=\"#django.contrib.gis.geos.LineString\" title=\"django.contrib.gis.geos.LineString\"><code class=\"xref py py-class docutils literal notranslate\">LineString</code></a>, it does not mean much (but is consistent and quick).\nYou can always force the comparison with the <a class=\"reference internal\" href=\"#django.contrib.gis.geos.GEOSGeometry.area\" title=\"django.contrib.gis.geos.GEOSGeometry.area\"><code class=\"xref py py-attr docutils literal notranslate\">area</code></a>\nproperty:</p>\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=\"k\">if</span> poly_1<span class=\"o\">.</span>area <span class=\"o\">&gt;</span> poly_2<span class=\"o\">.</span>area<span class=\"p\">:</span>\n<span class=\"gp\">... </span>    <span class=\"k\">pass</span>\n<span class=\"gp\">...</span>\n</code></pre></div>\n</aside>\n</section>\n</section>\n<section id=\"geometry-collections\">\n<span id=\"geos-geometry-collections\"></span><h2>Geometry Collections<a class=\"heading-anchor\" href=\"#geometry-collections\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<section id=\"multipoint\">\n<h3><code class=\"docutils literal notranslate\">MultiPoint</code><a class=\"heading-anchor\" href=\"#multipoint\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.MultiPoint\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">MultiPoint</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\">*</span>args</em>, <em class=\"sig-param\"><span class=\"o\">**</span>kwargs</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.geos.MultiPoint\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><code class=\"docutils literal notranslate\">MultiPoint</code> objects may be instantiated by passing in <a class=\"reference internal\" href=\"#django.contrib.gis.geos.Point\" title=\"django.contrib.gis.geos.Point\"><code class=\"xref py py-class docutils literal notranslate\">Point</code></a>\nobjects as arguments, or a single sequence of <a class=\"reference internal\" href=\"#django.contrib.gis.geos.Point\" title=\"django.contrib.gis.geos.Point\"><code class=\"xref py py-class docutils literal notranslate\">Point</code></a> objects:</p>\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>mp <span class=\"o\">=</span> MultiPoint<span class=\"p\">(</span>Point<span class=\"p\">(</span><span class=\"mi\">0</span><span class=\"p\">,</span> <span class=\"mi\">0</span><span class=\"p\">),</span> Point<span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">,</span> <span class=\"mi\">1</span><span class=\"p\">))</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>mp <span class=\"o\">=</span> MultiPoint<span class=\"p\">((</span>Point<span class=\"p\">(</span><span class=\"mi\">0</span><span class=\"p\">,</span> <span class=\"mi\">0</span><span class=\"p\">),</span> Point<span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">,</span> <span class=\"mi\">1</span><span class=\"p\">)))</span>\n</code></pre></div>\n</dd></dl>\n\n</section>\n<section id=\"multilinestring\">\n<h3><code class=\"docutils literal notranslate\">MultiLineString</code><a class=\"heading-anchor\" href=\"#multilinestring\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.MultiLineString\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">MultiLineString</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\">*</span>args</em>, <em class=\"sig-param\"><span class=\"o\">**</span>kwargs</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.geos.MultiLineString\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><code class=\"docutils literal notranslate\">MultiLineString</code> objects may be instantiated by passing in\n<a class=\"reference internal\" href=\"#django.contrib.gis.geos.LineString\" title=\"django.contrib.gis.geos.LineString\"><code class=\"xref py py-class docutils literal notranslate\">LineString</code></a> objects as arguments, or a single sequence of\n<a class=\"reference internal\" href=\"#django.contrib.gis.geos.LineString\" title=\"django.contrib.gis.geos.LineString\"><code class=\"xref py py-class docutils literal notranslate\">LineString</code></a> objects:</p>\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>ls1 <span class=\"o\">=</span> LineString<span class=\"p\">((</span><span class=\"mi\">0</span><span class=\"p\">,</span> <span class=\"mi\">0</span><span class=\"p\">),</span> <span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">,</span> <span class=\"mi\">1</span><span class=\"p\">))</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>ls2 <span class=\"o\">=</span> LineString<span class=\"p\">((</span><span class=\"mi\">2</span><span class=\"p\">,</span> <span class=\"mi\">2</span><span class=\"p\">),</span> <span class=\"p\">(</span><span class=\"mi\">3</span><span class=\"p\">,</span> <span class=\"mi\">3</span><span class=\"p\">))</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>mls <span class=\"o\">=</span> MultiLineString<span class=\"p\">(</span>ls1<span class=\"p\">,</span> ls2<span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>mls <span class=\"o\">=</span> MultiLineString<span class=\"p\">([</span>ls1<span class=\"p\">,</span> ls2<span class=\"p\">])</span>\n</code></pre></div>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.MultiLineString.merged\">\n<span class=\"sig-name descname\">merged</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.geos.MultiLineString.merged\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Returns a <a class=\"reference internal\" href=\"#django.contrib.gis.geos.LineString\" title=\"django.contrib.gis.geos.LineString\"><code class=\"xref py py-class docutils literal notranslate\">LineString</code></a> representing the line merge of\nall the components in this <code class=\"docutils literal notranslate\">MultiLineString</code>.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.MultiLineString.closed\">\n<span class=\"sig-name descname\">closed</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.geos.MultiLineString.closed\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Returns <code class=\"docutils literal notranslate\">True</code> if and only if all elements are closed.</p>\n</dd></dl>\n\n</dd></dl>\n\n</section>\n<section id=\"multipolygon\">\n<h3><code class=\"docutils literal notranslate\">MultiPolygon</code><a class=\"heading-anchor\" href=\"#multipolygon\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.MultiPolygon\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">MultiPolygon</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\">*</span>args</em>, <em class=\"sig-param\"><span class=\"o\">**</span>kwargs</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.geos.MultiPolygon\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><code class=\"docutils literal notranslate\">MultiPolygon</code> objects may be instantiated by passing <a class=\"reference internal\" href=\"#django.contrib.gis.geos.Polygon\" title=\"django.contrib.gis.geos.Polygon\"><code class=\"xref py py-class docutils literal notranslate\">Polygon</code></a>\nobjects as arguments, or a single sequence of <a class=\"reference internal\" href=\"#django.contrib.gis.geos.Polygon\" title=\"django.contrib.gis.geos.Polygon\"><code class=\"xref py py-class docutils literal notranslate\">Polygon</code></a> objects:</p>\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>p1 <span class=\"o\">=</span> Polygon<span class=\"p\">(((</span><span class=\"mi\">0</span><span class=\"p\">,</span> <span class=\"mi\">0</span><span class=\"p\">),</span> <span class=\"p\">(</span><span class=\"mi\">0</span><span class=\"p\">,</span> <span class=\"mi\">1</span><span class=\"p\">),</span> <span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">,</span> <span class=\"mi\">1</span><span class=\"p\">),</span> <span class=\"p\">(</span><span class=\"mi\">0</span><span class=\"p\">,</span> <span class=\"mi\">0</span><span class=\"p\">)))</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>p2 <span class=\"o\">=</span> Polygon<span class=\"p\">(((</span><span class=\"mi\">1</span><span class=\"p\">,</span> <span class=\"mi\">1</span><span class=\"p\">),</span> <span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">,</span> <span class=\"mi\">2</span><span class=\"p\">),</span> <span class=\"p\">(</span><span class=\"mi\">2</span><span class=\"p\">,</span> <span class=\"mi\">2</span><span class=\"p\">),</span> <span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">,</span> <span class=\"mi\">1</span><span class=\"p\">)))</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>mp <span class=\"o\">=</span> MultiPolygon<span class=\"p\">(</span>p1<span class=\"p\">,</span> p2<span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>mp <span class=\"o\">=</span> MultiPolygon<span class=\"p\">([</span>p1<span class=\"p\">,</span> p2<span class=\"p\">])</span>\n</code></pre></div>\n</dd></dl>\n\n</section>\n<section id=\"geometrycollection\">\n<h3><code class=\"docutils literal notranslate\">GeometryCollection</code><a class=\"heading-anchor\" href=\"#geometrycollection\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.GeometryCollection\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">GeometryCollection</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\">*</span>args</em>, <em class=\"sig-param\"><span class=\"o\">**</span>kwargs</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.geos.GeometryCollection\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><code class=\"docutils literal notranslate\">GeometryCollection</code> objects may be instantiated by passing in other\n<a class=\"reference internal\" href=\"#django.contrib.gis.geos.GEOSGeometry\" title=\"django.contrib.gis.geos.GEOSGeometry\"><code class=\"xref py py-class docutils literal notranslate\">GEOSGeometry</code></a> as arguments, or a single sequence of\n<a class=\"reference internal\" href=\"#django.contrib.gis.geos.GEOSGeometry\" title=\"django.contrib.gis.geos.GEOSGeometry\"><code class=\"xref py py-class docutils literal notranslate\">GEOSGeometry</code></a> objects:</p>\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>poly <span class=\"o\">=</span> Polygon<span class=\"p\">(((</span><span class=\"mi\">0</span><span class=\"p\">,</span> <span class=\"mi\">0</span><span class=\"p\">),</span> <span class=\"p\">(</span><span class=\"mi\">0</span><span class=\"p\">,</span> <span class=\"mi\">1</span><span class=\"p\">),</span> <span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">,</span> <span class=\"mi\">1</span><span class=\"p\">),</span> <span class=\"p\">(</span><span class=\"mi\">0</span><span class=\"p\">,</span> <span class=\"mi\">0</span><span class=\"p\">)))</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>gc <span class=\"o\">=</span> GeometryCollection<span class=\"p\">(</span>Point<span class=\"p\">(</span><span class=\"mi\">0</span><span class=\"p\">,</span> <span class=\"mi\">0</span><span class=\"p\">),</span> MultiPoint<span class=\"p\">(</span>Point<span class=\"p\">(</span><span class=\"mi\">0</span><span class=\"p\">,</span> <span class=\"mi\">0</span><span class=\"p\">),</span> Point<span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">,</span> <span class=\"mi\">1</span><span class=\"p\">)),</span> poly<span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>gc <span class=\"o\">=</span> GeometryCollection<span class=\"p\">((</span>Point<span class=\"p\">(</span><span class=\"mi\">0</span><span class=\"p\">,</span> <span class=\"mi\">0</span><span class=\"p\">),</span> MultiPoint<span class=\"p\">(</span>Point<span class=\"p\">(</span><span class=\"mi\">0</span><span class=\"p\">,</span> <span class=\"mi\">0</span><span class=\"p\">),</span> Point<span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">,</span> <span class=\"mi\">1</span><span class=\"p\">)),</span> poly<span class=\"p\">))</span>\n</code></pre></div>\n</dd></dl>\n\n</section>\n</section>\n<section id=\"prepared-geometries\">\n<span id=\"id7\"></span><h2>Prepared Geometries<a class=\"heading-anchor\" href=\"#prepared-geometries\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>In order to obtain a prepared geometry, access the\n<a class=\"reference internal\" href=\"#django.contrib.gis.geos.GEOSGeometry.prepared\" title=\"django.contrib.gis.geos.GEOSGeometry.prepared\"><code class=\"xref py py-attr docutils literal notranslate\">GEOSGeometry.prepared</code></a> property.  Once you have a\n<code class=\"docutils literal notranslate\">PreparedGeometry</code> instance its spatial predicate methods, listed below,\nmay be used with other <code class=\"docutils literal notranslate\">GEOSGeometry</code> objects.  An operation with a prepared\ngeometry can be orders of magnitude faster – the more complex the geometry\nthat is prepared, the larger the speedup in the operation.  For more information,\nplease consult the <a class=\"reference external\" href=\"https://trac.osgeo.org/geos/wiki/PreparedGeometry\">GEOS wiki page on prepared geometries</a>.</p>\n<p>For example:</p>\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=\"nn\">django.contrib.gis.geos</span> <span class=\"kn\">import</span> Point<span class=\"p\">,</span> Polygon\n<span class=\"gp\">&gt;&gt;&gt; </span>poly <span class=\"o\">=</span> Polygon<span class=\"o\">.</span>from_bbox<span class=\"p\">((</span><span class=\"mi\">0</span><span class=\"p\">,</span> <span class=\"mi\">0</span><span class=\"p\">,</span> <span class=\"mi\">5</span><span class=\"p\">,</span> <span class=\"mi\">5</span><span class=\"p\">))</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>prep_poly <span class=\"o\">=</span> poly<span class=\"o\">.</span>prepared\n<span class=\"gp\">&gt;&gt;&gt; </span>prep_poly<span class=\"o\">.</span>contains<span class=\"p\">(</span>Point<span class=\"p\">(</span><span class=\"mf\">2.5</span><span class=\"p\">,</span> <span class=\"mf\">2.5</span><span class=\"p\">))</span>\n<span class=\"go\">True</span>\n</code></pre></div>\n<section id=\"preparedgeometry\">\n<h3><code class=\"docutils literal notranslate\">PreparedGeometry</code><a class=\"heading-anchor\" href=\"#preparedgeometry\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.PreparedGeometry\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">PreparedGeometry</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.geos.PreparedGeometry\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>All methods on <code class=\"docutils literal notranslate\">PreparedGeometry</code> take an <code class=\"docutils literal notranslate\">other</code> argument, which\nmust be a <a class=\"reference internal\" href=\"#django.contrib.gis.geos.GEOSGeometry\" title=\"django.contrib.gis.geos.GEOSGeometry\"><code class=\"xref py py-class docutils literal notranslate\">GEOSGeometry</code></a> instance.</p>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.PreparedGeometry.contains\">\n<span class=\"sig-name descname\">contains</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">other</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.geos.PreparedGeometry.contains\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.PreparedGeometry.contains_properly\">\n<span class=\"sig-name descname\">contains_properly</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">other</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.geos.PreparedGeometry.contains_properly\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.PreparedGeometry.covers\">\n<span class=\"sig-name descname\">covers</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">other</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.geos.PreparedGeometry.covers\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.PreparedGeometry.crosses\">\n<span class=\"sig-name descname\">crosses</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">other</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.geos.PreparedGeometry.crosses\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.PreparedGeometry.disjoint\">\n<span class=\"sig-name descname\">disjoint</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">other</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.geos.PreparedGeometry.disjoint\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.PreparedGeometry.intersects\">\n<span class=\"sig-name descname\">intersects</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">other</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.geos.PreparedGeometry.intersects\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.PreparedGeometry.overlaps\">\n<span class=\"sig-name descname\">overlaps</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">other</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.geos.PreparedGeometry.overlaps\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.PreparedGeometry.touches\">\n<span class=\"sig-name descname\">touches</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">other</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.geos.PreparedGeometry.touches\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.PreparedGeometry.within\">\n<span class=\"sig-name descname\">within</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">other</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.geos.PreparedGeometry.within\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n</dd></dl>\n\n</section>\n</section>\n<section id=\"geometry-factories\">\n<h2>Geometry Factories<a class=\"heading-anchor\" href=\"#geometry-factories\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.fromfile\">\n<span class=\"sig-name descname\">fromfile</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">file_h</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.geos.fromfile\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><dl class=\"field-list simple\">\n<dt class=\"field-odd\">Parameters<span class=\"colon\">:</span></dt>\n<dd class=\"field-odd\"><p><strong>file_h</strong> (a Python <code class=\"docutils literal notranslate\">file</code> object or a string path to the file) – input file that contains spatial data</p>\n</dd>\n<dt class=\"field-even\">Return type<span class=\"colon\">:</span></dt>\n<dd class=\"field-even\"><p>a <a class=\"reference internal\" href=\"#django.contrib.gis.geos.GEOSGeometry\" title=\"django.contrib.gis.geos.GEOSGeometry\"><code class=\"xref py py-class docutils literal notranslate\">GEOSGeometry</code></a> corresponding to the spatial data in the file</p>\n</dd>\n</dl>\n<p>Example:</p>\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=\"nn\">django.contrib.gis.geos</span> <span class=\"kn\">import</span> fromfile\n<span class=\"gp\">&gt;&gt;&gt; </span>g <span class=\"o\">=</span> fromfile<span class=\"p\">(</span><span class=\"s2\">&quot;/home/bob/geom.wkt&quot;</span><span class=\"p\">)</span>\n</code></pre></div>\n</dd></dl>\n\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.fromstr\">\n<span class=\"sig-name descname\">fromstr</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">string</em>, <em class=\"sig-param\">srid<span class=\"o\">=</span><span class=\"default_value\">None</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.geos.fromstr\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><dl class=\"field-list simple\">\n<dt class=\"field-odd\">Parameters<span class=\"colon\">:</span></dt>\n<dd class=\"field-odd\"><ul class=\"simple\">\n<li><p><strong>string</strong> (<a class=\"reference external\" href=\"https://docs.python.org/3/library/stdtypes.html#str\" title=\"(in Python v3.14)\"><em>str</em></a>) – string that contains spatial data</p></li>\n<li><p><strong>srid</strong> (<a class=\"reference external\" href=\"https://docs.python.org/3/library/functions.html#int\" title=\"(in Python v3.14)\"><em>int</em></a>) – spatial reference identifier</p></li>\n</ul>\n</dd>\n<dt class=\"field-even\">Return type<span class=\"colon\">:</span></dt>\n<dd class=\"field-even\"><p>a <a class=\"reference internal\" href=\"#django.contrib.gis.geos.GEOSGeometry\" title=\"django.contrib.gis.geos.GEOSGeometry\"><code class=\"xref py py-class docutils literal notranslate\">GEOSGeometry</code></a> corresponding to the spatial data in the string</p>\n</dd>\n</dl>\n<p><code class=\"docutils literal notranslate\">fromstr(string, srid)</code> is equivalent to\n<a class=\"reference internal\" href=\"#django.contrib.gis.geos.GEOSGeometry\" title=\"django.contrib.gis.geos.GEOSGeometry\"><code class=\"xref py py-class docutils literal notranslate\">GEOSGeometry(string, srid)</code></a>.</p>\n<p>Example:</p>\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=\"nn\">django.contrib.gis.geos</span> <span class=\"kn\">import</span> fromstr\n<span class=\"gp\">&gt;&gt;&gt; </span>pnt <span class=\"o\">=</span> fromstr<span class=\"p\">(</span><span class=\"s2\">&quot;POINT(-90.5 29.5)&quot;</span><span class=\"p\">,</span> srid<span class=\"o\">=</span><span class=\"mi\">4326</span><span class=\"p\">)</span>\n</code></pre></div>\n</dd></dl>\n\n</section>\n<section id=\"i-o-objects\">\n<h2>I/O Objects<a class=\"heading-anchor\" href=\"#i-o-objects\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<section id=\"reader-objects\">\n<h3>Reader Objects<a class=\"heading-anchor\" href=\"#reader-objects\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>The reader I/O classes return a <a class=\"reference internal\" href=\"#django.contrib.gis.geos.GEOSGeometry\" title=\"django.contrib.gis.geos.GEOSGeometry\"><code class=\"xref py py-class docutils literal notranslate\">GEOSGeometry</code></a> instance from the WKB\nand/or WKT input given to their <code class=\"docutils literal notranslate\">read(geom)</code> method.</p>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.WKBReader\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">WKBReader</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.geos.WKBReader\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Example:</p>\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=\"nn\">django.contrib.gis.geos</span> <span class=\"kn\">import</span> WKBReader\n<span class=\"gp\">&gt;&gt;&gt; </span>wkb_r <span class=\"o\">=</span> WKBReader<span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>wkb_r<span class=\"o\">.</span>read<span class=\"p\">(</span><span class=\"s2\">&quot;0101000000000000000000F03F000000000000F03F&quot;</span><span class=\"p\">)</span>\n<span class=\"go\">&lt;Point object at 0x103a88910&gt;</span>\n</code></pre></div>\n</dd></dl>\n\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.WKTReader\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">WKTReader</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.geos.WKTReader\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Example:</p>\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=\"nn\">django.contrib.gis.geos</span> <span class=\"kn\">import</span> WKTReader\n<span class=\"gp\">&gt;&gt;&gt; </span>wkt_r <span class=\"o\">=</span> WKTReader<span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>wkt_r<span class=\"o\">.</span>read<span class=\"p\">(</span><span class=\"s2\">&quot;POINT(1 1)&quot;</span><span class=\"p\">)</span>\n<span class=\"go\">&lt;Point object at 0x103a88b50&gt;</span>\n</code></pre></div>\n</dd></dl>\n\n</section>\n<section id=\"writer-objects\">\n<h3>Writer Objects<a class=\"heading-anchor\" href=\"#writer-objects\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>All writer objects have a <code class=\"docutils literal notranslate\">write(geom)</code> method that returns either the\nWKB or WKT of the given geometry.  In addition, <a class=\"reference internal\" href=\"#django.contrib.gis.geos.WKBWriter\" title=\"django.contrib.gis.geos.WKBWriter\"><code class=\"xref py py-class docutils literal notranslate\">WKBWriter</code></a> objects\nalso have properties that may be used to change the byte order, and or\ninclude the SRID value (in other words, EWKB).</p>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.WKBWriter\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">WKBWriter</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">dim<span class=\"o\">=</span><span class=\"default_value\">2</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.geos.WKBWriter\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><code class=\"docutils literal notranslate\">WKBWriter</code> provides the most control over its output.  By default it\nreturns OGC-compliant WKB when its <code class=\"docutils literal notranslate\">write</code> method is called.  However,\nit has properties that allow for the creation of EWKB, a superset of the\nWKB standard that includes additional information. See the\n<a class=\"reference internal\" href=\"#django.contrib.gis.geos.WKBWriter.outdim\" title=\"django.contrib.gis.geos.WKBWriter.outdim\"><code class=\"xref py py-attr docutils literal notranslate\">WKBWriter.outdim</code></a> documentation for more details about the <code class=\"docutils literal notranslate\">dim</code>\nargument.</p>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.WKBWriter.write\">\n<span class=\"sig-name descname\">write</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">geom</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.geos.WKBWriter.write\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Returns the WKB of the given geometry as a Python <code class=\"docutils literal notranslate\">buffer</code> object.\nExample:</p>\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=\"nn\">django.contrib.gis.geos</span> <span class=\"kn\">import</span> Point<span class=\"p\">,</span> WKBWriter\n<span class=\"gp\">&gt;&gt;&gt; </span>pnt <span class=\"o\">=</span> Point<span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">,</span> <span class=\"mi\">1</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>wkb_w <span class=\"o\">=</span> WKBWriter<span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>wkb_w<span class=\"o\">.</span>write<span class=\"p\">(</span>pnt<span class=\"p\">)</span>\n<span class=\"go\">&lt;read-only buffer for 0x103a898f0, size -1, offset 0 at 0x103a89930&gt;</span>\n</code></pre></div>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.WKBWriter.write_hex\">\n<span class=\"sig-name descname\">write_hex</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">geom</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.geos.WKBWriter.write_hex\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Returns WKB of the geometry in hexadecimal.  Example:</p>\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=\"nn\">django.contrib.gis.geos</span> <span class=\"kn\">import</span> Point<span class=\"p\">,</span> WKBWriter\n<span class=\"gp\">&gt;&gt;&gt; </span>pnt <span class=\"o\">=</span> Point<span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">,</span> <span class=\"mi\">1</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>wkb_w <span class=\"o\">=</span> WKBWriter<span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>wkb_w<span class=\"o\">.</span>write_hex<span class=\"p\">(</span>pnt<span class=\"p\">)</span>\n<span class=\"go\">&#39;0101000000000000000000F03F000000000000F03F&#39;</span>\n</code></pre></div>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.WKBWriter.byteorder\">\n<span class=\"sig-name descname\">byteorder</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.geos.WKBWriter.byteorder\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>This property may be set to change the byte-order of the geometry\nrepresentation.</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>Byteorder Value</p></th>\n<th class=\"head\"><p>Description</p></th>\n</tr>\n</thead>\n<tbody>\n<tr class=\"row-even\"><td><p>0</p></td>\n<td><p>Big Endian (e.g., compatible with RISC systems)</p></td>\n</tr>\n<tr class=\"row-odd\"><td><p>1</p></td>\n<td><p>Little Endian (e.g., compatible with x86 systems)</p></td>\n</tr>\n</tbody>\n</table>\n</div>\n<p>Example:</p>\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=\"nn\">django.contrib.gis.geos</span> <span class=\"kn\">import</span> Point<span class=\"p\">,</span> WKBWriter\n<span class=\"gp\">&gt;&gt;&gt; </span>wkb_w <span class=\"o\">=</span> WKBWriter<span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>pnt <span class=\"o\">=</span> Point<span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">,</span> <span class=\"mi\">1</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>wkb_w<span class=\"o\">.</span>write_hex<span class=\"p\">(</span>pnt<span class=\"p\">)</span>\n<span class=\"go\">&#39;0101000000000000000000F03F000000000000F03F&#39;</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>wkb_w<span class=\"o\">.</span>byteorder <span class=\"o\">=</span> <span class=\"mi\">0</span>\n<span class=\"go\">&#39;00000000013FF00000000000003FF0000000000000&#39;</span>\n</code></pre></div>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.WKBWriter.outdim\">\n<span class=\"sig-name descname\">outdim</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.geos.WKBWriter.outdim\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>This property may be set to change the output dimension of the geometry\nrepresentation.  In other words, if you have a 3D geometry then set to 3\nso that the Z value is included in the WKB.</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>Outdim Value</p></th>\n<th class=\"head\"><p>Description</p></th>\n</tr>\n</thead>\n<tbody>\n<tr class=\"row-even\"><td><p>2</p></td>\n<td><p>The default, output 2D WKB.</p></td>\n</tr>\n<tr class=\"row-odd\"><td><p>3</p></td>\n<td><p>Output 3D WKB.</p></td>\n</tr>\n</tbody>\n</table>\n</div>\n<p>Example:</p>\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=\"nn\">django.contrib.gis.geos</span> <span class=\"kn\">import</span> Point<span class=\"p\">,</span> WKBWriter\n<span class=\"gp\">&gt;&gt;&gt; </span>wkb_w <span class=\"o\">=</span> WKBWriter<span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>wkb_w<span class=\"o\">.</span>outdim\n<span class=\"go\">2</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>pnt <span class=\"o\">=</span> Point<span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">,</span> <span class=\"mi\">1</span><span class=\"p\">,</span> <span class=\"mi\">1</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>wkb_w<span class=\"o\">.</span>write_hex<span class=\"p\">(</span>pnt<span class=\"p\">)</span>  <span class=\"c1\"># By default, no Z value included:</span>\n<span class=\"go\">&#39;0101000000000000000000F03F000000000000F03F&#39;</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>wkb_w<span class=\"o\">.</span>outdim <span class=\"o\">=</span> <span class=\"mi\">3</span>  <span class=\"c1\"># Tell writer to include Z values</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>wkb_w<span class=\"o\">.</span>write_hex<span class=\"p\">(</span>pnt<span class=\"p\">)</span>\n<span class=\"go\">&#39;0101000080000000000000F03F000000000000F03F000000000000F03F&#39;</span>\n</code></pre></div>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.WKBWriter.srid\">\n<span class=\"sig-name descname\">srid</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.geos.WKBWriter.srid\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Set this property with a boolean to indicate whether the SRID of the\ngeometry should be included with the WKB representation.  Example:</p>\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=\"nn\">django.contrib.gis.geos</span> <span class=\"kn\">import</span> Point<span class=\"p\">,</span> WKBWriter\n<span class=\"gp\">&gt;&gt;&gt; </span>wkb_w <span class=\"o\">=</span> WKBWriter<span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>pnt <span class=\"o\">=</span> Point<span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">,</span> <span class=\"mi\">1</span><span class=\"p\">,</span> srid<span class=\"o\">=</span><span class=\"mi\">4326</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>wkb_w<span class=\"o\">.</span>write_hex<span class=\"p\">(</span>pnt<span class=\"p\">)</span>  <span class=\"c1\"># By default, no SRID included:</span>\n<span class=\"go\">&#39;0101000000000000000000F03F000000000000F03F&#39;</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>wkb_w<span class=\"o\">.</span>srid <span class=\"o\">=</span> <span class=\"kc\">True</span>  <span class=\"c1\"># Tell writer to include SRID</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>wkb_w<span class=\"o\">.</span>write_hex<span class=\"p\">(</span>pnt<span class=\"p\">)</span>\n<span class=\"go\">&#39;0101000020E6100000000000000000F03F000000000000F03F&#39;</span>\n</code></pre></div>\n</dd></dl>\n\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.WKTWriter\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">WKTWriter</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">dim<span class=\"o\">=</span><span class=\"default_value\">2</span></em>, <em class=\"sig-param\">trim<span class=\"o\">=</span><span class=\"default_value\">False</span></em>, <em class=\"sig-param\">precision<span class=\"o\">=</span><span class=\"default_value\">None</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.geos.WKTWriter\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>This class allows outputting the WKT representation of a geometry. See the\n<a class=\"reference internal\" href=\"#django.contrib.gis.geos.WKBWriter.outdim\" title=\"django.contrib.gis.geos.WKBWriter.outdim\"><code class=\"xref py py-attr docutils literal notranslate\">WKBWriter.outdim</code></a>, <a class=\"reference internal\" href=\"#django.contrib.gis.geos.WKTWriter.trim\" title=\"django.contrib.gis.geos.WKTWriter.trim\"><code class=\"xref py py-attr docutils literal notranslate\">trim</code></a>, and <a class=\"reference internal\" href=\"#django.contrib.gis.geos.WKTWriter.precision\" title=\"django.contrib.gis.geos.WKTWriter.precision\"><code class=\"xref py py-attr docutils literal notranslate\">precision</code></a> attributes for\ndetails about the constructor arguments.</p>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.WKTWriter.write\">\n<span class=\"sig-name descname\">write</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">geom</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.geos.WKTWriter.write\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Returns the WKT of the given geometry. Example:</p>\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=\"nn\">django.contrib.gis.geos</span> <span class=\"kn\">import</span> Point<span class=\"p\">,</span> WKTWriter\n<span class=\"gp\">&gt;&gt;&gt; </span>pnt <span class=\"o\">=</span> Point<span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">,</span> <span class=\"mi\">1</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>wkt_w <span class=\"o\">=</span> WKTWriter<span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>wkt_w<span class=\"o\">.</span>write<span class=\"p\">(</span>pnt<span class=\"p\">)</span>\n<span class=\"go\">&#39;POINT (1.0000000000000000 1.0000000000000000)&#39;</span>\n</code></pre></div>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.WKTWriter.outdim\">\n<span class=\"sig-name descname\">outdim</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.geos.WKTWriter.outdim\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>See <a class=\"reference internal\" href=\"#django.contrib.gis.geos.WKBWriter.outdim\" title=\"django.contrib.gis.geos.WKBWriter.outdim\"><code class=\"xref py py-attr docutils literal notranslate\">WKBWriter.outdim</code></a>.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.WKTWriter.trim\">\n<span class=\"sig-name descname\">trim</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.geos.WKTWriter.trim\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>This property is used to enable or disable trimming of\nunnecessary decimals.</p>\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=\"nn\">django.contrib.gis.geos</span> <span class=\"kn\">import</span> Point<span class=\"p\">,</span> WKTWriter\n<span class=\"gp\">&gt;&gt;&gt; </span>pnt <span class=\"o\">=</span> Point<span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">,</span> <span class=\"mi\">1</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>wkt_w <span class=\"o\">=</span> WKTWriter<span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>wkt_w<span class=\"o\">.</span>trim\n<span class=\"go\">False</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>wkt_w<span class=\"o\">.</span>write<span class=\"p\">(</span>pnt<span class=\"p\">)</span>\n<span class=\"go\">&#39;POINT (1.0000000000000000 1.0000000000000000)&#39;</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>wkt_w<span class=\"o\">.</span>trim <span class=\"o\">=</span> <span class=\"kc\">True</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>wkt_w<span class=\"o\">.</span>write<span class=\"p\">(</span>pnt<span class=\"p\">)</span>\n<span class=\"go\">&#39;POINT (1 1)&#39;</span>\n</code></pre></div>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.WKTWriter.precision\">\n<span class=\"sig-name descname\">precision</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.geos.WKTWriter.precision\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>This property controls the rounding precision of coordinates;\nif set to <code class=\"docutils literal notranslate\">None</code> rounding is disabled.</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=\"nn\">django.contrib.gis.geos</span> <span class=\"kn\">import</span> Point<span class=\"p\">,</span> WKTWriter\n<span class=\"gp\">&gt;&gt;&gt; </span>pnt <span class=\"o\">=</span> Point<span class=\"p\">(</span><span class=\"mf\">1.44</span><span class=\"p\">,</span> <span class=\"mf\">1.66</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>wkt_w <span class=\"o\">=</span> WKTWriter<span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span>wkt_w<span class=\"o\">.</span>precision<span class=\"p\">)</span>\n<span class=\"go\">None</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>wkt_w<span class=\"o\">.</span>write<span class=\"p\">(</span>pnt<span class=\"p\">)</span>\n<span class=\"go\">&#39;POINT (1.4399999999999999 1.6599999999999999)&#39;</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>wkt_w<span class=\"o\">.</span>precision <span class=\"o\">=</span> <span class=\"mi\">0</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>wkt_w<span class=\"o\">.</span>write<span class=\"p\">(</span>pnt<span class=\"p\">)</span>\n<span class=\"go\">&#39;POINT (1 2)&#39;</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>wkt_w<span class=\"o\">.</span>precision <span class=\"o\">=</span> <span class=\"mi\">1</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>wkt_w<span class=\"o\">.</span>write<span class=\"p\">(</span>pnt<span class=\"p\">)</span>\n<span class=\"go\">&#39;POINT (1.4 1.7)&#39;</span>\n</code></pre></div>\n</dd></dl>\n\n<p class=\"rubric\">Footnotes</p>\n<aside class=\"footnote-list brackets\">\n<aside class=\"footnote brackets\" id=\"fnogc\" role=\"doc-footnote\">\n<span class=\"label\"><span class=\"fn-bracket\">[</span><a role=\"doc-backlink\" href=\"#id5\">1</a><span class=\"fn-bracket\">]</span></span>\n<p><em>See</em> <a class=\"reference external\" href=\"https://postgis.net/docs/using_postgis_dbmanagement.html#EWKB_EWKT\">PostGIS EWKB, EWKT and Canonical Forms</a>, PostGIS documentation at Ch. 4.1.2.</p>\n</aside>\n</aside>\n</section>\n</section>\n<section id=\"settings\">\n<h2>Settings<a class=\"heading-anchor\" href=\"#settings\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<section id=\"geos-library-path\">\n<span id=\"std-setting-GEOS_LIBRARY_PATH\"></span><h3><code class=\"docutils literal notranslate\">GEOS_LIBRARY_PATH</code><a class=\"heading-anchor\" href=\"#geos-library-path\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>A string specifying the location of the GEOS C library.  Typically,\nthis setting is only used if the GEOS C library is in a non-standard\nlocation (e.g., <code class=\"docutils literal notranslate\">/home/bob/lib/libgeos_c.so</code>).</p>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Note</p>\n<p>The setting must be the <em>full</em> path to the <strong>C</strong> shared library; in\nother words you want to use <code class=\"docutils literal notranslate\">libgeos_c.so</code>, not <code class=\"docutils literal notranslate\">libgeos.so</code>.</p>\n</aside>\n</section>\n</section>\n<section id=\"exceptions\">\n<h2>Exceptions<a class=\"heading-anchor\" href=\"#exceptions\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py exception\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.GEOSException\">\n<em class=\"property\"><span class=\"k\">exception</span> </em><span class=\"sig-name descname\">GEOSException</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.geos.GEOSException\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>The base GEOS exception, indicates a GEOS-related error.</p>\n</dd></dl>\n\n</section>","rootId":"module-django.contrib.gis.geos","toc":[{"title":"Background","anchor":"background","children":[{"title":"What is GEOS?","anchor":"what-is-geos","children":[]},{"title":"Features","anchor":"features","children":[]}]},{"title":"Tutorial","anchor":"tutorial","children":[{"title":"Creating a Geometry","anchor":"creating-a-geometry","children":[]},{"title":"Geometries are Pythonic","anchor":"geometries-are-pythonic","children":[]}]},{"title":"Geometry Objects","anchor":"geometry-objects","children":[{"title":"GEOSGeometry","anchor":"geosgeometry","children":[{"title":"Properties","anchor":"properties","children":[]},{"title":"Output Properties","anchor":"output-properties","children":[]},{"title":"Spatial Predicate Methods","anchor":"spatial-predicate-methods","children":[]},{"title":"Topological Methods","anchor":"topological-methods","children":[]},{"title":"Topological Properties","anchor":"topological-properties","children":[]},{"title":"Other Properties & Methods","anchor":"other-properties-methods","children":[]}]},{"title":"Point","anchor":"point","children":[]},{"title":"LineString","anchor":"linestring","children":[]},{"title":"LinearRing","anchor":"linearring","children":[]},{"title":"Polygon","anchor":"polygon","children":[]}]},{"title":"Geometry Collections","anchor":"geometry-collections","children":[{"title":"MultiPoint","anchor":"multipoint","children":[]},{"title":"MultiLineString","anchor":"multilinestring","children":[]},{"title":"MultiPolygon","anchor":"multipolygon","children":[]},{"title":"GeometryCollection","anchor":"geometrycollection","children":[]}]},{"title":"Prepared Geometries","anchor":"prepared-geometries","children":[{"title":"PreparedGeometry","anchor":"preparedgeometry","children":[]}]},{"title":"Geometry Factories","anchor":"geometry-factories","children":[]},{"title":"I/O Objects","anchor":"i-o-objects","children":[{"title":"Reader Objects","anchor":"reader-objects","children":[]},{"title":"Writer Objects","anchor":"writer-objects","children":[]}]},{"title":"Settings","anchor":"settings","children":[{"title":"GEOS_LIBRARY_PATH","anchor":"geos-library-path","children":[]}]},{"title":"Exceptions","anchor":"exceptions","children":[]}],"breadcrumbs":[{"docname":"ref/index","title":"API Reference","url":"/en/5.0/ref/"},{"docname":"ref/contrib/index","title":"contrib packages","url":"/en/5.0/ref/contrib/"},{"docname":"ref/contrib/gis/index","title":"GeoDjango","url":"/en/5.0/ref/contrib/gis/"}],"prev":{"docname":"ref/contrib/gis/measure","title":"Measurement Objects","url":"/en/5.0/ref/contrib/gis/measure/"},"next":{"docname":"ref/contrib/gis/gdal","title":"GDAL API","url":"/en/5.0/ref/contrib/gis/gdal/"},"formats":{"html":"/en/5.0/ref/contrib/gis/geos/","markdown":"/en/5.0/ref/contrib/gis/geos.md","json":"/en/5.0/ref/contrib/gis/geos.json"},"source":"https://github.com/django/django/blob/stable/5.0.x/docs/ref/contrib/gis/geos.txt","official":"https://docs.djangoproject.com/en/5.0/ref/contrib/gis/geos/","inVersions":["dev","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","1.8"],"inLocales":["en","zh-hans","fr","ja","id","it","pt-br","ko","es","el","pl"]}