diff options
| author | Sarah Boyce <42296566+sarahboyce@users.noreply.github.com> | 2025-03-19 13:16:32 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-03-19 09:16:32 -0300 |
| commit | ed1e7c02c9db2cc28b3ab5621ce6315fcee54b27 (patch) | |
| tree | 0511c633e041a96a5ea16e1f63f6ba8625bbeb6c /docs | |
| parent | 08dae5bd46a02a2e2798028c83d97b1894beffb8 (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.txt | 798 |
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 |
