{"title":"GEOS API","version":"4.1","locale":"en","docname":"ref/contrib/gis/geos","url":"/en/4.1/ref/contrib/gis/geos/","canonical":"https://djangodocs.dev/en/4.1/ref/contrib/gis/geos/","summary":"Background Link to this heading # What is GEOS? Link to this heading # GEOS stands for Geometry Engine - Open Source , and is a C++ library, ported from the Java…","html":"<span id=\"geos-api\"></span><h1>GEOS API<a class=\"heading-anchor\" href=\"#module-django.contrib.gis.geos\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h1>\n<section id=\"background\">\n<h2>Background<a class=\"heading-anchor\" href=\"#background\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<section id=\"what-is-geos\">\n<h3>What is GEOS?<a class=\"heading-anchor\" href=\"#what-is-geos\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p><a class=\"reference external\" href=\"https://libgeos.org/\">GEOS</a> stands for <strong>Geometry Engine - Open Source</strong>,\nand is a C++ library, ported from the  <a class=\"reference external\" href=\"https://sourceforge.net/projects/jts-topo-suite/\">Java Topology Suite</a>.  GEOS\nimplements the OpenGIS <a class=\"reference external\" href=\"https://www.ogc.org/standards/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/4.1/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 and tested; compatible with Windows, Linux, Solaris, and\nmacOS platforms.</p></li>\n</ul>\n</section>\n</section>\n<section id=\"tutorial\">\n<span id=\"geos-tutorial\"></span><h2>Tutorial<a class=\"heading-anchor\" href=\"#tutorial\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>This section contains a brief introduction and tutorial to using\n<a class=\"reference internal\" href=\"#django.contrib.gis.geos.GEOSGeometry\" title=\"django.contrib.gis.geos.GEOSGeometry\"><code class=\"xref py py-class docutils literal notranslate\"><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=\"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\">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=\"s1\">&#39;POINT(5 23)&#39;</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=\"s1\">&#39;010100000000000000000014400000000000003740&#39;</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><span class=\"nb\">memoryview</span><span class=\"p\">(</span><span class=\"sa\">b</span><span class=\"s1\">&#39;</span><span class=\"se\">\\x01\\x01\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x14</span><span class=\"s1\">@</span><span class=\"se\">\\x00\\x00\\x00\\x00\\x00\\x00</span><span class=\"s1\">7@&#39;</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><span class=\"s1\">&#39;{ &quot;type&quot;: &quot;Point&quot;, &quot;coordinates&quot;: [ 5.000000, 23.000000 ] }&#39;</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=\"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>\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=\"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\">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=\"s1\">&#39;POINT (0 0)&#39;</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=\"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\">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=\"s1\">&#39;/path/to/pnt.wkt&#39;</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=\"s1\">&#39;/path/to/pnt.wkt&#39;</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 race\ncondition in the garbage collector, your module is garbage collected before\nthe GEOS object. To prevent this, create <a class=\"reference internal\" href=\"#django.contrib.gis.geos.GEOSGeometry\" title=\"django.contrib.gis.geos.GEOSGeometry\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">GEOSGeometry</span></code></a> objects\ninside the local scope of your functions/methods.</p>\n</aside>\n</section>\n<section id=\"geometries-are-pythonic\">\n<h3>Geometries are Pythonic<a class=\"heading-anchor\" href=\"#geometries-are-pythonic\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p><a class=\"reference internal\" href=\"#django.contrib.gis.geos.GEOSGeometry\" title=\"django.contrib.gis.geos.GEOSGeometry\"><code class=\"xref py py-class docutils literal notranslate\"><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=\"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=\"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=\"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=\"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=\"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\">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=\"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\">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=\"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> <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=\"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=\"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=\"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\">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=\"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\">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><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 buffer)</p></li>\n<li><p><strong>srid</strong> (<a class=\"reference external\" href=\"https://docs.python.org/3/library/functions.html#int\" title=\"(in Python v3.14)\"><em>int</em></a>) – spatial reference identifier</p></li>\n</ul>\n</dd>\n</dl>\n</dd></dl>\n\n<p>This is the base class for all GEOS geometry objects.  It initializes on the\ngiven <code class=\"docutils literal notranslate\"><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=\"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\">GEOSGeometry</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">GEOSGeometry</span><span class=\"p\">(</span><span class=\"s1\">&#39;POINT EMPTY&#39;</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=\"s1\">&#39;SRID=4326;POINT EMPTY&#39;</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=\"s1\">&#39;SRID=1;POINT EMPTY&#39;</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\">buffer</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<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=\"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=\"n\">pnt</span> <span class=\"o\">=</span> <span class=\"n\">GEOSGeometry</span><span class=\"p\">(</span><span class=\"s1\">&#39;POINT(5 23)&#39;</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 is three-dimensional.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.GEOSGeometry.ring\">\n<span class=\"sig-prename descclassname\"><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 do cannot intersect themselves, by\ndefinition.</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=\"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=\"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/4.1/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/4.1/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> returns\n<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 the\nboundary 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.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\nfor this geometry and the other matches the given <code class=\"docutils literal notranslate\"><span class=\"pre\">pattern</span></code> –\na string of nine characters 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 distance.\nThe normalized version takes the distance as a float between 0 (origin) and\n1 (endpoint).</p>\n<p>Reverse of <a class=\"reference internal\" href=\"#django.contrib.gis.geos.GEOSGeometry.project\" title=\"django.contrib.gis.geos.GEOSGeometry.project\"><code class=\"xref py py-meth docutils literal notranslate\"><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 may\ncross. By specifying <code class=\"docutils literal notranslate\"><span class=\"pre\">preserve_topology=True</span></code>, the result will have the\nsame dimension and number of components as the input; this is significantly\nslower, however.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.GEOSGeometry.sym_difference\">\n<span class=\"sig-prename descclassname\"><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 and\ndissolving the linework.</p></li>\n<li><p>Unioning a set of <a class=\"reference internal\" href=\"#django.contrib.gis.geos.Polygon\" title=\"django.contrib.gis.geos.Polygon\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">Polygon</span></code></a>s will always return a <a class=\"reference internal\" href=\"#django.contrib.gis.geos.Polygon\" title=\"django.contrib.gis.geos.Polygon\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">Polygon</span></code></a>\nor <a class=\"reference internal\" href=\"#django.contrib.gis.geos.MultiPolygon\" title=\"django.contrib.gis.geos.MultiPolygon\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">MultiPolygon</span></code></a> geometry (unlike <a class=\"reference internal\" href=\"#django.contrib.gis.geos.GEOSGeometry.union\" title=\"django.contrib.gis.geos.GEOSGeometry.union\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">GEOSGeometry.union()</span></code></a>,\nwhich may return geometries of lower dimension if a topology collapse\noccurs).</p></li>\n</ul>\n</dd></dl>\n\n</section>\n<section id=\"other-properties-methods\">\n<h4>Other Properties &amp; Methods<a class=\"heading-anchor\" href=\"#other-properties-methods\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.GEOSGeometry.area\">\n<span class=\"sig-prename descclassname\"><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 original.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.GEOSGeometry.distance\">\n<span class=\"sig-prename descclassname\"><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 to\nthe <a class=\"reference internal\" href=\"#prepared-geometries\"><span class=\"std std-ref\">Prepared Geometries</span></a> documentation for more information.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.GEOSGeometry.srs\">\n<span class=\"sig-prename descclassname\"><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/4.1/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/4.1/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/4.1/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/4.1/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><aside class=\"version-note version-added\" data-version=\"4.1\">\n<p class=\"version-note-title\">New in Django 4.1</p></aside>\n<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/4.1/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=\"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=\"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<aside class=\"version-note version-changed\" data-version=\"4.1\">\n<p class=\"version-note-title\">Changed in Django 4.1</p><p>The <code class=\"docutils literal notranslate\"><span class=\"pre\">clone</span></code> argument was added.</p>\n</aside>\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=\"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=\"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=\"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=\"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=\"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=\"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=\"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=\"n\">ls</span> <span class=\"o\">=</span> <span class=\"n\">LineString</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=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">,</span> <span class=\"mi\">1</span><span class=\"p\">))</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=\"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=\"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=\"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=\"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=\"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=\"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 a\n<a class=\"reference internal\" href=\"#django.contrib.gis.geos.LinearRing\" title=\"django.contrib.gis.geos.LinearRing\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">LinearRing</span></code></a>:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"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=\"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=\"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\">&gt;&gt;&gt; </span>    <span class=\"k\">pass</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=\"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=\"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=\"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=\"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=\"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=\"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=\"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=\"n\">p1</span> <span class=\"o\">=</span> <span class=\"n\">Polygon</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=\"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> <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=\"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> <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=\"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=\"n\">poly</span> <span class=\"o\">=</span> <span class=\"n\">Polygon</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=\"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> <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\n<code class=\"docutils literal notranslate\"><span class=\"pre\">PreparedGeometry</span></code> instance its spatial predicate methods, listed below,\nmay be used with other <code class=\"docutils literal notranslate\"><span class=\"pre\">GEOSGeometry</span></code> objects.  An operation with a prepared\ngeometry can be orders of magnitude faster – the more complex the geometry\nthat is prepared, the larger the speedup in the operation.  For more information,\nplease consult the <a class=\"reference external\" href=\"https://trac.osgeo.org/geos/wiki/PreparedGeometry\">GEOS wiki page on prepared geometries</a>.</p>\n<p>For example:</p>\n<div class=\"code-block\" data-language=\"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\">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 file</p>\n</dd>\n</dl>\n<p>Example:</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\">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=\"s1\">&#39;/home/bob/geom.wkt&#39;</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 string</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=\"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\">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=\"s1\">&#39;POINT(-90.5 29.5)&#39;</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=\"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\">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=\"s1\">&#39;0101000000000000000000F03F000000000000F03F&#39;</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=\"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\">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=\"s1\">&#39;POINT(1 1)&#39;</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=\"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\">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=\"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\">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=\"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\">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=\"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\">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=\"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\">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 for\ndetails about the constructor arguments.</p>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.geos.WKTWriter.write\">\n<span class=\"sig-name descname\"><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=\"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=\"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=\"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=\"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/4.1/ref/"},{"docname":"ref/contrib/index","title":"contrib packages","url":"/en/4.1/ref/contrib/"},{"docname":"ref/contrib/gis/index","title":"GeoDjango","url":"/en/4.1/ref/contrib/gis/"}],"prev":{"docname":"ref/contrib/gis/measure","title":"Measurement Objects","url":"/en/4.1/ref/contrib/gis/measure/"},"next":{"docname":"ref/contrib/gis/gdal","title":"GDAL API","url":"/en/4.1/ref/contrib/gis/gdal/"},"formats":{"html":"/en/4.1/ref/contrib/gis/geos/","markdown":"/en/4.1/ref/contrib/gis/geos.md","json":"/en/4.1/ref/contrib/gis/geos.json"},"source":"https://github.com/django/django/blob/stable/4.1.x/docs/ref/contrib/gis/geos.txt","official":"https://docs.djangoproject.com/en/4.1/ref/contrib/gis/geos/","inVersions":["dev","6.1","6.0","5.2","5.1","5.0","4.2","4.1","4.0","3.2","3.1","3.0","2.2","2.1","2.0","1.11","1.10","1.9","1.8"],"inLocales":["en","zh-hans","fr","ja","id","it","pt-br","ko","es","el","pl"]}