{"title":"GEOS API","version":"6.0","locale":"en","docname":"ref/contrib/gis/geos","url":"/en/6.0/ref/contrib/gis/geos/","canonical":"https://djangodocs.dev/en/6.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<span id=\"geos-overview\"></span><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\"><span class=\"pre\">ctypes</span></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\"><span class=\"pre\">GEOSGeometry</span></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/6.0/topics/settings/#envvar-DJANGO_SETTINGS_MODULE\"><code class=\"xref std std-envvar docutils literal notranslate\"><span class=\"pre\">DJANGO_SETTINGS_MODULE</span></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\"><span class=\"pre\">GEOSGeometry</span></code></a> objects may be modified.</p></li>\n<li><p>Cross-platform tested.</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\"><span class=\"pre\">GEOSGeometry</span></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\"><span class=\"pre\">GEOSGeometry</span></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=\"w\"> </span><span class=\"nn\">django.contrib.gis.geos</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">GEOSGeometry</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">pnt</span> <span class=\"o\">=</span> <span class=\"n\">GEOSGeometry</span><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><span class=\"n\">pnt</span> <span class=\"o\">=</span> <span class=\"n\">GEOSGeometry</span><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><span class=\"n\">pnt</span> <span class=\"o\">=</span> <span class=\"n\">GEOSGeometry</span><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><span class=\"n\">pnt</span> <span class=\"o\">=</span> <span class=\"n\">GEOSGeometry</span><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\"><span class=\"pre\">Point</span></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=\"w\"> </span><span class=\"nn\">django.contrib.gis.geos</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">Point</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">pnt</span> <span class=\"o\">=</span> <span class=\"n\">Point</span><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\"><span class=\"pre\">srid</span></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=\"w\"> </span><span class=\"nn\">django.contrib.gis.geos</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">GEOSGeometry</span><span class=\"p\">,</span> <span class=\"n\">LineString</span><span class=\"p\">,</span> <span class=\"n\">Point</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span><span class=\"n\">GEOSGeometry</span><span class=\"p\">(</span><span class=\"s2\">&quot;POINT (0 0)&quot;</span><span class=\"p\">,</span> <span class=\"n\">srid</span><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><span class=\"n\">LineString</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\">1</span><span class=\"p\">,</span> <span class=\"mi\">1</span><span class=\"p\">),</span> <span class=\"n\">srid</span><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><span class=\"n\">Point</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=\"n\">srid</span><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\"><span class=\"pre\">fromfile()</span></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\"><span class=\"pre\">GEOSGeometry</span></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=\"w\"> </span><span class=\"nn\">django.contrib.gis.geos</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">fromfile</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">pnt</span> <span class=\"o\">=</span> <span class=\"n\">fromfile</span><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><span class=\"n\">pnt</span> <span class=\"o\">=</span> <span class=\"n\">fromfile</span><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\">\n<p class=\"admonition-title\">My logs are filled with GEOS-related errors</p>\n<p>You find many <code class=\"docutils literal notranslate\"><span class=\"pre\">TypeError</span></code> or <code class=\"docutils literal notranslate\"><span class=\"pre\">AttributeError</span></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\nrace condition in the garbage collector, your module is garbage collected\nbefore the 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\"><span class=\"pre\">GEOSGeometry</span></code></a>\nobjects inside 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\"><span class=\"pre\">GEOSGeometry</span></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\"><span class=\"pre\">Point</span></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><span class=\"n\">pnt</span> <span class=\"o\">=</span> <span class=\"n\">Point</span><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><span class=\"n\">coord</span> <span class=\"k\">for</span> <span class=\"n\">coord</span> <span class=\"ow\">in</span> <span class=\"n\">pnt</span><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\"><span class=\"pre\">GEOSGeometry.coords</span></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><span class=\"n\">pnt</span><span class=\"o\">.</span><span class=\"n\">coords</span>\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\"><span class=\"pre\">LineString</span></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=\"w\"> </span><span class=\"nn\">django.contrib.gis.geos</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">LineString</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">line</span> <span class=\"o\">=</span> <span class=\"n\">LineString</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\">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><span class=\"n\">line</span><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><span class=\"n\">line</span><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\"><span class=\"pre\">Polygon</span></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\"><span class=\"pre\">LinearRing</span></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=\"w\"> </span><span class=\"nn\">django.contrib.gis.geos</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">Polygon</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">poly</span> <span class=\"o\">=</span> <span class=\"n\">Polygon</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> <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><span class=\"n\">poly</span><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><span class=\"n\">poly</span><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><span class=\"n\">line</span><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><span class=\"n\">line</span><span class=\"o\">.</span><span class=\"n\">pop</span><span class=\"p\">()</span>\n<span class=\"go\">(0.0, 0.0)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">line</span><span class=\"o\">.</span><span class=\"n\">append</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><span class=\"n\">line</span><span class=\"o\">.</span><span class=\"n\">coords</span>\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=\"w\"> </span><span class=\"nn\">django.contrib.gis.geos</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">LineString</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">ls1</span> <span class=\"o\">=</span> <span class=\"n\">LineString</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\">2</span><span class=\"p\">,</span> <span class=\"mi\">2</span><span class=\"p\">))</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">ls2</span> <span class=\"o\">=</span> <span class=\"n\">LineString</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\">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><span class=\"n\">ls1</span> <span class=\"o\">|</span> <span class=\"n\">ls2</span><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><span class=\"n\">ls1</span> <span class=\"o\">&amp;</span> <span class=\"n\">ls2</span><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><span class=\"n\">ls1</span> <span class=\"o\">-</span> <span class=\"n\">ls2</span><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><span class=\"n\">ls1</span> <span class=\"o\">^</span> <span class=\"n\">ls2</span><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\">\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\"><span class=\"pre\">GEOSGeometry</span></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\"><span class=\"pre\">equals_exact()</span></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\"><span class=\"pre\">equals()</span></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=\"w\"> </span><span class=\"nn\">django.contrib.gis.geos</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">LineString</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">ls1</span> <span class=\"o\">=</span> <span class=\"n\">LineString</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\">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=\"n\">ls2</span> <span class=\"o\">=</span> <span class=\"n\">LineString</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><span class=\"n\">ls3</span> <span class=\"o\">=</span> <span class=\"n\">LineString</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> <span class=\"n\">srid</span><span class=\"o\">=</span><span class=\"mi\">4326</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">ls1</span><span class=\"o\">.</span><span class=\"n\">equals</span><span class=\"p\">(</span><span class=\"n\">ls2</span><span class=\"p\">)</span>\n<span class=\"go\">True</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">ls1</span> <span class=\"o\">==</span> <span class=\"n\">ls2</span>\n<span class=\"go\">False</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">ls3</span> <span class=\"o\">==</span> <span class=\"n\">ls2</span>  <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\"><span class=\"pre\">GEOSGeometry</span></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\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">GEOSGeometry</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">geo_input</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">srid</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"keyword-only-separator o\"><abbr title=\"Keyword-only parameters separator (PEP 3102)\"><span class=\"pre\">*</span></abbr></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">max_geom_collections</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">198</span></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\"><span class=\"pre\">memoryview</span></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<li><p><strong>max_geom_collections</strong> – maximum number of nested (WKT) or total (WKB)\ngeometry collections accepted before parsing is refused</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\"><span class=\"pre\">geo_input</span></code> argument, and then assumes the proper geometry subclass\n(e.g., <code class=\"docutils literal notranslate\"><span class=\"pre\">GEOSGeometry('POINT(1</span> <span class=\"pre\">1)')</span></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\"><span class=\"pre\">Point</span></code></a> object).</p>\n<p>The <code class=\"docutils literal notranslate\"><span class=\"pre\">srid</span></code> parameter, if given, is set as the SRID of the created geometry if\n<code class=\"docutils literal notranslate\"><span class=\"pre\">geo_input</span></code> doesn’t have an SRID. If different SRIDs are provided through the\n<code class=\"docutils literal notranslate\"><span class=\"pre\">geo_input</span></code> and <code class=\"docutils literal notranslate\"><span class=\"pre\">srid</span></code> parameters, <code class=\"docutils literal notranslate\"><span class=\"pre\">ValueError</span></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=\"w\"> </span><span class=\"nn\">django.contrib.gis.geos</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">GEOSGeometry</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">GEOSGeometry</span><span class=\"p\">(</span><span class=\"s2\">&quot;POINT EMPTY&quot;</span><span class=\"p\">,</span> <span class=\"n\">srid</span><span class=\"o\">=</span><span class=\"mi\">4326</span><span class=\"p\">)</span><span class=\"o\">.</span><span class=\"n\">ewkt</span>\n<span class=\"go\">&#39;SRID=4326;POINT EMPTY&#39;</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">GEOSGeometry</span><span class=\"p\">(</span><span class=\"s2\">&quot;SRID=4326;POINT EMPTY&quot;</span><span class=\"p\">,</span> <span class=\"n\">srid</span><span class=\"o\">=</span><span class=\"mi\">4326</span><span class=\"p\">)</span><span class=\"o\">.</span><span class=\"n\">ewkt</span>\n<span class=\"go\">&#39;SRID=4326;POINT EMPTY&#39;</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">GEOSGeometry</span><span class=\"p\">(</span><span class=\"s2\">&quot;SRID=1;POINT EMPTY&quot;</span><span class=\"p\">,</span> <span class=\"n\">srid</span><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>: <span class=\"n\">Input geometry already has SRID: 1.</span>\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\"><span class=\"pre\">str</span></code></p></td>\n</tr>\n<tr class=\"row-odd\"><td><p>HEX / HEXEWKB</p></td>\n<td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">str</span></code></p></td>\n</tr>\n<tr class=\"row-even\"><td><p>WKB / EWKB</p></td>\n<td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">memoryview</span></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\"><span class=\"pre\">str</span></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\"><span class=\"pre\">crs</span></code> member. If <code class=\"docutils literal notranslate\"><span class=\"pre\">crs</span></code>\nisn’t provided, the SRID defaults to 4326.</p>\n<aside class=\"version-note version-changed\" data-version=\"5.2.17\">\n<p class=\"version-note-title\">Changed in Django 5.2.17</p><p>The <code class=\"docutils literal notranslate\"><span class=\"pre\">max_geom_collections</span></code> parameter was added.</p>\n</aside>\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\"><span class=\"pre\">classmethod</span></span><span class=\"w\"> </span></em><span class=\"sig-prename descclassname\"><span class=\"pre\">GEOSGeometry.</span></span><span class=\"sig-name descname\"><span class=\"pre\">from_gml</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">gml_string</span></span></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\"><span class=\"pre\">GEOSGeometry</span></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\"><span class=\"pre\">GEOSGeometry.</span></span><span class=\"sig-name descname\"><span class=\"pre\">coords</span></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\"><span class=\"pre\">GEOSGeometry.</span></span><span class=\"sig-name descname\"><span class=\"pre\">dims</span></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\"><span class=\"pre\">0</span></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\"><span class=\"pre\">Point</span></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\"><span class=\"pre\">MultiPoint</span></code></a>s</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">1</span></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\"><span class=\"pre\">LineString</span></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\"><span class=\"pre\">MultiLineString</span></code></a>s</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">2</span></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\"><span class=\"pre\">Polygon</span></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\"><span class=\"pre\">MultiPolygon</span></code></a>s</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">-1</span></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\"><span class=\"pre\">GeometryCollection</span></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\"><span class=\"pre\">GeometryCollection</span></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\"><span class=\"pre\">GEOSGeometry.</span></span><span class=\"sig-name descname\"><span class=\"pre\">empty</span></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\"><span class=\"pre\">GEOSGeometry.</span></span><span class=\"sig-name descname\"><span class=\"pre\">geom_type</span></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><span class=\"n\">pnt</span> <span class=\"o\">=</span> <span class=\"n\">GEOSGeometry</span><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><span class=\"n\">pnt</span><span class=\"o\">.</span><span class=\"n\">geom_type</span>\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\"><span class=\"pre\">GEOSGeometry.</span></span><span class=\"sig-name descname\"><span class=\"pre\">geom_typeid</span></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\"><span class=\"pre\">Point</span></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\"><span class=\"pre\">LineString</span></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\"><span class=\"pre\">LinearRing</span></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\"><span class=\"pre\">Polygon</span></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\"><span class=\"pre\">MultiPoint</span></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\"><span class=\"pre\">MultiLineString</span></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\"><span class=\"pre\">MultiPolygon</span></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\"><span class=\"pre\">GeometryCollection</span></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\"><span class=\"pre\">GEOSGeometry.</span></span><span class=\"sig-name descname\"><span class=\"pre\">num_coords</span></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\"><span class=\"pre\">GEOSGeometry.</span></span><span class=\"sig-name descname\"><span class=\"pre\">num_geom</span></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\"><span class=\"pre\">GEOSGeometry.</span></span><span class=\"sig-name descname\"><span class=\"pre\">hasz</span></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 has the Z dimension.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.GEOSGeometry.hasm\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">GEOSGeometry.</span></span><span class=\"sig-name descname\"><span class=\"pre\">hasm</span></span><a class=\"heading-anchor\" href=\"#django.contrib.gis.geos.GEOSGeometry.hasm\"><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=\"6.0\">\n<p class=\"version-note-title\">New in Django 6.0</p></aside>\n<p>Returns a boolean indicating whether the geometry has the M dimension.\nRequires GEOS 3.12.</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\"><span class=\"pre\">GEOSGeometry.</span></span><span class=\"sig-name descname\"><span class=\"pre\">ring</span></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\"><span class=\"pre\">LinearRing</span></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\"><span class=\"pre\">GEOSGeometry.</span></span><span class=\"sig-name descname\"><span class=\"pre\">simple</span></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\"><span class=\"pre\">LineString</span></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\"><span class=\"pre\">LinearRing</span></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\"><span class=\"pre\">Polygon</span></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\"><span class=\"pre\">GEOSGeometry.</span></span><span class=\"sig-name descname\"><span class=\"pre\">valid</span></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\"><span class=\"pre\">GEOSGeometry.</span></span><span class=\"sig-name descname\"><span class=\"pre\">valid_reason</span></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\"><span class=\"pre\">GEOSGeometry.</span></span><span class=\"sig-name descname\"><span class=\"pre\">srid</span></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><span class=\"n\">pnt</span> <span class=\"o\">=</span> <span class=\"n\">Point</span><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><span class=\"n\">pnt</span><span class=\"o\">.</span><span class=\"n\">srid</span><span class=\"p\">)</span>\n<span class=\"go\">None</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">pnt</span><span class=\"o\">.</span><span class=\"n\">srid</span> <span class=\"o\">=</span> <span class=\"mi\">4326</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">pnt</span><span class=\"o\">.</span><span class=\"n\">srid</span>\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\"><span class=\"pre\">GEOSGeometry</span></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\"><span class=\"pre\">GEOSGeometry.</span></span><span class=\"sig-name descname\"><span class=\"pre\">ewkt</span></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\"><span class=\"pre\">SRID=4326;POINT(5</span> <span class=\"pre\">23)</span></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\"><span class=\"pre\">GEOSGeometry.</span></span><span class=\"sig-name descname\"><span class=\"pre\">hex</span></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\"><span class=\"pre\">GEOSGeometry.hexewkb</span></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\"><span class=\"pre\">GEOSGeometry.</span></span><span class=\"sig-name descname\"><span class=\"pre\">hexewkb</span></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\"><span class=\"pre\">GEOSGeometry.</span></span><span class=\"sig-name descname\"><span class=\"pre\">json</span></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\"><span class=\"pre\">geometry</span></code> key content of a\nGeoJSON structure. See also <a class=\"reference internal\" href=\"/en/6.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\"><span class=\"pre\">GEOSGeometry.</span></span><span class=\"sig-name descname\"><span class=\"pre\">geojson</span></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\"><span class=\"pre\">GEOSGeometry.json</span></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\"><span class=\"pre\">GEOSGeometry.</span></span><span class=\"sig-name descname\"><span class=\"pre\">kml</span></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\"><span class=\"pre\">GEOSGeometry.</span></span><span class=\"sig-name descname\"><span class=\"pre\">ogr</span></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/6.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\"><span class=\"pre\">OGRGeometry</span></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\"><span class=\"pre\">GEOSGeometry.</span></span><span class=\"sig-name descname\"><span class=\"pre\">wkb</span></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\"><span class=\"pre\">GEOSGeometry.ewkb</span></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\"><span class=\"pre\">GEOSGeometry.</span></span><span class=\"sig-name descname\"><span class=\"pre\">ewkb</span></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\"><span class=\"pre\">GEOSGeometry.</span></span><span class=\"sig-name descname\"><span class=\"pre\">wkt</span></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\"><span class=\"pre\">GEOSGeometry</span></code></a> instance (<code class=\"docutils literal notranslate\"><span class=\"pre\">other</span></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\"><span class=\"pre\">GEOSGeometry.</span></span><span class=\"sig-name descname\"><span class=\"pre\">contains</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">other</span></span></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\"><span class=\"pre\">True</span></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\"><span class=\"pre\">other.within(this)</span></code></a>\nreturns <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></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\"><span class=\"pre\">GEOSGeometry.</span></span><span class=\"sig-name descname\"><span class=\"pre\">covers</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">other</span></span></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\"><span class=\"pre\">True</span></code> if this geometry covers the specified geometry.</p>\n<p>The <code class=\"docutils literal notranslate\"><span class=\"pre\">covers</span></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\"><span class=\"pre\">T*****FF*</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">*T****FF*</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">***T**FF*</span></code>, or <code class=\"docutils literal notranslate\"><span class=\"pre\">****T*FF*</span></code>.</p></li>\n</ul>\n<p>If either geometry is empty, returns <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></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\"><span class=\"pre\">GEOSGeometry.contains()</span></code></a>, but is more\ninclusive (i.e. returns <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></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\"><span class=\"pre\">contains()</span></code></a> it does not distinguish between points in\nthe boundary and in the interior of geometries. For most situations,\n<code class=\"docutils literal notranslate\"><span class=\"pre\">covers()</span></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\"><span class=\"pre\">contains()</span></code></a>. As an\nadded benefit, <code class=\"docutils literal notranslate\"><span class=\"pre\">covers()</span></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\"><span class=\"pre\">contains()</span></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\"><span class=\"pre\">GEOSGeometry.</span></span><span class=\"sig-name descname\"><span class=\"pre\">crosses</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">other</span></span></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\"><span class=\"pre\">True</span></code> if the DE-9IM intersection matrix for the two Geometries\nis <code class=\"docutils literal notranslate\"><span class=\"pre\">T*T******</span></code> (for a point and a curve,a point and an area or a line\nand an area) <code class=\"docutils literal notranslate\"><span class=\"pre\">0********</span></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\"><span class=\"pre\">GEOSGeometry.</span></span><span class=\"sig-name descname\"><span class=\"pre\">disjoint</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">other</span></span></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\"><span class=\"pre\">True</span></code> if the DE-9IM intersection matrix for the two geometries\nis <code class=\"docutils literal notranslate\"><span class=\"pre\">FF*FF****</span></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\"><span class=\"pre\">GEOSGeometry.</span></span><span class=\"sig-name descname\"><span class=\"pre\">equals</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">other</span></span></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\"><span class=\"pre\">True</span></code> if the DE-9IM intersection matrix for the two geometries\nis <code class=\"docutils literal notranslate\"><span class=\"pre\">T*F**FFF*</span></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\"><span class=\"pre\">GEOSGeometry.</span></span><span class=\"sig-name descname\"><span class=\"pre\">equals_exact</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">other</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">tolerance</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">0</span></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\"><span class=\"pre\">tolerance</span></code> value should be a floating\npoint number representing the error tolerance in the comparison, e.g.,\n<code class=\"docutils literal notranslate\"><span class=\"pre\">poly1.equals_exact(poly2,</span> <span class=\"pre\">0.001)</span></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\"><span class=\"pre\">GEOSGeometry.</span></span><span class=\"sig-name descname\"><span class=\"pre\">equals_identical</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">other</span></span></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><p>Returns <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></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\"><span class=\"pre\">NaN</span></code> values are considered to be equal to\nother <code class=\"docutils literal notranslate\"><span class=\"pre\">NaN</span></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\"><span class=\"pre\">GEOSGeometry.</span></span><span class=\"sig-name descname\"><span class=\"pre\">intersects</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">other</span></span></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\"><span class=\"pre\">True</span></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\"><span class=\"pre\">GEOSGeometry.disjoint()</span></code></a> is <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></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\"><span class=\"pre\">GEOSGeometry.</span></span><span class=\"sig-name descname\"><span class=\"pre\">overlaps</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">other</span></span></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\"><span class=\"pre\">T*T***T**</span></code> (for two points or two surfaces) <code class=\"docutils literal notranslate\"><span class=\"pre\">1*T***T**</span></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\"><span class=\"pre\">GEOSGeometry.</span></span><span class=\"sig-name descname\"><span class=\"pre\">relate_pattern</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">other</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">pattern</span></span></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\"><span class=\"pre\">True</span></code> if the elements in the DE-9IM intersection matrix for this\ngeometry and the other matches the given <code class=\"docutils literal notranslate\"><span class=\"pre\">pattern</span></code> – a string of nine\ncharacters from the alphabet: {<code class=\"docutils literal notranslate\"><span class=\"pre\">T</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">F</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">*</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">0</span></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\"><span class=\"pre\">GEOSGeometry.</span></span><span class=\"sig-name descname\"><span class=\"pre\">touches</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">other</span></span></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\"><span class=\"pre\">True</span></code> if the DE-9IM intersection matrix for the two geometries\nis <code class=\"docutils literal notranslate\"><span class=\"pre\">FT*******</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">F**T*****</span></code> or <code class=\"docutils literal notranslate\"><span class=\"pre\">F***T****</span></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\"><span class=\"pre\">GEOSGeometry.</span></span><span class=\"sig-name descname\"><span class=\"pre\">within</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">other</span></span></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\"><span class=\"pre\">True</span></code> if the DE-9IM intersection matrix for the two geometries\nis <code class=\"docutils literal notranslate\"><span class=\"pre\">T*F**F***</span></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\"><span class=\"pre\">GEOSGeometry.</span></span><span class=\"sig-name descname\"><span class=\"pre\">buffer</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">width</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">quadsegs</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">8</span></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\"><span class=\"pre\">GEOSGeometry</span></code></a> that represents all points whose distance\nfrom this geometry is less than or equal to the given <code class=\"docutils literal notranslate\"><span class=\"pre\">width</span></code>. The\noptional <code class=\"docutils literal notranslate\"><span class=\"pre\">quadsegs</span></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\"><span class=\"pre\">GEOSGeometry.</span></span><span class=\"sig-name descname\"><span class=\"pre\">buffer_with_style</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">width</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">quadsegs</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">8</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">end_cap_style</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">1</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">join_style</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">1</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">mitre_limit</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">5.0</span></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\"><span class=\"pre\">buffer()</span></code></a>, but allows customizing the style of the buffer.</p>\n<ul class=\"simple\">\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">end_cap_style</span></code> can be round (<code class=\"docutils literal notranslate\"><span class=\"pre\">1</span></code>), flat (<code class=\"docutils literal notranslate\"><span class=\"pre\">2</span></code>), or square (<code class=\"docutils literal notranslate\"><span class=\"pre\">3</span></code>).</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">join_style</span></code> can be round (<code class=\"docutils literal notranslate\"><span class=\"pre\">1</span></code>), mitre (<code class=\"docutils literal notranslate\"><span class=\"pre\">2</span></code>), or bevel (<code class=\"docutils literal notranslate\"><span class=\"pre\">3</span></code>).</p></li>\n<li><p>Mitre ratio limit (<code class=\"docutils literal notranslate\"><span class=\"pre\">mitre_limit</span></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\"><span class=\"pre\">GEOSGeometry.</span></span><span class=\"sig-name descname\"><span class=\"pre\">difference</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">other</span></span></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\"><span class=\"pre\">GEOSGeometry</span></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\"><span class=\"pre\">GEOSGeometry.</span></span><span class=\"sig-name descname\"><span class=\"pre\">interpolate</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">distance</span></span></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\"><span class=\"pre\">GEOSGeometry.</span></span><span class=\"sig-name descname\"><span class=\"pre\">interpolate_normalized</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">distance</span></span></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\"><span class=\"pre\">LineString</span></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\"><span class=\"pre\">MultiLineString</span></code></a>) at that\ndistance. The normalized version takes 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.project\" title=\"django.contrib.gis.geos.GEOSGeometry.project\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">GEOSGeometry.project()</span></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\"><span class=\"pre\">GEOSGeometry.</span></span><span class=\"sig-name descname\"><span class=\"pre\">intersection</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">other</span></span></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\"><span class=\"pre\">GEOSGeometry</span></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\"><span class=\"pre\">GEOSGeometry.</span></span><span class=\"sig-name descname\"><span class=\"pre\">project</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">point</span></span></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\"><span class=\"pre\">GEOSGeometry.</span></span><span class=\"sig-name descname\"><span class=\"pre\">project_normalized</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">point</span></span></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\"><span class=\"pre\">LineString</span></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\"><span class=\"pre\">MultiLineString</span></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\"><span class=\"pre\">GEOSGeometry.interpolate()</span></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\"><span class=\"pre\">GEOSGeometry.</span></span><span class=\"sig-name descname\"><span class=\"pre\">relate</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">other</span></span></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\"><span class=\"pre\">GEOSGeometry.</span></span><span class=\"sig-name descname\"><span class=\"pre\">simplify</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">tolerance</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">0.0</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">preserve_topology</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">False</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.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\"><span class=\"pre\">GEOSGeometry</span></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\"><span class=\"pre\">Polygon</span></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\"><span class=\"pre\">Polygon</span></code></a> holes can be created or disappear, and lines\nmay cross. By specifying <code class=\"docutils literal notranslate\"><span class=\"pre\">preserve_topology=True</span></code>, the result will have\nthe same dimension and number of components as the input; this is\nsignificantly slower, 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\"><span class=\"pre\">GEOSGeometry.</span></span><span class=\"sig-name descname\"><span class=\"pre\">sym_difference</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">other</span></span></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\"><span class=\"pre\">GEOSGeometry</span></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\"><span class=\"pre\">GEOSGeometry.</span></span><span class=\"sig-name descname\"><span class=\"pre\">union</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">other</span></span></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\"><span class=\"pre\">GEOSGeometry</span></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\"><span class=\"pre\">GEOSGeometry.</span></span><span class=\"sig-name descname\"><span class=\"pre\">boundary</span></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\"><span class=\"pre\">GEOSGeometry.</span></span><span class=\"sig-name descname\"><span class=\"pre\">centroid</span></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\"><span class=\"pre\">Point</span></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\"><span class=\"pre\">GEOSGeometry.</span></span><span class=\"sig-name descname\"><span class=\"pre\">convex_hull</span></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\"><span class=\"pre\">Polygon</span></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\"><span class=\"pre\">GEOSGeometry.</span></span><span class=\"sig-name descname\"><span class=\"pre\">envelope</span></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\"><span class=\"pre\">Polygon</span></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\"><span class=\"pre\">Point</span></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\"><span class=\"pre\">GEOSGeometry.</span></span><span class=\"sig-name descname\"><span class=\"pre\">point_on_surface</span></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\"><span class=\"pre\">Point</span></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\"><span class=\"pre\">GEOSGeometry.</span></span><span class=\"sig-name descname\"><span class=\"pre\">unary_union</span></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\"><span class=\"pre\">LineString</span></code></a>s has the effect of fully noding\nand dissolving 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\"><span class=\"pre\">Polygon</span></code></a>s will always return a\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\"><span class=\"pre\">Polygon</span></code></a> or <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\"><span class=\"pre\">MultiPolygon</span></code></a> geometry (unlike\n<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\"><span class=\"pre\">GEOSGeometry.union()</span></code></a>, which may return geometries of lower\ndimension if a topology collapse occurs).</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\"><span class=\"pre\">GEOSGeometry.</span></span><span class=\"sig-name descname\"><span class=\"pre\">area</span></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\"><span class=\"pre\">GEOSGeometry.</span></span><span class=\"sig-name descname\"><span class=\"pre\">extent</span></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\"><span class=\"pre\">(xmin,</span> <span class=\"pre\">ymin,</span> <span class=\"pre\">xmax,</span> <span class=\"pre\">ymax)</span></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\"><span class=\"pre\">GEOSGeometry.</span></span><span class=\"sig-name descname\"><span class=\"pre\">clone</span></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\"><span class=\"pre\">GEOSGeometry</span></code></a> that is a clone of the\noriginal.</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\"><span class=\"pre\">GEOSGeometry.</span></span><span class=\"sig-name descname\"><span class=\"pre\">distance</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">geom</span></span></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\"><span class=\"pre\">geom</span></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\"><span class=\"pre\">GEOSGeometry</span></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\"><span class=\"pre\">GEOSGeometry.</span></span><span class=\"sig-name descname\"><span class=\"pre\">length</span></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\"><span class=\"pre\">Point</span></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\"><span class=\"pre\">LineString</span></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\"><span class=\"pre\">Polygon</span></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\"><span class=\"pre\">GEOSGeometry.</span></span><span class=\"sig-name descname\"><span class=\"pre\">prepared</span></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\"><span class=\"pre\">PreparedGeometry</span></code> for the contents of this geometry.\n<code class=\"docutils literal notranslate\"><span class=\"pre\">PreparedGeometry</span></code> objects are optimized for the contains, intersects,\ncovers, crosses, disjoint, overlaps, touches and within operations. Refer\nto the <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\"><span class=\"pre\">GEOSGeometry.</span></span><span class=\"sig-name descname\"><span class=\"pre\">srs</span></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/6.0/ref/contrib/gis/gdal/#django.contrib.gis.gdal.SpatialReference\" title=\"django.contrib.gis.gdal.SpatialReference\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">SpatialReference</span></code></a> object\ncorresponding to the SRID of the geometry or <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></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\"><span class=\"pre\">GEOSGeometry.</span></span><span class=\"sig-name descname\"><span class=\"pre\">transform</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">ct</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">clone</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">False</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.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\"><span class=\"pre\">ct</span></code>), which may be an integer SRID, spatial reference WKT\nstring, a PROJ string, a <a class=\"reference internal\" href=\"/en/6.0/ref/contrib/gis/gdal/#django.contrib.gis.gdal.SpatialReference\" title=\"django.contrib.gis.gdal.SpatialReference\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">SpatialReference</span></code></a>\nobject, or a <a class=\"reference internal\" href=\"/en/6.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\"><span class=\"pre\">CoordTransform</span></code></a> object. By\ndefault, the geometry is transformed in-place and nothing is returned.\nHowever if the <code class=\"docutils literal notranslate\"><span class=\"pre\">clone</span></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\"><span class=\"pre\">GEOSException</span></code></a> if GDAL is not\navailable or if the geometry’s SRID is <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></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/6.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\"><span class=\"pre\">CoordTransform</span></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\"><span class=\"pre\">GEOSGeometry.</span></span><span class=\"sig-name descname\"><span class=\"pre\">make_valid</span></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\"><span class=\"pre\">GEOSGeometry</span></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/6.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\"><span class=\"pre\">MakeValid</span></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\"><span class=\"pre\">GEOSGeometry.</span></span><span class=\"sig-name descname\"><span class=\"pre\">normalize</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">clone</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">False</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.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\"><span class=\"pre\">clone</span></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><span class=\"n\">g</span> <span class=\"o\">=</span> <span class=\"n\">MultiPoint</span><span class=\"p\">(</span><span class=\"n\">Point</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=\"n\">Point</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=\"n\">Point</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><span class=\"nb\">print</span><span class=\"p\">(</span><span class=\"n\">g</span><span class=\"p\">)</span>\n<span class=\"go\">MULTIPOINT (0 0, 2 2, 1 1)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">g</span><span class=\"o\">.</span><span class=\"n\">normalize</span><span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span><span class=\"n\">g</span><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\"><span class=\"pre\">Point</span></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\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">Point</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">x</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">y</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">z</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">srid</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></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\"><span class=\"pre\">Point</span></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><span class=\"n\">pnt</span> <span class=\"o\">=</span> <span class=\"n\">Point</span><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=\"n\">pnt</span> <span class=\"o\">=</span> <span class=\"n\">Point</span><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\"><span class=\"pre\">Point</span></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><span class=\"n\">pnt</span> <span class=\"o\">=</span> <span class=\"n\">Point</span><span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">pnt</span> <span class=\"o\">=</span> <span class=\"n\">Point</span><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\"><span class=\"pre\">LineString</span></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\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">LineString</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">*</span></span><span class=\"n\"><span class=\"pre\">args</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">**</span></span><span class=\"n\"><span class=\"pre\">kwargs</span></span></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\"><span class=\"pre\">LineString</span></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\"><span class=\"pre\">Point</span></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><span class=\"n\">ls</span> <span class=\"o\">=</span> <span class=\"n\">LineString</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\">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=\"n\">ls</span> <span class=\"o\">=</span> <span class=\"n\">LineString</span><span class=\"p\">(</span><span class=\"n\">Point</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=\"n\">Point</span><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\"><span class=\"pre\">LineString</span></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\"><span class=\"pre\">Point</span></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><span class=\"n\">ls</span> <span class=\"o\">=</span> <span class=\"n\">LineString</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\">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=\"n\">ls</span> <span class=\"o\">=</span> <span class=\"n\">LineString</span><span class=\"p\">([</span><span class=\"n\">Point</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=\"n\">Point</span><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\"><span class=\"pre\">LineString</span></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><span class=\"n\">ls</span> <span class=\"o\">=</span> <span class=\"n\">LineString</span><span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">ls</span> <span class=\"o\">=</span> <span class=\"n\">LineString</span><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\"><span class=\"pre\">closed</span></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\"><span class=\"pre\">LineString</span></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\"><span class=\"pre\">LinearRing</span></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\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">LinearRing</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">*</span></span><span class=\"n\"><span class=\"pre\">args</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">**</span></span><span class=\"n\"><span class=\"pre\">kwargs</span></span></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\"><span class=\"pre\">LinearRing</span></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\"><span class=\"pre\">LineString</span></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><span class=\"n\">ls</span> <span class=\"o\">=</span> <span class=\"n\">LinearRing</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\">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\"><span class=\"pre\">(0,</span> <span class=\"pre\">0)</span></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\"><span class=\"pre\">is_counterclockwise</span></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\"><span class=\"pre\">LinearRing</span></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\"><span class=\"pre\">Polygon</span></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\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">Polygon</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">*</span></span><span class=\"n\"><span class=\"pre\">args</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">**</span></span><span class=\"n\"><span class=\"pre\">kwargs</span></span></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\"><span class=\"pre\">Polygon</span></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\"><span class=\"pre\">LinearRing</span></code></a> instances, or a sequence that may be used to construct\na <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\"><span class=\"pre\">LinearRing</span></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><span class=\"n\">ext_coords</span> <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><span class=\"n\">int_coords</span> <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><span class=\"n\">poly</span> <span class=\"o\">=</span> <span class=\"n\">Polygon</span><span class=\"p\">(</span><span class=\"n\">ext_coords</span><span class=\"p\">,</span> <span class=\"n\">int_coords</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">poly</span> <span class=\"o\">=</span> <span class=\"n\">Polygon</span><span class=\"p\">(</span><span class=\"n\">LinearRing</span><span class=\"p\">(</span><span class=\"n\">ext_coords</span><span class=\"p\">),</span> <span class=\"n\">LinearRing</span><span class=\"p\">(</span><span class=\"n\">int_coords</span><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\"><span class=\"pre\">classmethod</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">from_bbox</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">bbox</span></span></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\"><span class=\"pre\">(xmin,</span> <span class=\"pre\">ymin,</span> <span class=\"pre\">xmax,</span> <span class=\"pre\">ymax)</span></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\"><span class=\"pre\">num_interior_rings</span></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\">\n<p class=\"admonition-title\">Comparing Polygons</p>\n<p>Note that it is possible to compare <code class=\"docutils literal notranslate\"><span class=\"pre\">Polygon</span></code> objects directly with <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;</span></code>\nor <code class=\"docutils literal notranslate\"><span class=\"pre\">&gt;</span></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\"><span class=\"pre\">LineString</span></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\"><span class=\"pre\">area</span></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> <span class=\"n\">poly_1</span><span class=\"o\">.</span><span class=\"n\">area</span> <span class=\"o\">&gt;</span> <span class=\"n\">poly_2</span><span class=\"o\">.</span><span class=\"n\">area</span><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\"><span class=\"pre\">MultiPoint</span></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\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">MultiPoint</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">*</span></span><span class=\"n\"><span class=\"pre\">args</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">**</span></span><span class=\"n\"><span class=\"pre\">kwargs</span></span></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\"><span class=\"pre\">MultiPoint</span></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\"><span class=\"pre\">Point</span></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\"><span class=\"pre\">Point</span></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><span class=\"n\">mp</span> <span class=\"o\">=</span> <span class=\"n\">MultiPoint</span><span class=\"p\">(</span><span class=\"n\">Point</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=\"n\">Point</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><span class=\"n\">mp</span> <span class=\"o\">=</span> <span class=\"n\">MultiPoint</span><span class=\"p\">((</span><span class=\"n\">Point</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=\"n\">Point</span><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\"><span class=\"pre\">MultiLineString</span></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\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">MultiLineString</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">*</span></span><span class=\"n\"><span class=\"pre\">args</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">**</span></span><span class=\"n\"><span class=\"pre\">kwargs</span></span></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\"><span class=\"pre\">MultiLineString</span></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\"><span class=\"pre\">LineString</span></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\"><span class=\"pre\">LineString</span></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><span class=\"n\">ls1</span> <span class=\"o\">=</span> <span class=\"n\">LineString</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\">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=\"n\">ls2</span> <span class=\"o\">=</span> <span class=\"n\">LineString</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\">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=\"n\">mls</span> <span class=\"o\">=</span> <span class=\"n\">MultiLineString</span><span class=\"p\">(</span><span class=\"n\">ls1</span><span class=\"p\">,</span> <span class=\"n\">ls2</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">mls</span> <span class=\"o\">=</span> <span class=\"n\">MultiLineString</span><span class=\"p\">([</span><span class=\"n\">ls1</span><span class=\"p\">,</span> <span class=\"n\">ls2</span><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\"><span class=\"pre\">merged</span></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\"><span class=\"pre\">LineString</span></code></a> representing the line merge of\nall the components in this <code class=\"docutils literal notranslate\"><span class=\"pre\">MultiLineString</span></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\"><span class=\"pre\">closed</span></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\"><span class=\"pre\">True</span></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\"><span class=\"pre\">MultiPolygon</span></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\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">MultiPolygon</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">*</span></span><span class=\"n\"><span class=\"pre\">args</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">**</span></span><span class=\"n\"><span class=\"pre\">kwargs</span></span></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\"><span class=\"pre\">MultiPolygon</span></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\"><span class=\"pre\">Polygon</span></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\"><span class=\"pre\">Polygon</span></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><span class=\"n\">p1</span> <span class=\"o\">=</span> <span class=\"n\">Polygon</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\">0</span><span class=\"p\">,</span> <span class=\"mi\">0</span><span class=\"p\">)))</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">p2</span> <span class=\"o\">=</span> <span class=\"n\">Polygon</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\">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><span class=\"n\">mp</span> <span class=\"o\">=</span> <span class=\"n\">MultiPolygon</span><span class=\"p\">(</span><span class=\"n\">p1</span><span class=\"p\">,</span> <span class=\"n\">p2</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">mp</span> <span class=\"o\">=</span> <span class=\"n\">MultiPolygon</span><span class=\"p\">([</span><span class=\"n\">p1</span><span class=\"p\">,</span> <span class=\"n\">p2</span><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\"><span class=\"pre\">GeometryCollection</span></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\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">GeometryCollection</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">*</span></span><span class=\"n\"><span class=\"pre\">args</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">**</span></span><span class=\"n\"><span class=\"pre\">kwargs</span></span></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\"><span class=\"pre\">GeometryCollection</span></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\"><span class=\"pre\">GEOSGeometry</span></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\"><span class=\"pre\">GEOSGeometry</span></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><span class=\"n\">poly</span> <span class=\"o\">=</span> <span class=\"n\">Polygon</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\">0</span><span class=\"p\">,</span> <span class=\"mi\">0</span><span class=\"p\">)))</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">gc</span> <span class=\"o\">=</span> <span class=\"n\">GeometryCollection</span><span class=\"p\">(</span><span class=\"n\">Point</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=\"n\">MultiPoint</span><span class=\"p\">(</span><span class=\"n\">Point</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=\"n\">Point</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=\"n\">poly</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">gc</span> <span class=\"o\">=</span> <span class=\"n\">GeometryCollection</span><span class=\"p\">((</span><span class=\"n\">Point</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=\"n\">MultiPoint</span><span class=\"p\">(</span><span class=\"n\">Point</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=\"n\">Point</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=\"n\">poly</span><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\"><span class=\"pre\">GEOSGeometry.prepared</span></code></a> property. Once you have a <code class=\"docutils literal notranslate\"><span class=\"pre\">PreparedGeometry</span></code>\ninstance its spatial predicate methods, listed below, may be used with other\n<code class=\"docutils literal notranslate\"><span class=\"pre\">GEOSGeometry</span></code> objects. An operation with a prepared geometry can be orders\nof magnitude faster – the more complex the geometry that is prepared, the\nlarger the speedup in the operation. For more information, please consult the\n<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=\"w\"> </span><span class=\"nn\">django.contrib.gis.geos</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">Point</span><span class=\"p\">,</span> <span class=\"n\">Polygon</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">poly</span> <span class=\"o\">=</span> <span class=\"n\">Polygon</span><span class=\"o\">.</span><span class=\"n\">from_bbox</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=\"mi\">5</span><span class=\"p\">,</span> <span class=\"mi\">5</span><span class=\"p\">))</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">prep_poly</span> <span class=\"o\">=</span> <span class=\"n\">poly</span><span class=\"o\">.</span><span class=\"n\">prepared</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">prep_poly</span><span class=\"o\">.</span><span class=\"n\">contains</span><span class=\"p\">(</span><span class=\"n\">Point</span><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\"><span class=\"pre\">PreparedGeometry</span></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\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">PreparedGeometry</span></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\"><span class=\"pre\">PreparedGeometry</span></code> take an <code class=\"docutils literal notranslate\"><span class=\"pre\">other</span></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\"><span class=\"pre\">GEOSGeometry</span></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\"><span class=\"pre\">contains</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">other</span></span></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\"><span class=\"pre\">contains_properly</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">other</span></span></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\"><span class=\"pre\">covers</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">other</span></span></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\"><span class=\"pre\">crosses</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">other</span></span></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\"><span class=\"pre\">disjoint</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">other</span></span></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\"><span class=\"pre\">intersects</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">other</span></span></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\"><span class=\"pre\">overlaps</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">other</span></span></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\"><span class=\"pre\">touches</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">other</span></span></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\"><span class=\"pre\">within</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">other</span></span></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\"><span class=\"pre\">fromfile</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">file_h</span></span></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\"><span class=\"pre\">file</span></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\"><span class=\"pre\">GEOSGeometry</span></code></a> corresponding to the spatial data in the\nfile</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=\"w\"> </span><span class=\"nn\">django.contrib.gis.geos</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">fromfile</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">g</span> <span class=\"o\">=</span> <span class=\"n\">fromfile</span><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\"><span class=\"pre\">fromstr</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">string</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">srid</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></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\"><span class=\"pre\">GEOSGeometry</span></code></a> corresponding to the spatial data in the\nstring</p>\n</dd>\n</dl>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">fromstr(string,</span> <span class=\"pre\">srid)</span></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\"><span class=\"pre\">GEOSGeometry(string,</span> <span class=\"pre\">srid)</span></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=\"w\"> </span><span class=\"nn\">django.contrib.gis.geos</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">fromstr</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">pnt</span> <span class=\"o\">=</span> <span class=\"n\">fromstr</span><span class=\"p\">(</span><span class=\"s2\">&quot;POINT(-90.5 29.5)&quot;</span><span class=\"p\">,</span> <span class=\"n\">srid</span><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\"><span class=\"pre\">GEOSGeometry</span></code></a> instance from the WKB\nand/or WKT input given to their <code class=\"docutils literal notranslate\"><span class=\"pre\">read(geom)</span></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\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">WKBReader</span></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=\"w\"> </span><span class=\"nn\">django.contrib.gis.geos</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">WKBReader</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">wkb_r</span> <span class=\"o\">=</span> <span class=\"n\">WKBReader</span><span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">wkb_r</span><span class=\"o\">.</span><span class=\"n\">read</span><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\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">WKTReader</span></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=\"w\"> </span><span class=\"nn\">django.contrib.gis.geos</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">WKTReader</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">wkt_r</span> <span class=\"o\">=</span> <span class=\"n\">WKTReader</span><span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">wkt_r</span><span class=\"o\">.</span><span class=\"n\">read</span><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\"><span class=\"pre\">write(geom)</span></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\"><span class=\"pre\">WKBWriter</span></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\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">WKBWriter</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">dim</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">2</span></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\"><span class=\"pre\">WKBWriter</span></code> provides the most control over its output. By default it\nreturns OGC-compliant WKB when its <code class=\"docutils literal notranslate\"><span class=\"pre\">write</span></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\"><span class=\"pre\">WKBWriter.outdim</span></code></a> documentation for more details about the <code class=\"docutils literal notranslate\"><span class=\"pre\">dim</span></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\"><span class=\"pre\">write</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">geom</span></span></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\"><span class=\"pre\">buffer</span></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=\"w\"> </span><span class=\"nn\">django.contrib.gis.geos</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">Point</span><span class=\"p\">,</span> <span class=\"n\">WKBWriter</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">pnt</span> <span class=\"o\">=</span> <span class=\"n\">Point</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><span class=\"n\">wkb_w</span> <span class=\"o\">=</span> <span class=\"n\">WKBWriter</span><span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">wkb_w</span><span class=\"o\">.</span><span class=\"n\">write</span><span class=\"p\">(</span><span class=\"n\">pnt</span><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\"><span class=\"pre\">write_hex</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">geom</span></span></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=\"w\"> </span><span class=\"nn\">django.contrib.gis.geos</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">Point</span><span class=\"p\">,</span> <span class=\"n\">WKBWriter</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">pnt</span> <span class=\"o\">=</span> <span class=\"n\">Point</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><span class=\"n\">wkb_w</span> <span class=\"o\">=</span> <span class=\"n\">WKBWriter</span><span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">wkb_w</span><span class=\"o\">.</span><span class=\"n\">write_hex</span><span class=\"p\">(</span><span class=\"n\">pnt</span><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\"><span class=\"pre\">byteorder</span></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=\"w\"> </span><span class=\"nn\">django.contrib.gis.geos</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">Point</span><span class=\"p\">,</span> <span class=\"n\">WKBWriter</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">wkb_w</span> <span class=\"o\">=</span> <span class=\"n\">WKBWriter</span><span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">pnt</span> <span class=\"o\">=</span> <span class=\"n\">Point</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><span class=\"n\">wkb_w</span><span class=\"o\">.</span><span class=\"n\">write_hex</span><span class=\"p\">(</span><span class=\"n\">pnt</span><span class=\"p\">)</span>\n<span class=\"go\">&#39;0101000000000000000000F03F000000000000F03F&#39;</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">wkb_w</span><span class=\"o\">.</span><span class=\"n\">byteorder</span> <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\"><span class=\"pre\">outdim</span></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=\"w\"> </span><span class=\"nn\">django.contrib.gis.geos</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">Point</span><span class=\"p\">,</span> <span class=\"n\">WKBWriter</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">wkb_w</span> <span class=\"o\">=</span> <span class=\"n\">WKBWriter</span><span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">wkb_w</span><span class=\"o\">.</span><span class=\"n\">outdim</span>\n<span class=\"go\">2</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">pnt</span> <span class=\"o\">=</span> <span class=\"n\">Point</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=\"mi\">1</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">wkb_w</span><span class=\"o\">.</span><span class=\"n\">write_hex</span><span class=\"p\">(</span><span class=\"n\">pnt</span><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><span class=\"n\">wkb_w</span><span class=\"o\">.</span><span class=\"n\">outdim</span> <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><span class=\"n\">wkb_w</span><span class=\"o\">.</span><span class=\"n\">write_hex</span><span class=\"p\">(</span><span class=\"n\">pnt</span><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\"><span class=\"pre\">srid</span></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=\"w\"> </span><span class=\"nn\">django.contrib.gis.geos</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">Point</span><span class=\"p\">,</span> <span class=\"n\">WKBWriter</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">wkb_w</span> <span class=\"o\">=</span> <span class=\"n\">WKBWriter</span><span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">pnt</span> <span class=\"o\">=</span> <span class=\"n\">Point</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=\"n\">srid</span><span class=\"o\">=</span><span class=\"mi\">4326</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">wkb_w</span><span class=\"o\">.</span><span class=\"n\">write_hex</span><span class=\"p\">(</span><span class=\"n\">pnt</span><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><span class=\"n\">wkb_w</span><span class=\"o\">.</span><span class=\"n\">srid</span> <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><span class=\"n\">wkb_w</span><span class=\"o\">.</span><span class=\"n\">write_hex</span><span class=\"p\">(</span><span class=\"n\">pnt</span><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\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">WKTWriter</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">dim</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">2</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">trim</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">False</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">precision</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></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\"><span class=\"pre\">WKBWriter.outdim</span></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\"><span class=\"pre\">trim</span></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\"><span class=\"pre\">precision</span></code></a> attributes\nfor details 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\"><span class=\"pre\">write</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">geom</span></span></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=\"w\"> </span><span class=\"nn\">django.contrib.gis.geos</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">Point</span><span class=\"p\">,</span> <span class=\"n\">WKTWriter</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">pnt</span> <span class=\"o\">=</span> <span class=\"n\">Point</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><span class=\"n\">wkt_w</span> <span class=\"o\">=</span> <span class=\"n\">WKTWriter</span><span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">wkt_w</span><span class=\"o\">.</span><span class=\"n\">write</span><span class=\"p\">(</span><span class=\"n\">pnt</span><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\"><span class=\"pre\">outdim</span></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\"><span class=\"pre\">WKBWriter.outdim</span></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\"><span class=\"pre\">trim</span></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=\"w\"> </span><span class=\"nn\">django.contrib.gis.geos</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">Point</span><span class=\"p\">,</span> <span class=\"n\">WKTWriter</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">pnt</span> <span class=\"o\">=</span> <span class=\"n\">Point</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><span class=\"n\">wkt_w</span> <span class=\"o\">=</span> <span class=\"n\">WKTWriter</span><span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">wkt_w</span><span class=\"o\">.</span><span class=\"n\">trim</span>\n<span class=\"go\">False</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">wkt_w</span><span class=\"o\">.</span><span class=\"n\">write</span><span class=\"p\">(</span><span class=\"n\">pnt</span><span class=\"p\">)</span>\n<span class=\"go\">&#39;POINT (1.0000000000000000 1.0000000000000000)&#39;</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">wkt_w</span><span class=\"o\">.</span><span class=\"n\">trim</span> <span class=\"o\">=</span> <span class=\"kc\">True</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">wkt_w</span><span class=\"o\">.</span><span class=\"n\">write</span><span class=\"p\">(</span><span class=\"n\">pnt</span><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\"><span class=\"pre\">precision</span></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\"><span class=\"pre\">None</span></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=\"w\"> </span><span class=\"nn\">django.contrib.gis.geos</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">Point</span><span class=\"p\">,</span> <span class=\"n\">WKTWriter</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">pnt</span> <span class=\"o\">=</span> <span class=\"n\">Point</span><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><span class=\"n\">wkt_w</span> <span class=\"o\">=</span> <span class=\"n\">WKTWriter</span><span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span><span class=\"n\">wkt_w</span><span class=\"o\">.</span><span class=\"n\">precision</span><span class=\"p\">)</span>\n<span class=\"go\">None</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">wkt_w</span><span class=\"o\">.</span><span class=\"n\">write</span><span class=\"p\">(</span><span class=\"n\">pnt</span><span class=\"p\">)</span>\n<span class=\"go\">&#39;POINT (1.4399999999999999 1.6599999999999999)&#39;</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">wkt_w</span><span class=\"o\">.</span><span class=\"n\">precision</span> <span class=\"o\">=</span> <span class=\"mi\">0</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">wkt_w</span><span class=\"o\">.</span><span class=\"n\">write</span><span class=\"p\">(</span><span class=\"n\">pnt</span><span class=\"p\">)</span>\n<span class=\"go\">&#39;POINT (1 2)&#39;</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">wkt_w</span><span class=\"o\">.</span><span class=\"n\">precision</span> <span class=\"o\">=</span> <span class=\"mi\">1</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">wkt_w</span><span class=\"o\">.</span><span class=\"n\">write</span><span class=\"p\">(</span><span class=\"n\">pnt</span><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\"><span class=\"pre\">GEOS_LIBRARY_PATH</span></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\"><span class=\"pre\">/home/bob/lib/libgeos_c.so</span></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\"><span class=\"pre\">libgeos_c.so</span></code>, not <code class=\"docutils literal notranslate\"><span class=\"pre\">libgeos.so</span></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\"><span class=\"pre\">exception</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">GEOSException</span></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/6.0/ref/"},{"docname":"ref/contrib/index","title":"contrib packages","url":"/en/6.0/ref/contrib/"},{"docname":"ref/contrib/gis/index","title":"GeoDjango","url":"/en/6.0/ref/contrib/gis/"}],"prev":{"docname":"ref/contrib/gis/measure","title":"Measurement Objects","url":"/en/6.0/ref/contrib/gis/measure/"},"next":{"docname":"ref/contrib/gis/gdal","title":"GDAL API","url":"/en/6.0/ref/contrib/gis/gdal/"},"formats":{"html":"/en/6.0/ref/contrib/gis/geos/","markdown":"/en/6.0/ref/contrib/gis/geos.md","json":"/en/6.0/ref/contrib/gis/geos.json"},"source":"https://github.com/django/django/blob/stable/6.0.x/docs/ref/contrib/gis/geos.txt","official":"https://docs.djangoproject.com/en/6.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","sv","zh-hans","ga","fr","ja","id","it","pt-br","ko","es","el","pl"]}