summaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
authorSarah Boyce <42296566+sarahboyce@users.noreply.github.com>2025-03-19 13:16:32 +0100
committerGitHub <noreply@github.com>2025-03-19 09:16:32 -0300
commited1e7c02c9db2cc28b3ab5621ce6315fcee54b27 (patch)
tree0511c633e041a96a5ea16e1f63f6ba8625bbeb6c /docs
parent08dae5bd46a02a2e2798028c83d97b1894beffb8 (diff)
Fixed #36097 -- Replaced GIS functions table with section headers for better readability and navigation.
Diffstat (limited to 'docs')
-rw-r--r--docs/ref/contrib/gis/functions.txt798
1 files changed, 402 insertions, 396 deletions
diff --git a/docs/ref/contrib/gis/functions.txt b/docs/ref/contrib/gis/functions.txt
index 4e1ae167b8..3133e89b59 100644
--- a/docs/ref/contrib/gis/functions.txt
+++ b/docs/ref/contrib/gis/functions.txt
@@ -20,23 +20,11 @@ function to see if your database backend supports the function you want to use.
If you call a geographic function on a backend that doesn't support it, you'll
get a ``NotImplementedError`` exception.
-Function's summary:
-
-========================= ======================== ====================== ======================= ================== ================== ======================
-Measurement Relationships Operations Editors Input format Output format Miscellaneous
-========================= ======================== ====================== ======================= ================== ================== ======================
-:class:`Area` :class:`Azimuth` :class:`Difference` :class:`ForcePolygonCW` :class:`AsGeoJSON` :class:`IsEmpty`
-:class:`Distance` :class:`BoundingCircle` :class:`Intersection` :class:`MakeValid` :class:`AsGML` :class:`IsValid`
-:class:`GeometryDistance` :class:`Centroid` :class:`SymDifference` :class:`Reverse` :class:`AsKML` :class:`MemSize`
-:class:`Length` :class:`ClosestPoint` :class:`Union` :class:`Rotate` :class:`AsSVG` :class:`NumGeometries`
-:class:`Perimeter` :class:`Envelope` :class:`Scale` :class:`FromWKB` :class:`AsWKB` :class:`NumPoints`
- :class:`LineLocatePoint` :class:`SnapToGrid` :class:`FromWKT` :class:`AsWKT`
- :class:`PointOnSurface` :class:`Transform` :class:`GeoHash`
- :class:`Translate`
-========================= ======================== ====================== ======================= ================== ================== ======================
+Measurements
+============
``Area``
-========
+--------
.. class:: Area(expression, **extra)
@@ -50,9 +38,394 @@ field as an :class:`~django.contrib.gis.measure.Area` measure.
MySQL and SpatiaLite without LWGEOM/RTTOPO don't support area calculations on
geographic SRSes.
-``AsGeoJSON``
+``Distance``
+------------
+
+.. class:: Distance(expr1, expr2, spheroid=None, **extra)
+
+*Availability*: MariaDB, `MySQL
+<https://dev.mysql.com/doc/refman/en/spatial-relation-functions-object-shapes.html#function_st-distance>`__,
+`PostGIS <https://postgis.net/docs/ST_Distance.html>`__, Oracle, SpatiaLite
+
+Accepts two geographic fields or expressions and returns the distance between
+them, as a :class:`~django.contrib.gis.measure.Distance` object. On MySQL, a raw
+float value is returned when the coordinates are geodetic.
+
+On backends that support distance calculation on geodetic coordinates, the
+proper backend function is automatically chosen depending on the SRID value of
+the geometries (e.g. `ST_DistanceSphere
+<https://postgis.net/docs/ST_DistanceSphere.html>`__ on PostGIS).
+
+When distances are calculated with geodetic (angular) coordinates, as is the
+case with the default WGS84 (4326) SRID, you can set the ``spheroid`` keyword
+argument to decide if the calculation should be based on a simple sphere (less
+accurate, less resource-intensive) or on a spheroid (more accurate, more
+resource-intensive).
+
+In the following example, the distance from the city of Hobart to every other
+:class:`~django.contrib.gis.db.models.PointField` in the ``AustraliaCity``
+queryset is calculated:
+
+.. code-block:: pycon
+
+ >>> from django.contrib.gis.db.models.functions import Distance
+ >>> pnt = AustraliaCity.objects.get(name="Hobart").point
+ >>> for city in AustraliaCity.objects.annotate(distance=Distance("point", pnt)):
+ ... print(city.name, city.distance)
+ ...
+ Wollongong 990071.220408 m
+ Shellharbour 972804.613941 m
+ Thirroul 1002334.36351 m
+ ...
+
+.. note::
+
+ Because the ``distance`` attribute is a
+ :class:`~django.contrib.gis.measure.Distance` object, you can easily express
+ the value in the units of your choice. For example, ``city.distance.mi`` is
+ the distance value in miles and ``city.distance.km`` is the distance value
+ in kilometers. See :doc:`measure` for usage details and the list of
+ :ref:`supported_units`.
+
+``GeometryDistance``
+--------------------
+
+.. class:: GeometryDistance(expr1, expr2, **extra)
+
+*Availability*: `PostGIS <https://postgis.net/docs/geometry_distance_knn.html>`__
+
+Accepts two geographic fields or expressions and returns the distance between
+them. When used in an :meth:`~django.db.models.query.QuerySet.order_by` clause,
+it provides index-assisted nearest-neighbor result sets.
+
+``Length``
+----------
+
+.. class:: Length(expression, spheroid=True, **extra)
+
+*Availability*: MariaDB, `MySQL
+<https://dev.mysql.com/doc/refman/en/gis-linestring-property-functions.html#function_st-length>`__,
+Oracle, `PostGIS <https://postgis.net/docs/ST_Length.html>`__, SpatiaLite
+
+Accepts a single geographic linestring or multilinestring field or expression
+and returns its length as a :class:`~django.contrib.gis.measure.Distance`
+measure.
+
+On PostGIS and SpatiaLite, when the coordinates are geodetic (angular), you can
+specify if the calculation should be based on a simple sphere (less
+accurate, less resource-intensive) or on a spheroid (more accurate, more
+resource-intensive) with the ``spheroid`` keyword argument.
+
+MySQL doesn't support length calculations on geographic SRSes.
+
+``Perimeter``
+-------------
+
+.. class:: Perimeter(expression, **extra)
+
+*Availability*: `PostGIS <https://postgis.net/docs/ST_Perimeter.html>`__,
+Oracle, SpatiaLite
+
+Accepts a single geographic field or expression and returns the perimeter of the
+geometry field as a :class:`~django.contrib.gis.measure.Distance` object.
+
+Relationships
+=============
+
+``Azimuth``
+-----------
+
+.. class:: Azimuth(point_a, point_b, **extra)
+
+*Availability*: `PostGIS <https://postgis.net/docs/ST_Azimuth.html>`__,
+SpatiaLite (LWGEOM/RTTOPO)
+
+Returns the azimuth in radians of the segment defined by the given point
+geometries, or ``None`` if the two points are coincident. The azimuth is angle
+referenced from north and is positive clockwise: north = ``0``; east = ``π/2``;
+south = ``π``; west = ``3π/2``.
+
+``BoundingCircle``
+------------------
+
+.. class:: BoundingCircle(expression, num_seg=48, **extra)
+
+*Availability*: `PostGIS <https://postgis.net/docs/ST_MinimumBoundingCircle.html>`__,
+`Oracle <https://docs.oracle.com/en/database/oracle/oracle-database/21/spatl/
+SDO_GEOM-reference.html#GUID-82A61626-BB64-4793-B53D-A0DBEC91831A>`_,
+SpatiaLite 5.1+
+
+Accepts a single geographic field or expression and returns the smallest circle
+polygon that can fully contain the geometry.
+
+The ``num_seg`` parameter is used only on PostGIS.
+
+``Centroid``
+------------
+
+.. class:: Centroid(expression, **extra)
+
+*Availability*: MariaDB, `MySQL
+<https://dev.mysql.com/doc/refman/en/gis-polygon-property-functions.html#function_st-centroid>`__,
+`PostGIS <https://postgis.net/docs/ST_Centroid.html>`__, Oracle, SpatiaLite
+
+Accepts a single geographic field or expression and returns the ``centroid``
+value of the geometry.
+
+``ClosestPoint``
+----------------
+
+.. class:: ClosestPoint(expr1, expr2, **extra)
+
+*Availability*: `PostGIS <https://postgis.net/docs/ST_ClosestPoint.html>`__,
+SpatiaLite
+
+Accepts two geographic fields or expressions and returns the 2-dimensional
+point on geometry A that is closest to geometry B.
+
+``Envelope``
+------------
+
+.. class:: Envelope(expression, **extra)
+
+*Availability*: MariaDB, `MySQL
+<https://dev.mysql.com/doc/refman/en/gis-general-property-functions.html#function_st-envelope>`__,
+`Oracle <https://docs.oracle.com/en/database/oracle/oracle-database/21/spatl/
+spatial-operators-reference.html#GUID-ACED800F-3435-44AA-9606-D40934A23ED0>`__,
+`PostGIS <https://postgis.net/docs/ST_Envelope.html>`__, SpatiaLite
+
+Accepts a single geographic field or expression and returns the geometry
+representing the bounding box of the geometry.
+
+``LineLocatePoint``
+-------------------
+
+.. class:: LineLocatePoint(linestring, point, **extra)
+
+*Availability*: `PostGIS <https://postgis.net/docs/ST_LineLocatePoint.html>`__,
+SpatiaLite
+
+Returns a float between 0 and 1 representing the location of the closest point on
+``linestring`` to the given ``point``, as a fraction of the 2D line length.
+
+``PointOnSurface``
+------------------
+
+.. class:: PointOnSurface(expression, **extra)
+
+*Availability*: `PostGIS <https://postgis.net/docs/ST_PointOnSurface.html>`__,
+MariaDB, Oracle, SpatiaLite
+
+Accepts a single geographic field or expression and returns a ``Point`` geometry
+guaranteed to lie on the surface of the field; otherwise returns ``None``.
+
+Operations
+==========
+
+``Difference``
+--------------
+
+.. class:: Difference(expr1, expr2, **extra)
+
+*Availability*: MariaDB, `MySQL
+<https://dev.mysql.com/doc/refman/en/spatial-operator-functions.html#function_st-difference>`__,
+`PostGIS <https://postgis.net/docs/ST_Difference.html>`__, Oracle, SpatiaLite
+
+Accepts two geographic fields or expressions and returns the geometric
+difference, that is the part of geometry A that does not intersect with
+geometry B.
+
+``Intersection``
+----------------
+
+.. class:: Intersection(expr1, expr2, **extra)
+
+*Availability*: MariaDB, `MySQL
+<https://dev.mysql.com/doc/refman/en/spatial-operator-functions.html#function_st-intersection>`__,
+`PostGIS <https://postgis.net/docs/ST_Intersection.html>`__, Oracle, SpatiaLite
+
+Accepts two geographic fields or expressions and returns the geometric
+intersection between them.
+
+``SymDifference``
+-----------------
+
+.. class:: SymDifference(expr1, expr2, **extra)
+
+*Availability*: MariaDB, `MySQL
+<https://dev.mysql.com/doc/refman/en/spatial-operator-functions.html#function_st-symdifference>`__,
+`PostGIS <https://postgis.net/docs/ST_SymDifference.html>`__, Oracle,
+SpatiaLite
+
+Accepts two geographic fields or expressions and returns the geometric
+symmetric difference (union without the intersection) between the given
+parameters.
+
+``Union``
+---------
+
+.. class:: Union(expr1, expr2, **extra)
+
+*Availability*: MariaDB, `MySQL
+<https://dev.mysql.com/doc/refman/en/spatial-operator-functions.html#function_st-union>`__,
+`PostGIS <https://postgis.net/docs/ST_Union.html>`__, Oracle, SpatiaLite
+
+Accepts two geographic fields or expressions and returns the union of both
+geometries.
+
+.. _`Well-known binary (WKB)`: https://en.wikipedia.org/wiki/Well-known_text_representation_of_geometry#Well-known_binary
+.. _`Well-known text (WKT)`: https://en.wikipedia.org/wiki/Well-known_text_representation_of_geometry
+
+Editors
+=======
+
+``ForcePolygonCW``
+------------------
+
+.. class:: ForcePolygonCW(expression, **extra)
+
+*Availability*: `PostGIS <https://postgis.net/docs/ST_ForcePolygonCW.html>`__,
+SpatiaLite
+
+Accepts a single geographic field or expression and returns a modified version
+of the polygon/multipolygon in which all exterior rings are oriented clockwise
+and all interior rings are oriented counterclockwise. Non-polygonal geometries
+are returned unchanged.
+
+``MakeValid``
+-------------
+
+.. class:: MakeValid(expr)
+
+*Availability*: `PostGIS <https://postgis.net/docs/ST_MakeValid.html>`__,
+SpatiaLite (LWGEOM/RTTOPO)
+
+Accepts a geographic field or expression and attempts to convert the value into
+a valid geometry without losing any of the input vertices. Geometries that are
+already valid are returned without changes. Simple polygons might become a
+multipolygon and the result might be of lower dimension than the input.
+
+``Reverse``
+-----------
+
+.. class:: Reverse(expression, **extra)
+
+*Availability*: `PostGIS <https://postgis.net/docs/ST_Reverse.html>`__, Oracle,
+SpatiaLite
+
+Accepts a single geographic field or expression and returns a geometry with
+reversed coordinates.
+
+``Rotate``
+----------
+
+.. versionadded:: 6.0
+
+.. class:: Rotate(expression, angle, origin=None, **extra)
+
+*Availability*: `PostGIS <https://postgis.net/docs/ST_Rotate.html>`__
+
+Rotates a geometry by a specified ``angle`` around the origin. Optionally, the
+rotation can be performed around a point, defined by the ``origin``
+parameter.
+
+``Scale``
+---------
+
+.. class:: Scale(expression, x, y, z=0.0, **extra)
+
+*Availability*: `PostGIS <https://postgis.net/docs/ST_Scale.html>`__, SpatiaLite
+
+Accepts a single geographic field or expression and returns a geometry with
+scaled coordinates by multiplying them with the ``x``, ``y``, and optionally
+``z`` parameters.
+
+``SnapToGrid``
+--------------
+
+.. class:: SnapToGrid(expression, *args, **extra)
+
+*Availability*: `PostGIS <https://postgis.net/docs/ST_SnapToGrid.html>`__,
+SpatiaLite
+
+Accepts a single geographic field or expression and returns a geometry with all
+points snapped to the given grid. How the geometry is snapped to the grid
+depends on how many numeric (either float, integer, or long) arguments are
+given.
+
+=================== =====================================================
+Number of Arguments Description
+=================== =====================================================
+1 A single size to snap both the X and Y grids to.
+2 X and Y sizes to snap the grid to.
+4 X, Y sizes and the corresponding X, Y origins.
+=================== =====================================================
+
+``Transform``
+-------------
+
+.. class:: Transform(expression, srid, **extra)
+
+*Availability*: `PostGIS <https://postgis.net/docs/ST_Transform.html>`__,
+Oracle, SpatiaLite
+
+Accepts a geographic field or expression and a SRID integer code, and returns
+the transformed geometry to the spatial reference system specified by the
+``srid`` parameter.
+
+.. note::
+
+ What spatial reference system an integer SRID corresponds to may depend on
+ the spatial database used. In other words, the SRID numbers used for Oracle
+ are not necessarily the same as those used by PostGIS.
+
+``Translate``
+-------------
+
+.. class:: Translate(expression, x, y, z=0.0, **extra)
+
+*Availability*: `PostGIS <https://postgis.net/docs/ST_Translate.html>`__,
+SpatiaLite
+
+Accepts a single geographic field or expression and returns a geometry with
+its coordinates offset by the ``x``, ``y``, and optionally ``z`` numeric
+parameters.
+
+Input format
+============
+
+``FromWKB``
+-----------
+
+.. class:: FromWKB(expression, srid=0, **extra)
+
+*Availability*: MariaDB, `MySQL
+<https://dev.mysql.com/doc/refman/en/gis-wkb-functions.html#function_st-geomfromwkb>`__,
+Oracle, `PostGIS <https://postgis.net/docs/ST_GeomFromWKB.html>`__, SpatiaLite
+
+Creates geometry from `Well-known binary (WKB)`_ representation. The optional
+``srid`` argument allows to specify the SRID of the resulting geometry.
+``srid`` is ignored on Oracle.
+
+``FromWKT``
+-----------
+
+.. class:: FromWKT(expression, srid=0, **extra)
+
+*Availability*: MariaDB, `MySQL
+<https://dev.mysql.com/doc/refman/en/gis-wkt-functions.html#function_st-geomfromtext>`__,
+Oracle, `PostGIS <https://postgis.net/docs/ST_GeomFromText.html>`__, SpatiaLite
+
+Creates geometry from `Well-known text (WKT)`_ representation. The optional
+``srid`` argument allows to specify the SRID of the resulting geometry.
+``srid`` is ignored on Oracle.
+
+Output format
=============
+``AsGeoJSON``
+-------------
+
.. class:: AsGeoJSON(expression, bbox=False, crs=False, precision=8, **extra)
*Availability*: MariaDB, `MySQL
@@ -89,7 +462,7 @@ Keyword Argument Description
===================== =====================================================
``AsGML``
-=========
+---------
.. class:: AsGML(expression, version=2, precision=8, **extra)
@@ -121,7 +494,7 @@ Keyword Argument Description
__ https://en.wikipedia.org/wiki/Geography_Markup_Language
``AsKML``
-=========
+---------
.. class:: AsKML(expression, precision=8, **extra)
@@ -150,7 +523,7 @@ Keyword Argument Description
__ https://developers.google.com/kml/documentation/
``AsSVG``
-=========
+---------
.. class:: AsSVG(expression, relative=False, precision=8, **extra)
@@ -174,7 +547,7 @@ Keyword Argument Description
__ https://www.w3.org/Graphics/SVG/
``AsWKB``
-=========
+---------
.. class:: AsWKB(expression, **extra)
@@ -193,7 +566,7 @@ Example:
b'\x01\x01\x00\x00\x00]3\xf9f\x9b\x91K@\x00X\x1d9\xd2\xb9N@'
``AsWKT``
-=========
+---------
.. class:: AsWKT(expression, **extra)
@@ -211,174 +584,8 @@ Example:
>>> City.objects.annotate(wkt=AsWKT("point")).get(name="Chelyabinsk").wkt
'POINT (55.137555 61.451728)'
-``Azimuth``
-===========
-
-.. class:: Azimuth(point_a, point_b, **extra)
-
-*Availability*: `PostGIS <https://postgis.net/docs/ST_Azimuth.html>`__,
-SpatiaLite (LWGEOM/RTTOPO)
-
-Returns the azimuth in radians of the segment defined by the given point
-geometries, or ``None`` if the two points are coincident. The azimuth is angle
-referenced from north and is positive clockwise: north = ``0``; east = ``π/2``;
-south = ``π``; west = ``3π/2``.
-
-``BoundingCircle``
-==================
-
-.. class:: BoundingCircle(expression, num_seg=48, **extra)
-
-*Availability*: `PostGIS <https://postgis.net/docs/ST_MinimumBoundingCircle.html>`__,
-`Oracle <https://docs.oracle.com/en/database/oracle/oracle-database/21/spatl/
-SDO_GEOM-reference.html#GUID-82A61626-BB64-4793-B53D-A0DBEC91831A>`_,
-SpatiaLite 5.1+
-
-Accepts a single geographic field or expression and returns the smallest circle
-polygon that can fully contain the geometry.
-
-The ``num_seg`` parameter is used only on PostGIS.
-
-``Centroid``
-============
-
-.. class:: Centroid(expression, **extra)
-
-*Availability*: MariaDB, `MySQL
-<https://dev.mysql.com/doc/refman/en/gis-polygon-property-functions.html#function_st-centroid>`__,
-`PostGIS <https://postgis.net/docs/ST_Centroid.html>`__, Oracle, SpatiaLite
-
-Accepts a single geographic field or expression and returns the ``centroid``
-value of the geometry.
-
-``ClosestPoint``
-================
-
-.. class:: ClosestPoint(expr1, expr2, **extra)
-
-*Availability*: `PostGIS <https://postgis.net/docs/ST_ClosestPoint.html>`__,
-SpatiaLite
-
-Accepts two geographic fields or expressions and returns the 2-dimensional
-point on geometry A that is closest to geometry B.
-
-``Difference``
-==============
-
-.. class:: Difference(expr1, expr2, **extra)
-
-*Availability*: MariaDB, `MySQL
-<https://dev.mysql.com/doc/refman/en/spatial-operator-functions.html#function_st-difference>`__,
-`PostGIS <https://postgis.net/docs/ST_Difference.html>`__, Oracle, SpatiaLite
-
-Accepts two geographic fields or expressions and returns the geometric
-difference, that is the part of geometry A that does not intersect with
-geometry B.
-
-``Distance``
-============
-
-.. class:: Distance(expr1, expr2, spheroid=None, **extra)
-
-*Availability*: MariaDB, `MySQL
-<https://dev.mysql.com/doc/refman/en/spatial-relation-functions-object-shapes.html#function_st-distance>`__,
-`PostGIS <https://postgis.net/docs/ST_Distance.html>`__, Oracle, SpatiaLite
-
-Accepts two geographic fields or expressions and returns the distance between
-them, as a :class:`~django.contrib.gis.measure.Distance` object. On MySQL, a raw
-float value is returned when the coordinates are geodetic.
-
-On backends that support distance calculation on geodetic coordinates, the
-proper backend function is automatically chosen depending on the SRID value of
-the geometries (e.g. `ST_DistanceSphere
-<https://postgis.net/docs/ST_DistanceSphere.html>`__ on PostGIS).
-
-When distances are calculated with geodetic (angular) coordinates, as is the
-case with the default WGS84 (4326) SRID, you can set the ``spheroid`` keyword
-argument to decide if the calculation should be based on a simple sphere (less
-accurate, less resource-intensive) or on a spheroid (more accurate, more
-resource-intensive).
-
-In the following example, the distance from the city of Hobart to every other
-:class:`~django.contrib.gis.db.models.PointField` in the ``AustraliaCity``
-queryset is calculated:
-
-.. code-block:: pycon
-
- >>> from django.contrib.gis.db.models.functions import Distance
- >>> pnt = AustraliaCity.objects.get(name="Hobart").point
- >>> for city in AustraliaCity.objects.annotate(distance=Distance("point", pnt)):
- ... print(city.name, city.distance)
- ...
- Wollongong 990071.220408 m
- Shellharbour 972804.613941 m
- Thirroul 1002334.36351 m
- ...
-
-.. note::
-
- Because the ``distance`` attribute is a
- :class:`~django.contrib.gis.measure.Distance` object, you can easily express
- the value in the units of your choice. For example, ``city.distance.mi`` is
- the distance value in miles and ``city.distance.km`` is the distance value
- in kilometers. See :doc:`measure` for usage details and the list of
- :ref:`supported_units`.
-
-``Envelope``
-============
-
-.. class:: Envelope(expression, **extra)
-
-*Availability*: MariaDB, `MySQL
-<https://dev.mysql.com/doc/refman/en/gis-general-property-functions.html#function_st-envelope>`__,
-`Oracle <https://docs.oracle.com/en/database/oracle/oracle-database/21/spatl/
-spatial-operators-reference.html#GUID-ACED800F-3435-44AA-9606-D40934A23ED0>`__,
-`PostGIS <https://postgis.net/docs/ST_Envelope.html>`__, SpatiaLite
-
-Accepts a single geographic field or expression and returns the geometry
-representing the bounding box of the geometry.
-
-``ForcePolygonCW``
-==================
-
-.. class:: ForcePolygonCW(expression, **extra)
-
-*Availability*: `PostGIS <https://postgis.net/docs/ST_ForcePolygonCW.html>`__,
-SpatiaLite
-
-Accepts a single geographic field or expression and returns a modified version
-of the polygon/multipolygon in which all exterior rings are oriented clockwise
-and all interior rings are oriented counterclockwise. Non-polygonal geometries
-are returned unchanged.
-
-``FromWKB``
-===========
-
-.. class:: FromWKB(expression, srid=0, **extra)
-
-*Availability*: MariaDB, `MySQL
-<https://dev.mysql.com/doc/refman/en/gis-wkb-functions.html#function_st-geomfromwkb>`__,
-Oracle, `PostGIS <https://postgis.net/docs/ST_GeomFromWKB.html>`__, SpatiaLite
-
-Creates geometry from `Well-known binary (WKB)`_ representation. The optional
-``srid`` argument allows to specify the SRID of the resulting geometry.
-``srid`` is ignored on Oracle.
-
-``FromWKT``
-===========
-
-.. class:: FromWKT(expression, srid=0, **extra)
-
-*Availability*: MariaDB, `MySQL
-<https://dev.mysql.com/doc/refman/en/gis-wkt-functions.html#function_st-geomfromtext>`__,
-Oracle, `PostGIS <https://postgis.net/docs/ST_GeomFromText.html>`__, SpatiaLite
-
-Creates geometry from `Well-known text (WKT)`_ representation. The optional
-``srid`` argument allows to specify the SRID of the resulting geometry.
-``srid`` is ignored on Oracle.
-
``GeoHash``
-===========
+-----------
.. class:: GeoHash(expression, precision=None, **extra)
@@ -395,31 +602,11 @@ result.
__ https://en.wikipedia.org/wiki/Geohash
-``GeometryDistance``
-====================
-
-.. class:: GeometryDistance(expr1, expr2, **extra)
-
-*Availability*: `PostGIS <https://postgis.net/docs/geometry_distance_knn.html>`__
-
-Accepts two geographic fields or expressions and returns the distance between
-them. When used in an :meth:`~django.db.models.query.QuerySet.order_by` clause,
-it provides index-assisted nearest-neighbor result sets.
-
-``Intersection``
-================
-
-.. class:: Intersection(expr1, expr2, **extra)
-
-*Availability*: MariaDB, `MySQL
-<https://dev.mysql.com/doc/refman/en/spatial-operator-functions.html#function_st-intersection>`__,
-`PostGIS <https://postgis.net/docs/ST_Intersection.html>`__, Oracle, SpatiaLite
-
-Accepts two geographic fields or expressions and returns the geometric
-intersection between them.
+Miscellaneous
+=============
``IsEmpty``
-===========
+-----------
.. class:: IsEmpty(expr)
@@ -429,7 +616,7 @@ Accepts a geographic field or expression and tests if the value is an empty
geometry. Returns ``True`` if its value is empty and ``False`` otherwise.
``IsValid``
-===========
+-----------
.. class:: IsValid(expr)
@@ -440,52 +627,8 @@ geometry. Returns ``True`` if its value is empty and ``False`` otherwise.
Accepts a geographic field or expression and tests if the value is well formed.
Returns ``True`` if its value is a valid geometry and ``False`` otherwise.
-``Length``
-==========
-
-.. class:: Length(expression, spheroid=True, **extra)
-
-*Availability*: MariaDB, `MySQL
-<https://dev.mysql.com/doc/refman/en/gis-linestring-property-functions.html#function_st-length>`__,
-Oracle, `PostGIS <https://postgis.net/docs/ST_Length.html>`__, SpatiaLite
-
-Accepts a single geographic linestring or multilinestring field or expression
-and returns its length as a :class:`~django.contrib.gis.measure.Distance`
-measure.
-
-On PostGIS and SpatiaLite, when the coordinates are geodetic (angular), you can
-specify if the calculation should be based on a simple sphere (less
-accurate, less resource-intensive) or on a spheroid (more accurate, more
-resource-intensive) with the ``spheroid`` keyword argument.
-
-MySQL doesn't support length calculations on geographic SRSes.
-
-``LineLocatePoint``
-===================
-
-.. class:: LineLocatePoint(linestring, point, **extra)
-
-*Availability*: `PostGIS <https://postgis.net/docs/ST_LineLocatePoint.html>`__,
-SpatiaLite
-
-Returns a float between 0 and 1 representing the location of the closest point on
-``linestring`` to the given ``point``, as a fraction of the 2D line length.
-
-``MakeValid``
-=============
-
-.. class:: MakeValid(expr)
-
-*Availability*: `PostGIS <https://postgis.net/docs/ST_MakeValid.html>`__,
-SpatiaLite (LWGEOM/RTTOPO)
-
-Accepts a geographic field or expression and attempts to convert the value into
-a valid geometry without losing any of the input vertices. Geometries that are
-already valid are returned without changes. Simple polygons might become a
-multipolygon and the result might be of lower dimension than the input.
-
``MemSize``
-===========
+-----------
.. class:: MemSize(expression, **extra)
@@ -495,7 +638,7 @@ Accepts a single geographic field or expression and returns the memory size
(number of bytes) that the geometry field takes.
``NumGeometries``
-=================
+-----------------
.. class:: NumGeometries(expression, **extra)
@@ -511,7 +654,7 @@ or ``MULTI*`` field). Returns 1 for single geometries.
On MySQL, returns ``None`` for single geometries.
``NumPoints``
-=============
+-------------
.. class:: NumPoints(expression, **extra)
@@ -523,140 +666,3 @@ Accepts a single geographic field or expression and returns the number of points
in a geometry.
On MySQL, returns ``None`` for any non-``LINESTRING`` geometry.
-
-``Perimeter``
-=============
-
-.. class:: Perimeter(expression, **extra)
-
-*Availability*: `PostGIS <https://postgis.net/docs/ST_Perimeter.html>`__,
-Oracle, SpatiaLite
-
-Accepts a single geographic field or expression and returns the perimeter of the
-geometry field as a :class:`~django.contrib.gis.measure.Distance` object.
-
-``PointOnSurface``
-==================
-
-.. class:: PointOnSurface(expression, **extra)
-
-*Availability*: `PostGIS <https://postgis.net/docs/ST_PointOnSurface.html>`__,
-MariaDB, Oracle, SpatiaLite
-
-Accepts a single geographic field or expression and returns a ``Point`` geometry
-guaranteed to lie on the surface of the field; otherwise returns ``None``.
-
-``Reverse``
-===========
-
-.. class:: Reverse(expression, **extra)
-
-*Availability*: `PostGIS <https://postgis.net/docs/ST_Reverse.html>`__, Oracle,
-SpatiaLite
-
-Accepts a single geographic field or expression and returns a geometry with
-reversed coordinates.
-
-``Rotate``
-==========
-
-.. versionadded:: 6.0
-
-.. class:: Rotate(expression, angle, origin=None, **extra)
-
-*Availability*: `PostGIS <https://postgis.net/docs/ST_Rotate.html>`__
-
-Rotates a geometry by a specified ``angle`` around the origin. Optionally, the
-rotation can be performed around a point, defined by the ``origin``
-parameter.
-
-``Scale``
-=========
-
-.. class:: Scale(expression, x, y, z=0.0, **extra)
-
-*Availability*: `PostGIS <https://postgis.net/docs/ST_Scale.html>`__, SpatiaLite
-
-Accepts a single geographic field or expression and returns a geometry with
-scaled coordinates by multiplying them with the ``x``, ``y``, and optionally
-``z`` parameters.
-
-``SnapToGrid``
-==============
-
-.. class:: SnapToGrid(expression, *args, **extra)
-
-*Availability*: `PostGIS <https://postgis.net/docs/ST_SnapToGrid.html>`__,
-SpatiaLite
-
-Accepts a single geographic field or expression and returns a geometry with all
-points snapped to the given grid. How the geometry is snapped to the grid
-depends on how many numeric (either float, integer, or long) arguments are
-given.
-
-=================== =====================================================
-Number of Arguments Description
-=================== =====================================================
-1 A single size to snap both the X and Y grids to.
-2 X and Y sizes to snap the grid to.
-4 X, Y sizes and the corresponding X, Y origins.
-=================== =====================================================
-
-``SymDifference``
-=================
-
-.. class:: SymDifference(expr1, expr2, **extra)
-
-*Availability*: MariaDB, `MySQL
-<https://dev.mysql.com/doc/refman/en/spatial-operator-functions.html#function_st-symdifference>`__,
-`PostGIS <https://postgis.net/docs/ST_SymDifference.html>`__, Oracle,
-SpatiaLite
-
-Accepts two geographic fields or expressions and returns the geometric
-symmetric difference (union without the intersection) between the given
-parameters.
-
-``Transform``
-=============
-
-.. class:: Transform(expression, srid, **extra)
-
-*Availability*: `PostGIS <https://postgis.net/docs/ST_Transform.html>`__,
-Oracle, SpatiaLite
-
-Accepts a geographic field or expression and a SRID integer code, and returns
-the transformed geometry to the spatial reference system specified by the
-``srid`` parameter.
-
-.. note::
-
- What spatial reference system an integer SRID corresponds to may depend on
- the spatial database used. In other words, the SRID numbers used for Oracle
- are not necessarily the same as those used by PostGIS.
-
-``Translate``
-=============
-
-.. class:: Translate(expression, x, y, z=0.0, **extra)
-
-*Availability*: `PostGIS <https://postgis.net/docs/ST_Translate.html>`__,
-SpatiaLite
-
-Accepts a single geographic field or expression and returns a geometry with
-its coordinates offset by the ``x``, ``y``, and optionally ``z`` numeric
-parameters.
-
-``Union``
-=========
-
-.. class:: Union(expr1, expr2, **extra)
-
-*Availability*: MariaDB, `MySQL
-<https://dev.mysql.com/doc/refman/en/spatial-operator-functions.html#function_st-union>`__,
-`PostGIS <https://postgis.net/docs/ST_Union.html>`__, Oracle, SpatiaLite
-
-Accepts two geographic fields or expressions and returns the union of both
-geometries.
-
-.. _`Well-known binary (WKB)`: https://en.wikipedia.org/wiki/Well-known_text_representation_of_geometry#Well-known_binary
-.. _`Well-known text (WKT)`: https://en.wikipedia.org/wiki/Well-known_text_representation_of_geometry