From bdaf3b6f4f2456ac9b3d423213851018f0c5c3e5 Mon Sep 17 00:00:00 2001 From: Matthew Broadway Date: Tue, 10 Oct 2023 22:02:20 +0100 Subject: [PATCH] added type stub generation for dynamic functions --- .gitignore | 4 + _generate_type_stubs.py | 14 + geoalchemy2/_functions.py | 7 +- geoalchemy2/_functions_helpers.py | 106 + geoalchemy2/functions.py | 43 +- geoalchemy2/functions.pyi | 3348 +++++++++++++++++++++++++++++ geoalchemy2/py.typed | 0 setup.py | 2 +- tests/test_functions.py | 9 + 9 files changed, 3506 insertions(+), 27 deletions(-) create mode 100644 _generate_type_stubs.py create mode 100644 geoalchemy2/_functions_helpers.py create mode 100644 geoalchemy2/functions.pyi create mode 100644 geoalchemy2/py.typed diff --git a/.gitignore b/.gitignore index d83ad220..955d762c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,7 @@ +# IDE +.vscode +.idea + # Byte-compiled / optimized / DLL files __pycache__/ *.py[cod] diff --git a/_generate_type_stubs.py b/_generate_type_stubs.py new file mode 100644 index 00000000..72c50b6a --- /dev/null +++ b/_generate_type_stubs.py @@ -0,0 +1,14 @@ +from pathlib import Path + +from geoalchemy2._functions_helpers import _generate_stubs + +""" +this script is outside the geoalchemy2 package because the 'geoalchemy2.types' +package interferes with the 'types' module in the standard library +""" + +script_dir = Path(__file__).resolve().parent + + +if __name__ == "__main__": + (script_dir / "geoalchemy2/functions.pyi").write_text(_generate_stubs()) diff --git a/geoalchemy2/_functions.py b/geoalchemy2/_functions.py index 3aa3c0c1..41469e15 100644 --- a/geoalchemy2/_functions.py +++ b/geoalchemy2/_functions.py @@ -1,9 +1,14 @@ # -*- coding: utf-8 -*- # flake8: noqa +from typing import List +from typing import Optional +from typing import Tuple +from typing import Union + from geoalchemy2 import types # fmt: off -_FUNCTIONS = [ +_FUNCTIONS: List[Tuple[str, Optional[type], Union[None, str, Tuple[str, str]]]] = [ ('AddGeometryColumn', None, '''Adds a geometry column to an existing table.'''), ('DropGeometryColumn', None, diff --git a/geoalchemy2/_functions_helpers.py b/geoalchemy2/_functions_helpers.py new file mode 100644 index 00000000..e6101bca --- /dev/null +++ b/geoalchemy2/_functions_helpers.py @@ -0,0 +1,106 @@ +from typing import Callable +from typing import Generic +from typing import Optional +from typing import Tuple +from typing import TypeVar +from typing import Union +from typing import cast + +from sqlalchemy.sql import functions +from typing_extensions import ParamSpec + + +def _get_docstring(name: str, doc: Union[None, str, Tuple[str, str]], type_: Optional[type]) -> str: + doc_string_parts = [] + + if isinstance(doc, tuple): + doc_string_parts.append(doc[0]) + doc_string_parts.append("see http://postgis.net/docs/{0}.html".format(doc[1])) + elif doc is not None: + doc_string_parts.append(doc) + doc_string_parts.append("see http://postgis.net/docs/{0}.html".format(name)) + + if type_ is not None: + return_type_str = "{0}.{1}".format(type_.__module__, type_.__name__) + doc_string_parts.append("Return type: :class:`{0}`.".format(return_type_str)) + + return "\n\n".join(doc_string_parts) + + +def _replace_indent(text: str, indent: str) -> str: + lines = [] + for i, line in enumerate(text.splitlines()): + if i == 0 or not line.strip(): + lines.append(line) + else: + lines.append(f"{indent}{line}") + return "\n".join(lines) + + +def _generate_stubs() -> str: + """Generates type stubs for the dynamic functions described in `geoalchemy2/_functions.py`.""" + from geoalchemy2._functions import _FUNCTIONS + from geoalchemy2.functions import ST_AsGeoJSON + + header = '''\ +# this file is automatically generated +from typing import Any +from typing import List + +from sqlalchemy.sql import functions +from sqlalchemy.sql.elements import ColumnElement + +import geoalchemy2.types +from geoalchemy2._functions_helpers import _generic_function + +class GenericFunction(functions.GenericFunction): ... + +class TableRowElement(ColumnElement): + inherit_cache: bool = ... + """The cache is disabled for this class.""" + + def __init__(self, selectable: bool) -> None: ... + @property + def _from_objects(self) -> List[bool]: ... # type: ignore[override] +''' + stub_file_parts = [header] + + functions = _FUNCTIONS.copy() + functions.insert(0, ("ST_AsGeoJSON", str, ST_AsGeoJSON.__doc__)) + + for name, type_, doc in functions: + doc = _replace_indent(_get_docstring(name, doc, type_), " ") + + if type_ is None: + type_str = "None" + elif type_.__module__ == "builtins": + type_str = type_.__name__ + else: + type_str = f"{type_.__module__}.{type_.__name__}" + + signature = f'''\ +@_generic_function +def {name}(*args: Any, **kwargs: Any) -> {type_str}: + """{doc}""" + ... +''' + stub_file_parts.append(signature) + + return "\n".join(stub_file_parts) + + +_P = ParamSpec("_P") +_R = TypeVar("_R", covariant=True) + + +class _GenericFunction(functions.GenericFunction, Generic[_P, _R]): + def __call__(self, *args: _P.args, **kwargs: _P.kwargs) -> _R: # type: ignore[empty-body] + ... + + +def _generic_function(func: Callable[_P, _R]) -> _GenericFunction[_P, _R]: + """Take a regular function and extend it with attributes from sqlalchemy GenericFunction. + + based on https://github.com/python/mypy/issues/2087#issuecomment-1194111648 + """ + return cast(_GenericFunction[_P, _R], func) diff --git a/geoalchemy2/functions.py b/geoalchemy2/functions.py index 41a025b0..50260dd3 100644 --- a/geoalchemy2/functions.py +++ b/geoalchemy2/functions.py @@ -67,6 +67,7 @@ """ import re +from typing import List from typing import Type from sqlalchemy import inspect @@ -77,6 +78,7 @@ from geoalchemy2 import elements from geoalchemy2._functions import _FUNCTIONS +from geoalchemy2._functions_helpers import _get_docstring _GeoFunctionBase: Type[functions.GenericFunction] _GeoFunctionParent: Type[functions.GenericFunction] @@ -131,11 +133,11 @@ class TableRowElement(ColumnElement): inherit_cache: bool = False """The cache is disabled for this class.""" - def __init__(self, selectable) -> None: + def __init__(self, selectable: bool) -> None: self.selectable = selectable @property - def _from_objects(self): + def _from_objects(self) -> List[bool]: return [self.selectable] @@ -262,33 +264,24 @@ def __init__(self, *args, **kwargs) -> None: ] -# Iterate through _FUNCTIONS and create GenericFunction classes dynamically -for name, type_, doc in _FUNCTIONS: - attributes = { - "name": name, - "inherit_cache": True, - } - docs = [] +def _create_dynamic_functions() -> None: + # Iterate through _FUNCTIONS and create GenericFunction classes dynamically + for name, type_, doc in _FUNCTIONS: + attributes = { + "name": name, + "inherit_cache": True, + "__doc__": _get_docstring(name, doc, type_), + } - if isinstance(doc, tuple): - docs.append(doc[0]) - docs.append("see http://postgis.net/docs/{0}.html".format(doc[1])) - elif doc is not None: - docs.append(doc) - docs.append("see http://postgis.net/docs/{0}.html".format(name)) + if type_ is not None: + attributes["type"] = type_ - if type_ is not None: - attributes["type"] = type_ + globals()[name] = type(name, (GenericFunction,), attributes) + __all__.append(name) - type_str = "{0}.{1}".format(type_.__module__, type_.__name__) - docs.append("Return type: :class:`{0}`.".format(type_str)) - if len(docs) != 0: - attributes["__doc__"] = "\n\n".join(docs) +_create_dynamic_functions() - globals()[name] = type(name, (GenericFunction,), attributes) - __all__.append(name) - -def __dir__(): +def __dir__() -> list[str]: return __all__ diff --git a/geoalchemy2/functions.pyi b/geoalchemy2/functions.pyi new file mode 100644 index 00000000..e997d066 --- /dev/null +++ b/geoalchemy2/functions.pyi @@ -0,0 +1,3348 @@ +# this file is automatically generated +from typing import Any +from typing import List + +from sqlalchemy.sql import functions +from sqlalchemy.sql.elements import ColumnElement + +import geoalchemy2.types +from geoalchemy2._functions_helpers import _generic_function + +class GenericFunction(functions.GenericFunction): ... + +class TableRowElement(ColumnElement): + inherit_cache: bool = ... + """The cache is disabled for this class.""" + + def __init__(self, selectable: bool) -> None: ... + @property + def _from_objects(self) -> List[bool]: ... # type: ignore[override] + +@_generic_function +def ST_AsGeoJSON(*args: Any, **kwargs: Any) -> str: + """Return the geometry as a GeoJSON "geometry" object, or the row as a GeoJSON feature" object (PostGIS 3 only). (Cf GeoJSON specifications RFC 7946). 2D and 3D Geometries are both supported. GeoJSON only support SFS 1.1 geometry types (no curve support for example). See https://postgis.net/docs/ST_AsGeoJSON.html + + see http://postgis.net/docs/ST_AsGeoJSON.html + + Return type: :class:`builtins.str`.""" + ... + +@_generic_function +def AddGeometryColumn(*args: Any, **kwargs: Any) -> None: + """Adds a geometry column to an existing table. + + see http://postgis.net/docs/AddGeometryColumn.html""" + ... + +@_generic_function +def DropGeometryColumn(*args: Any, **kwargs: Any) -> None: + """Removes a geometry column from a spatial table. + + see http://postgis.net/docs/DropGeometryColumn.html""" + ... + +@_generic_function +def DropGeometryTable(*args: Any, **kwargs: Any) -> None: + """Drops a table and all its references in geometry_columns. + + see http://postgis.net/docs/DropGeometryTable.html""" + ... + +@_generic_function +def Find_SRID(*args: Any, **kwargs: Any) -> None: + """Returns the SRID defined for a geometry column. + + see http://postgis.net/docs/Find_SRID.html""" + ... + +@_generic_function +def Populate_Geometry_Columns(*args: Any, **kwargs: Any) -> None: + """Ensures geometry columns are defined with type modifiers or have appropriate spatial constraints. + + see http://postgis.net/docs/Populate_Geometry_Columns.html""" + ... + +@_generic_function +def UpdateGeometrySRID(*args: Any, **kwargs: Any) -> None: + """Updates the SRID of all features in a geometry column, and the table metadata. + + see http://postgis.net/docs/UpdateGeometrySRID.html""" + ... + +@_generic_function +def ST_Collect(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Creates a GeometryCollection or Multi* geometry from a set of geometries. + + see http://postgis.net/docs/ST_Collect.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_LineFromMultiPoint(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Creates a LineString from a MultiPoint geometry. + + see http://postgis.net/docs/ST_LineFromMultiPoint.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_MakeEnvelope(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Creates a rectangular Polygon from minimum and maximum coordinates. + + see http://postgis.net/docs/ST_MakeEnvelope.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_MakeLine(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Creates a Linestring from Point, MultiPoint, or LineString geometries. + + see http://postgis.net/docs/ST_MakeLine.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_MakePoint(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Creates a 2D, 3DZ or 4D Point. + + see http://postgis.net/docs/ST_MakePoint.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_MakePointM(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Creates a Point from X, Y and M values. + + see http://postgis.net/docs/ST_MakePointM.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_MakePolygon(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Creates a Polygon from a shell and optional list of holes. + + see http://postgis.net/docs/ST_MakePolygon.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_Point(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Creates a Point with the given coordinate values. Alias for ST_MakePoint. + + see http://postgis.net/docs/ST_Point.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_Polygon(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """[geometry] Creates a Polygon from a LineString with a specified SRID. + OR + [raster] Returns a multipolygon geometry formed by the union of pixels that have a pixel value that is not no data value. If no band number is specified, band num defaults to 1. + + see http://postgis.net/docs/ST_Polygon.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_TileEnvelope(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Creates a rectangular Polygon in Web Mercator (SRID:3857) using the XYZ tile system. + + see http://postgis.net/docs/ST_TileEnvelope.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def GeometryType(*args: Any, **kwargs: Any) -> None: + """Returns the type of a geometry as text. + + see http://postgis.net/docs/GeometryType.html""" + ... + +@_generic_function +def ST_Boundary(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Returns the boundary of a geometry. + + see http://postgis.net/docs/ST_Boundary.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_CoordDim(*args: Any, **kwargs: Any) -> None: + """Return the coordinate dimension of a geometry. + + see http://postgis.net/docs/ST_CoordDim.html""" + ... + +@_generic_function +def ST_Dimension(*args: Any, **kwargs: Any) -> None: + """Returns the topological dimension of a geometry. + + see http://postgis.net/docs/ST_Dimension.html""" + ... + +@_generic_function +def ST_Dump(*args: Any, **kwargs: Any) -> geoalchemy2.types.GeometryDump: + """Returns a set of geometry_dump rows for the components of a geometry. + + see http://postgis.net/docs/ST_Dump.html + + Return type: :class:`geoalchemy2.types.GeometryDump`.""" + ... + +@_generic_function +def ST_DumpPoints(*args: Any, **kwargs: Any) -> geoalchemy2.types.GeometryDump: + """Returns a set of geometry_dump rows for the points in a geometry. + + see http://postgis.net/docs/ST_DumpPoints.html + + Return type: :class:`geoalchemy2.types.GeometryDump`.""" + ... + +@_generic_function +def ST_DumpRings(*args: Any, **kwargs: Any) -> geoalchemy2.types.GeometryDump: + """Returns a set of geometry_dump rows for the exterior and interior rings of a Polygon. + + see http://postgis.net/docs/ST_DumpRings.html + + Return type: :class:`geoalchemy2.types.GeometryDump`.""" + ... + +@_generic_function +def ST_EndPoint(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Returns the last point of a LineString or CircularLineString. + + see http://postgis.net/docs/ST_EndPoint.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_Envelope(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """[geometry] Returns a geometry representing the bounding box of a geometry. + OR + [raster] Returns the polygon representation of the extent of the raster. + + see http://postgis.net/docs/ST_Envelope.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_BoundingDiagonal(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Returns the diagonal of a geometry's bounding box. + + see http://postgis.net/docs/ST_BoundingDiagonal.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_ExteriorRing(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Returns a LineString representing the exterior ring of a Polygon. + + see http://postgis.net/docs/ST_ExteriorRing.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_GeometryN(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Return the Nth geometry element of a geometry collection. + + see http://postgis.net/docs/ST_GeometryN.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_GeometryType(*args: Any, **kwargs: Any) -> None: + """Returns the SQL-MM type of a geometry as text. + + see http://postgis.net/docs/ST_GeometryType.html""" + ... + +@_generic_function +def ST_HasArc(*args: Any, **kwargs: Any) -> None: + """Tests if a geometry contains a circular arc + + see http://postgis.net/docs/ST_HasArc.html""" + ... + +@_generic_function +def ST_InteriorRingN(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Returns the Nth interior ring (hole) of a Polygon. + + see http://postgis.net/docs/ST_InteriorRingN.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_IsPolygonCCW(*args: Any, **kwargs: Any) -> None: + """Tests if Polygons have exterior rings oriented counter-clockwise and interior rings oriented clockwise. + + see http://postgis.net/docs/ST_IsPolygonCCW.html""" + ... + +@_generic_function +def ST_IsPolygonCW(*args: Any, **kwargs: Any) -> None: + """Tests if Polygons have exterior rings oriented clockwise and interior rings oriented counter-clockwise. + + see http://postgis.net/docs/ST_IsPolygonCW.html""" + ... + +@_generic_function +def ST_IsClosed(*args: Any, **kwargs: Any) -> None: + """Tests if a LineStrings's start and end points are coincident. For a PolyhedralSurface tests if it is closed (volumetric). + + see http://postgis.net/docs/ST_IsClosed.html""" + ... + +@_generic_function +def ST_IsCollection(*args: Any, **kwargs: Any) -> None: + """Tests if a geometry is a geometry collection type. + + see http://postgis.net/docs/ST_IsCollection.html""" + ... + +@_generic_function +def ST_IsEmpty(*args: Any, **kwargs: Any) -> None: + """[geometry] Tests if a geometry is empty. + OR + [raster] Returns true if the raster is empty (width = 0 and height = 0). Otherwise, returns false. + + see http://postgis.net/docs/ST_IsEmpty.html""" + ... + +@_generic_function +def ST_IsRing(*args: Any, **kwargs: Any) -> None: + """Tests if a LineString is closed and simple. + + see http://postgis.net/docs/ST_IsRing.html""" + ... + +@_generic_function +def ST_IsSimple(*args: Any, **kwargs: Any) -> None: + """Tests if a geometry has no points of self-intersection or self-tangency. + + see http://postgis.net/docs/ST_IsSimple.html""" + ... + +@_generic_function +def ST_M(*args: Any, **kwargs: Any) -> None: + """Returns the M coordinate of a Point. + + see http://postgis.net/docs/ST_M.html""" + ... + +@_generic_function +def ST_MemSize(*args: Any, **kwargs: Any) -> None: + """[geometry] Returns the amount of memory space a geometry takes. + OR + [raster] Returns the amount of space (in bytes) the raster takes. + + see http://postgis.net/docs/ST_MemSize.html""" + ... + +@_generic_function +def ST_NDims(*args: Any, **kwargs: Any) -> None: + """Returns the coordinate dimension of a geometry. + + see http://postgis.net/docs/ST_NDims.html""" + ... + +@_generic_function +def ST_NPoints(*args: Any, **kwargs: Any) -> None: + """Returns the number of points (vertices) in a geometry. + + see http://postgis.net/docs/ST_NPoints.html""" + ... + +@_generic_function +def ST_NRings(*args: Any, **kwargs: Any) -> None: + """Returns the number of rings in a polygonal geometry. + + see http://postgis.net/docs/ST_NRings.html""" + ... + +@_generic_function +def ST_NumGeometries(*args: Any, **kwargs: Any) -> None: + """Returns the number of elements in a geometry collection. + + see http://postgis.net/docs/ST_NumGeometries.html""" + ... + +@_generic_function +def ST_NumInteriorRings(*args: Any, **kwargs: Any) -> None: + """Returns the number of interior rings (holes) of a Polygon. + + see http://postgis.net/docs/ST_NumInteriorRings.html""" + ... + +@_generic_function +def ST_NumInteriorRing(*args: Any, **kwargs: Any) -> None: + """Returns the number of interior rings (holes) of a Polygon. Aias for ST_NumInteriorRings + + see http://postgis.net/docs/ST_NumInteriorRing.html""" + ... + +@_generic_function +def ST_NumPatches(*args: Any, **kwargs: Any) -> None: + """Return the number of faces on a Polyhedral Surface. Will return null for non-polyhedral geometries. + + see http://postgis.net/docs/ST_NumPatches.html""" + ... + +@_generic_function +def ST_NumPoints(*args: Any, **kwargs: Any) -> None: + """Returns the number of points in a LineString or CircularString. + + see http://postgis.net/docs/ST_NumPoints.html""" + ... + +@_generic_function +def ST_PatchN(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Returns the Nth geometry (face) of a PolyhedralSurface. + + see http://postgis.net/docs/ST_PatchN.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_PointN(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Returns the Nth point in the first LineString or circular LineString in a geometry. + + see http://postgis.net/docs/ST_PointN.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_Points(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Returns a MultiPoint containing all the coordinates of a geometry. + + see http://postgis.net/docs/ST_Points.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_StartPoint(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Returns the first point of a LineString. + + see http://postgis.net/docs/ST_StartPoint.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_Summary(*args: Any, **kwargs: Any) -> None: + """[geometry] Returns a text summary of the contents of a geometry. + OR + [raster] Returns a text summary of the contents of the raster. + + see http://postgis.net/docs/ST_Summary.html""" + ... + +@_generic_function +def ST_X(*args: Any, **kwargs: Any) -> None: + """Returns the X coordinate of a Point. + + see http://postgis.net/docs/ST_X.html""" + ... + +@_generic_function +def ST_Y(*args: Any, **kwargs: Any) -> None: + """Returns the Y coordinate of a Point. + + see http://postgis.net/docs/ST_Y.html""" + ... + +@_generic_function +def ST_Z(*args: Any, **kwargs: Any) -> None: + """Returns the Z coordinate of a Point. + + see http://postgis.net/docs/ST_Z.html""" + ... + +@_generic_function +def ST_Zmflag(*args: Any, **kwargs: Any) -> None: + """Returns a code indicating the ZM coordinate dimension of a geometry. + + see http://postgis.net/docs/ST_Zmflag.html""" + ... + +@_generic_function +def ST_AddPoint(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Add a point to a LineString. + + see http://postgis.net/docs/ST_AddPoint.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_CollectionExtract(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Given a (multi)geometry, return a (multi)geometry consisting only of elements of the specified type. + + see http://postgis.net/docs/ST_CollectionExtract.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_CollectionHomogenize(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Given a geometry collection, return the "simplest" representation of the contents. + + see http://postgis.net/docs/ST_CollectionHomogenize.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_Force2D(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Force the geometries into a "2-dimensional mode". + + see http://postgis.net/docs/ST_Force2D.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_Force3D(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Force the geometries into XYZ mode. This is an alias for ST_Force3DZ. + + see http://postgis.net/docs/ST_Force_3D.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_Force3DZ(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Force the geometries into XYZ mode. + + see http://postgis.net/docs/ST_Force_3DZ.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_Force3DM(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Force the geometries into XYM mode. + + see http://postgis.net/docs/ST_Force_3DZ.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_Force4D(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Force the geometries into XYZM mode. + + see http://postgis.net/docs/ST_Force_4D.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_ForcePolygonCCW(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Orients all exterior rings counter-clockwise and all interior rings clockwise. + + see http://postgis.net/docs/ST_ForcePolygonCCW.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_ForceCollection(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Convert the geometry into a GEOMETRYCOLLECTION. + + see http://postgis.net/docs/ST_Force_Collection.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_ForcePolygonCW(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Orients all exterior rings clockwise and all interior rings counter-clockwise. + + see http://postgis.net/docs/ST_ForcePolygonCW.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_ForceSFS(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Force the geometries to use SFS 1.1 geometry types only. + + see http://postgis.net/docs/ST_ForceSFS.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_ForceRHR(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Force the orientation of the vertices in a polygon to follow the Right-Hand-Rule. + + see http://postgis.net/docs/ST_ForceRHR.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_ForceCurve(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Upcast a geometry into its curved type, if applicable. + + see http://postgis.net/docs/ST_ForceCurve.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_LineMerge(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Return a (set of) LineString(s) formed by sewing together a MULTILINESTRING. + + see http://postgis.net/docs/ST_LineMerge.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_Multi(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Return the geometry as a MULTI* geometry. + + see http://postgis.net/docs/ST_Multi.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_Normalize(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Return the geometry in its canonical form. + + see http://postgis.net/docs/ST_Normalize.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_QuantizeCoordinates(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Sets least significant bits of coordinates to zero + + see http://postgis.net/docs/ST_QuantizeCoordinates.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_RemovePoint(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Remove point from a linestring. + + see http://postgis.net/docs/ST_RemovePoint.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_Reverse(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Return the geometry with vertex order reversed. + + see http://postgis.net/docs/ST_Reverse.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_Segmentize(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Return a modified geometry/geography having no segment longer than the given distance. + + see http://postgis.net/docs/ST_Segmentize.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_SetPoint(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Replace point of a linestring with a given point. + + see http://postgis.net/docs/ST_SetPoint.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_SnapToGrid(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """[geometry] Snap all points of the input geometry to a regular grid. + OR + [raster] Resample a raster by snapping it to a grid. New pixel values are computed using the NearestNeighbor (english or american spelling), Bilinear, Cubic, CubicSpline or Lanczos resampling algorithm. Default is NearestNeighbor. + + see http://postgis.net/docs/ST_SnapToGrid.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_Snap(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Snap segments and vertices of input geometry to vertices of a reference geometry. + + see http://postgis.net/docs/ST_Snap.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_SwapOrdinates(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Returns a version of the given geometry with given ordinate values swapped. + + see http://postgis.net/docs/ST_SwapOrdinates.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_IsValid(*args: Any, **kwargs: Any) -> None: + """Tests if a geometry is well-formed in 2D. + + see http://postgis.net/docs/ST_IsValid.html""" + ... + +@_generic_function +def ST_IsValidDetail(*args: Any, **kwargs: Any) -> None: + """Returns a valid_detail row stating if a geometry is valid, and if not a reason why and a location. + + see http://postgis.net/docs/ST_IsValidDetail.html""" + ... + +@_generic_function +def ST_IsValidReason(*args: Any, **kwargs: Any) -> None: + """Returns text stating if a geometry is valid, or a reason for invalidity. + + see http://postgis.net/docs/ST_IsValidReason.html""" + ... + +@_generic_function +def ST_SetSRID(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """[geometry] Set the SRID on a geometry to a particular integer value. + OR + [raster] Sets the SRID of a raster to a particular integer srid defined in the spatial_ref_sys table. + + see http://postgis.net/docs/ST_SetSRID.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_SRID(*args: Any, **kwargs: Any) -> None: + """[geometry] Returns the spatial reference identifier for the ST_Geometry as defined in spatial_ref_sys table. + OR + [raster] Returns the spatial reference identifier of the raster as defined in spatial_ref_sys table. + + see http://postgis.net/docs/ST_SRID.html""" + ... + +@_generic_function +def ST_Transform(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """[geometry] Return a new geometry with its coordinates transformed to a different spatial reference system. + OR + [raster] Reprojects a raster in a known spatial reference system to another known spatial reference system using specified resampling algorithm. Options are NearestNeighbor, Bilinear, Cubic, CubicSpline, Lanczos defaulting to NearestNeighbor. + + see http://postgis.net/docs/ST_Transform.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_BdPolyFromText(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Construct a Polygon given an arbitrary collection of closed linestrings as a MultiLineString Well-Known text representation. + + see http://postgis.net/docs/ST_BdPolyFromText.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_BdMPolyFromText(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Construct a MultiPolygon given an arbitrary collection of closed linestrings as a MultiLineString text representation Well-Known text representation. + + see http://postgis.net/docs/ST_BdMPolyFromText.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_GeogFromText(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geography: + """Return a specified geography value from Well-Known Text representation or extended (WKT). + + see http://postgis.net/docs/ST_GeogFromText.html + + Return type: :class:`geoalchemy2.types.Geography`.""" + ... + +@_generic_function +def ST_GeographyFromText(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geography: + """Return a specified geography value from Well-Known Text representation or extended (WKT). + + see http://postgis.net/docs/ST_GeographyFromText.html + + Return type: :class:`geoalchemy2.types.Geography`.""" + ... + +@_generic_function +def ST_GeomCollFromText(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Makes a collection Geometry from collection WKT with the given SRID. If SRID is not given, it defaults to 0. + + see http://postgis.net/docs/ST_GeomCollFromText.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_GeomFromEWKT(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Return a specified ST_Geometry value from Extended Well-Known Text representation (EWKT). + + see http://postgis.net/docs/ST_GeomFromEWKT.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_GeometryFromText(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Return a specified ST_Geometry value from Well-Known Text representation (WKT). This is an alias name for ST_GeomFromText + + see http://postgis.net/docs/ST_GeometryFromText.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_GeomFromText(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Return a specified ST_Geometry value from Well-Known Text representation (WKT). + + see http://postgis.net/docs/ST_GeomFromText.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_LineFromText(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Makes a Geometry from WKT representation with the given SRID. If SRID is not given, it defaults to 0. + + see http://postgis.net/docs/ST_LineFromText.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_MLineFromText(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Return a specified ST_MultiLineString value from WKT representation. + + see http://postgis.net/docs/ST_MLineFromText.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_MPointFromText(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Makes a Geometry from WKT with the given SRID. If SRID is not given, it defaults to 0. + + see http://postgis.net/docs/ST_MPointFromText.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_MPolyFromText(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Makes a MultiPolygon Geometry from WKT with the given SRID. If SRID is not given, it defaults to 0. + + see http://postgis.net/docs/ST_MPolyFromText.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_PointFromText(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Makes a point Geometry from WKT with the given SRID. If SRID is not given, it defaults to unknown. + + see http://postgis.net/docs/ST_PointFromText.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_PolygonFromText(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Makes a Geometry from WKT with the given SRID. If SRID is not given, it defaults to 0. + + see http://postgis.net/docs/ST_PolygonFromText.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_WKTToSQL(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Return a specified ST_Geometry value from Well-Known Text representation (WKT). This is an alias name for ST_GeomFromText + + see http://postgis.net/docs/ST_WKTToSQL.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_GeogFromWKB(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geography: + """Creates a geography instance from a Well-Known Binary geometry representation (WKB) or extended Well Known Binary (EWKB). + + see http://postgis.net/docs/ST_GeogFromWKB.html + + Return type: :class:`geoalchemy2.types.Geography`.""" + ... + +@_generic_function +def ST_GeomFromEWKB(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Return a specified ST_Geometry value from Extended Well-Known Binary representation (EWKB). + + see http://postgis.net/docs/ST_GeomFromEWKB.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_GeomFromWKB(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Creates a geometry instance from a Well-Known Binary geometry representation (WKB) and optional SRID. + + see http://postgis.net/docs/ST_GeomFromWKB.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_LineFromWKB(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Makes a LINESTRING from WKB with the given SRID + + see http://postgis.net/docs/ST_LineFromWKB.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_LinestringFromWKB(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Makes a geometry from WKB with the given SRID. + + see http://postgis.net/docs/ST_LinestringFromWKB.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_PointFromWKB(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Makes a geometry from WKB with the given SRID + + see http://postgis.net/docs/ST_PointFromWKB.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_WKBToSQL(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Return a specified ST_Geometry value from Well-Known Binary representation (WKB). This is an alias name for ST_GeomFromWKB that takes no srid + + see http://postgis.net/docs/ST_WKBToSQL.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_Box2dFromGeoHash(*args: Any, **kwargs: Any) -> None: + """Return a BOX2D from a GeoHash string. + + see http://postgis.net/docs/ST_Box2dFromGeoHash.html""" + ... + +@_generic_function +def ST_GeomFromGeoHash(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Return a geometry from a GeoHash string. + + see http://postgis.net/docs/ST_GeomFromGeoHash.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_GeomFromGML(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Takes as input GML representation of geometry and outputs a PostGIS geometry object + + see http://postgis.net/docs/ST_GeomFromGML.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_GeomFromGeoJSON(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Takes as input a geojson representation of a geometry and outputs a PostGIS geometry object + + see http://postgis.net/docs/ST_GeomFromGeoJSON.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_GeomFromKML(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Takes as input KML representation of geometry and outputs a PostGIS geometry object + + see http://postgis.net/docs/ST_GeomFromKML.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_GeomFromTWKB(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Creates a geometry instance from a TWKB ("Tiny Well-Known Binary") geometry representation. + + see http://postgis.net/docs/ST_GeomFromTWKB.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_GMLToSQL(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Return a specified ST_Geometry value from GML representation. This is an alias name for ST_GeomFromGML + + see http://postgis.net/docs/ST_GMLToSQL.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_LineFromEncodedPolyline(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Creates a LineString from an Encoded Polyline. + + see http://postgis.net/docs/ST_LineFromEncodedPolyline.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_PointFromGeoHash(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Return a point from a GeoHash string. + + see http://postgis.net/docs/ST_PointFromGeoHash.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_AsEWKT(*args: Any, **kwargs: Any) -> None: + """Return the Well-Known Text (WKT) representation of the geometry with SRID meta data. + + see http://postgis.net/docs/ST_AsEWKT.html""" + ... + +@_generic_function +def ST_AsText(*args: Any, **kwargs: Any) -> None: + """Return the Well-Known Text (WKT) representation of the geometry/geography without SRID metadata. + + see http://postgis.net/docs/ST_AsText.html""" + ... + +@_generic_function +def ST_AsBinary(*args: Any, **kwargs: Any) -> None: + """[gometry] Return the Well-Known Binary (WKB) representation of the geometry/geography without SRID meta data. + OR + [raster] Return the Well-Known Binary (WKB) representation of the raster. + + see http://postgis.net/docs/ST_AsBinary.html""" + ... + +@_generic_function +def ST_AsEWKB(*args: Any, **kwargs: Any) -> None: + """Return the Well-Known Binary (WKB) representation of the geometry with SRID meta data. + + see http://postgis.net/docs/ST_AsEWKB.html""" + ... + +@_generic_function +def ST_AsHEXEWKB(*args: Any, **kwargs: Any) -> None: + """Returns a Geometry in HEXEWKB format (as text) using either little-endian (NDR) or big-endian (XDR) encoding. + + see http://postgis.net/docs/ST_AsHEXEWKB.html""" + ... + +@_generic_function +def ST_AsEncodedPolyline(*args: Any, **kwargs: Any) -> None: + """Returns an Encoded Polyline from a LineString geometry. + + see http://postgis.net/docs/ST_AsEncodedPolyline.html""" + ... + +@_generic_function +def ST_AsGeobuf(*args: Any, **kwargs: Any) -> None: + """Return a Geobuf representation of a set of rows. + + see http://postgis.net/docs/ST_AsGeobuf.html""" + ... + +@_generic_function +def ST_AsGML(*args: Any, **kwargs: Any) -> None: + """Return the geometry as a GML version 2 or 3 element. + + see http://postgis.net/docs/ST_AsGML.html""" + ... + +@_generic_function +def ST_AsKML(*args: Any, **kwargs: Any) -> None: + """Return the geometry as a KML element. Several variants. Default version=2, default maxdecimaldigits=15 + + see http://postgis.net/docs/ST_AsKML.html""" + ... + +@_generic_function +def ST_AsLatLonText(*args: Any, **kwargs: Any) -> None: + """Return the Degrees, Minutes, Seconds representation of the given point. + + see http://postgis.net/docs/ST_AsLatLonText.html""" + ... + +@_generic_function +def ST_AsMVTGeom(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Transform a geometry into the coordinate space of a Mapbox Vector Tile. + + see http://postgis.net/docs/ST_AsMVTGeom.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_AsMVT(*args: Any, **kwargs: Any) -> None: + """Aggregate function returning a Mapbox Vector Tile representation of a set of rows. + + see http://postgis.net/docs/ST_AsMVT.html""" + ... + +@_generic_function +def ST_AsSVG(*args: Any, **kwargs: Any) -> None: + """Returns SVG path data for a geometry. + + see http://postgis.net/docs/ST_AsSVG.html""" + ... + +@_generic_function +def ST_AsTWKB(*args: Any, **kwargs: Any) -> None: + """Returns the geometry as TWKB, aka "Tiny Well-Known Binary" + + see http://postgis.net/docs/ST_AsTWKB.html""" + ... + +@_generic_function +def ST_AsX3D(*args: Any, **kwargs: Any) -> None: + """Returns a Geometry in X3D xml node element format: ISO-IEC-19776-1.2-X3DEncodings-XML + + see http://postgis.net/docs/ST_AsX3D.html""" + ... + +@_generic_function +def ST_GeoHash(*args: Any, **kwargs: Any) -> None: + """Return a GeoHash representation of the geometry. + + see http://postgis.net/docs/ST_GeoHash.html""" + ... + +@_generic_function +def ST_3DIntersects(*args: Any, **kwargs: Any) -> None: + """Returns TRUE if the Geometries "spatially intersect" in 3D - only for points, linestrings, polygons, polyhedral surface (area). + + see http://postgis.net/docs/ST_3DIntersects.html""" + ... + +@_generic_function +def ST_Contains(*args: Any, **kwargs: Any) -> None: + """[geometry] Returns true if and only if no points of B lie in the exterior of A, and at least one point of the interior of B lies in the interior of A. + OR + [raster] Return true if no points of raster rastB lie in the exterior of raster rastA and at least one point of the interior of rastB lies in the interior of rastA. + + see http://postgis.net/docs/ST_Contains.html""" + ... + +@_generic_function +def ST_ContainsProperly(*args: Any, **kwargs: Any) -> None: + """[geometry] Returns true if B intersects the interior of A but not the boundary (or exterior). A does not contain properly itself, but does contain itself. + OR + [raster] Return true if rastB intersects the interior of rastA but not the boundary or exterior of rastA. + + see http://postgis.net/docs/ST_ContainsProperly.html""" + ... + +@_generic_function +def ST_Covers(*args: Any, **kwargs: Any) -> None: + """[geometry] Returns 1 (TRUE) if no point in Geometry B is outside Geometry A + OR + [raster] Return true if no points of raster rastB lie outside raster rastA. + + see http://postgis.net/docs/ST_Covers.html""" + ... + +@_generic_function +def ST_CoveredBy(*args: Any, **kwargs: Any) -> None: + """[geometry] Returns 1 (TRUE) if no point in Geometry/Geography A is outside Geometry/Geography B + OR + [raster] Return true if no points of raster rastA lie outside raster rastB. + + see http://postgis.net/docs/ST_CoveredBy.html""" + ... + +@_generic_function +def ST_Crosses(*args: Any, **kwargs: Any) -> None: + """Returns TRUE if the supplied geometries have some, but not all, interior points in common. + + see http://postgis.net/docs/ST_Crosses.html""" + ... + +@_generic_function +def ST_LineCrossingDirection(*args: Any, **kwargs: Any) -> None: + """Given 2 linestrings, returns a number between -3 and 3 denoting what kind of crossing behavior. 0 is no crossing. + + see http://postgis.net/docs/ST_LineCrossingDirection.html""" + ... + +@_generic_function +def ST_Disjoint(*args: Any, **kwargs: Any) -> None: + """[geometry] Returns TRUE if the Geometries do not "spatially intersect" - if they do not share any space together. + OR + [raster] Return true if raster rastA does not spatially intersect rastB. + + see http://postgis.net/docs/ST_Disjoint.html""" + ... + +@_generic_function +def ST_Equals(*args: Any, **kwargs: Any) -> None: + """Returns true if the given geometries represent the same geometry. Directionality is ignored. + + see http://postgis.net/docs/ST_Equals.html""" + ... + +@_generic_function +def ST_Intersects(*args: Any, **kwargs: Any) -> None: + """[geometry] Returns TRUE if the Geometries/Geography "spatially intersect in 2D" - (share any portion of space) and FALSE if they don't (they are Disjoint). For geography tolerance is 0.00001 meters (so any points that close are considered to intersect) + OR + [raster] Return true if raster rastA spatially intersects raster rastB. + + see http://postgis.net/docs/ST_Intersects.html""" + ... + +@_generic_function +def ST_OrderingEquals(*args: Any, **kwargs: Any) -> None: + """Returns true if the given geometries represent the same geometry and points are in the same directional order. + + see http://postgis.net/docs/ST_OrderingEquals.html""" + ... + +@_generic_function +def ST_Overlaps(*args: Any, **kwargs: Any) -> None: + """[geometry] Returns TRUE if the Geometries share space, are of the same dimension, but are not completely contained by each other. + OR + [raster] Return true if raster rastA and rastB intersect but one does not completely contain the other. + + see http://postgis.net/docs/ST_Overlaps.html""" + ... + +@_generic_function +def ST_PointInsideCircle(*args: Any, **kwargs: Any) -> None: + """Is the point geometry inside the circle defined by center_x, center_y, radius + + see http://postgis.net/docs/ST_PointInsideCircle.html""" + ... + +@_generic_function +def ST_Relate(*args: Any, **kwargs: Any) -> None: + """Returns true if this Geometry is spatially related to anotherGeometry, by testing for intersections between the Interior, Boundary and Exterior of the two geometries as specified by the values in the intersectionMatrixPattern. If no intersectionMatrixPattern is passed in, then returns the maximum intersectionMatrixPattern that relates the 2 geometries. + + see http://postgis.net/docs/ST_Relate.html""" + ... + +@_generic_function +def ST_RelateMatch(*args: Any, **kwargs: Any) -> None: + """Returns true if intersectionMattrixPattern1 implies intersectionMatrixPattern2 + + see http://postgis.net/docs/ST_RelateMatch.html""" + ... + +@_generic_function +def ST_Touches(*args: Any, **kwargs: Any) -> None: + """[geometry] Returns TRUE if the geometries have at least one point in common, but their interiors do not intersect. + OR + [raster] Return true if raster rastA and rastB have at least one point in common but their interiors do not intersect. + + see http://postgis.net/docs/ST_Touches.html""" + ... + +@_generic_function +def ST_Within(*args: Any, **kwargs: Any) -> None: + """[geometry] Returns true if the geometry A is completely inside geometry B + OR + [raster] Return true if no points of raster rastA lie in the exterior of raster rastB and at least one point of the interior of rastA lies in the interior of rastB. + + see http://postgis.net/docs/ST_Within.html""" + ... + +@_generic_function +def ST_3DDWithin(*args: Any, **kwargs: Any) -> None: + """For 3d (z) geometry type Returns true if two geometries 3d distance is within number of units. + + see http://postgis.net/docs/ST_3DDWithin.html""" + ... + +@_generic_function +def ST_3DDFullyWithin(*args: Any, **kwargs: Any) -> None: + """Returns true if all of the 3D geometries are within the specified distance of one another. + + see http://postgis.net/docs/ST_3DDFullyWithin.html""" + ... + +@_generic_function +def ST_DFullyWithin(*args: Any, **kwargs: Any) -> None: + """[geometry] Returns true if all of the geometries are within the specified distance of one another + OR + [raster] Return true if rasters rastA and rastB are fully within the specified distance of each other. + + see http://postgis.net/docs/ST_DFullyWithin.html""" + ... + +@_generic_function +def ST_DWithin(*args: Any, **kwargs: Any) -> None: + """[geometry] Returns true if the geometries are within the specified distance of one another. For geometry units are in those of spatial reference and for geography units are in meters and measurement is defaulted to use_spheroid=true (measure around spheroid), for faster check, use_spheroid=false to measure along sphere. + OR + [raster] Return true if rasters rastA and rastB are within the specified distance of each other. + + see http://postgis.net/docs/ST_DWithin.html""" + ... + +@_generic_function +def ST_Area(*args: Any, **kwargs: Any) -> None: + """Returns the area of a polygonal geometry. + + see http://postgis.net/docs/ST_Area.html""" + ... + +@_generic_function +def ST_Azimuth(*args: Any, **kwargs: Any) -> None: + """Returns the north-based azimuth as the angle in radians measured clockwise from the vertical on pointA to pointB. + + see http://postgis.net/docs/ST_Azimuth.html""" + ... + +@_generic_function +def ST_Angle(*args: Any, **kwargs: Any) -> None: + """Returns the angle between 3 points, or between 2 vectors (4 points or 2 lines). + + see http://postgis.net/docs/ST_Angle.html""" + ... + +@_generic_function +def ST_ClosestPoint(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Returns the 2D point on g1 that is closest to g2. This is the first point of the shortest line. + + see http://postgis.net/docs/ST_ClosestPoint.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_3DClosestPoint(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Returns the 3D point on g1 that is closest to g2. This is the first point of the 3D shortest line. + + see http://postgis.net/docs/ST_3DClosestPoint.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_Distance(*args: Any, **kwargs: Any) -> None: + """Returns the distance between two geometry or geography values. + + see http://postgis.net/docs/ST_Distance.html""" + ... + +@_generic_function +def ST_3DDistance(*args: Any, **kwargs: Any) -> None: + """Returns the 3D cartesian minimum distance (based on spatial ref) between two geometries in projected units. + + see http://postgis.net/docs/ST_3DDistance.html""" + ... + +@_generic_function +def ST_DistanceSphere(*args: Any, **kwargs: Any) -> None: + """Returns minimum distance in meters between two lon/lat geometries using a spherical earth model. + + see http://postgis.net/docs/ST_DistanceSphere.html""" + ... + +@_generic_function +def ST_DistanceSpheroid(*args: Any, **kwargs: Any) -> None: + """Returns the minimum distance between two lon/lat geometries using a spheroidal earth model. + + see http://postgis.net/docs/ST_DistanceSpheroid.html""" + ... + +@_generic_function +def ST_FrechetDistance(*args: Any, **kwargs: Any) -> None: + """Returns the Fréchet distance between two geometries. + + see http://postgis.net/docs/ST_FrechetDistance.html""" + ... + +@_generic_function +def ST_HausdorffDistance(*args: Any, **kwargs: Any) -> None: + """Returns the Hausdorff distance between two geometries. + + see http://postgis.net/docs/ST_HausdorffDistance.html""" + ... + +@_generic_function +def ST_Length(*args: Any, **kwargs: Any) -> None: + """Returns the 2D length of a linear geometry. + + see http://postgis.net/docs/ST_Length.html""" + ... + +@_generic_function +def ST_Length2D(*args: Any, **kwargs: Any) -> None: + """Returns the 2D length of a linear geometry. Alias for ST_Length + + see http://postgis.net/docs/ST_Length2D.html""" + ... + +@_generic_function +def ST_3DLength(*args: Any, **kwargs: Any) -> None: + """Returns the 3D length of a linear geometry. + + see http://postgis.net/docs/ST_3DLength.html""" + ... + +@_generic_function +def ST_LengthSpheroid(*args: Any, **kwargs: Any) -> None: + """Returns the 2D or 3D length/perimeter of a lon/lat geometry on a spheroid. + + see http://postgis.net/docs/ST_LengthSpheroid.html""" + ... + +@_generic_function +def ST_LongestLine(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Returns the 2D longest line between two geometries. + + see http://postgis.net/docs/ST_LongestLine.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_3DLongestLine(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Returns the 3D longest line between two geometries + + see http://postgis.net/docs/ST_3DLongestLine.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_MaxDistance(*args: Any, **kwargs: Any) -> None: + """Returns the 2D largest distance between two geometries in projected units. + + see http://postgis.net/docs/ST_MaxDistance.html""" + ... + +@_generic_function +def ST_3DMaxDistance(*args: Any, **kwargs: Any) -> None: + """Returns the 3D cartesian maximum distance (based on spatial ref) between two geometries in projected units. + + see http://postgis.net/docs/ST_3DMaxDistance.html""" + ... + +@_generic_function +def ST_MinimumClearance(*args: Any, **kwargs: Any) -> None: + """Returns the minimum clearance of a geometry, a measure of a geometry's robustness. + + see http://postgis.net/docs/ST_MinimumClearance.html""" + ... + +@_generic_function +def ST_MinimumClearanceLine(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Returns the two-point LineString spanning a geometry's minimum clearance. + + see http://postgis.net/docs/ST_MinimumClearanceLine.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_Perimeter(*args: Any, **kwargs: Any) -> None: + """Returns the length of the boundary of a polygonal geometry or geography. + + see http://postgis.net/docs/ST_Perimeter.html""" + ... + +@_generic_function +def ST_Perimeter2D(*args: Any, **kwargs: Any) -> None: + """Returns the 2D perimeter of a polygonal geometry. Alias for ST_Perimeter. + + see http://postgis.net/docs/ST_Perimeter2D.html""" + ... + +@_generic_function +def ST_3DPerimeter(*args: Any, **kwargs: Any) -> None: + """Returns the 3D perimeter of a polygonal geometry. + + see http://postgis.net/docs/ST_3DPerimeter.html""" + ... + +@_generic_function +def ST_Project(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geography: + """Returns a point projected from a start point by a distance and bearing (azimuth). + + see http://postgis.net/docs/ST_Project.html + + Return type: :class:`geoalchemy2.types.Geography`.""" + ... + +@_generic_function +def ST_ShortestLine(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Returns the 2D shortest line between two geometries + + see http://postgis.net/docs/ST_ShortestLine.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_3DShortestLine(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Returns the 3D shortest line between two geometries + + see http://postgis.net/docs/ST_3DShortestLine.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_Buffer(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """(T) Returns a geometry covering all points within a given distance from the input geometry. + + see http://postgis.net/docs/ST_Buffer.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_BuildArea(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Creates an areal geometry formed by the constituent linework of given geometry + + see http://postgis.net/docs/ST_BuildArea.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_Centroid(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Returns the geometric center of a geometry. + + see http://postgis.net/docs/ST_Centroid.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_ClipByBox2D(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Returns the portion of a geometry falling within a rectangle. + + see http://postgis.net/docs/ST_ClipByBox2D.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_ConcaveHull(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """The concave hull of a geometry represents a possibly concave geometry that encloses all geometries within the set. You can think of it as shrink wrapping. + + see http://postgis.net/docs/ST_ConcaveHull.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_ConvexHull(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """[geometry] Computes the convex hull of a geometry. + OR + [raster] Return the convex hull geometry of the raster including pixel values equal to BandNoDataValue. For regular shaped and non-skewed rasters, this gives the same result as ST_Envelope so only useful for irregularly shaped or skewed rasters. + + see http://postgis.net/docs/ST_ConvexHull.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_CurveToLine(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Converts a CIRCULARSTRING/CURVEPOLYGON/MULTISURFACE to a LINESTRING/POLYGON/MULTIPOLYGON + + see http://postgis.net/docs/ST_CurveToLine.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_DelaunayTriangles(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Return a Delaunay triangulation around the given input points. + + see http://postgis.net/docs/ST_DelaunayTriangles.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_Difference(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Returns a geometry that represents that part of geometry A that does not intersect with geometry B. + + see http://postgis.net/docs/ST_Difference.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_FlipCoordinates(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Returns a version of the given geometry with X and Y axis flipped. Useful for people who have built latitude/longitude features and need to fix them. + + see http://postgis.net/docs/ST_FlipCoordinates.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_GeneratePoints(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Converts a polygon or multi-polygon into a multi-point composed of randomly location points within the original areas. + + see http://postgis.net/docs/ST_GeneratePoints.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_GeometricMedian(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Returns the geometric median of a MultiPoint. + + see http://postgis.net/docs/ST_GeometricMedian.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_Intersection(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """[geometry] (T) Returns a geometry that represents the shared portion of geomA and geomB. + OR + [raster] Returns a raster or a set of geometry-pixelvalue pairs representing the shared portion of two rasters or the geometrical intersection of a vectorization of the raster and a geometry. + + see http://postgis.net/docs/ST_Intersection.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_LineToCurve(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Converts a LINESTRING/POLYGON to a CIRCULARSTRING, CURVEPOLYGON + + see http://postgis.net/docs/ST_LineToCurve.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_MakeValid(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Attempts to make an invalid geometry valid without losing vertices. + + see http://postgis.net/docs/ST_MakeValid.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_MemUnion(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Same as ST_Union, only memory-friendly (uses less memory and more processor time). + + see http://postgis.net/docs/ST_MemUnion.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_MinimumBoundingCircle(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Returns the smallest circle polygon that can fully contain a geometry. Default uses 48 segments per quarter circle. + + see http://postgis.net/docs/ST_MinimumBoundingCircle.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_MinimumBoundingRadius(*args: Any, **kwargs: Any) -> None: + """Returns the center point and radius of the smallest circle that can fully contain a geometry. + + see http://postgis.net/docs/ST_MinimumBoundingRadius.html""" + ... + +@_generic_function +def ST_OrientedEnvelope(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Returns a minimum rotated rectangle enclosing a geometry. + + see http://postgis.net/docs/ST_OrientedEnvelope.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_Polygonize(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Aggregate. Creates a GeometryCollection containing possible polygons formed from the constituent linework of a set of geometries. + + see http://postgis.net/docs/ST_Polygonize.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_Node(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Node a set of linestrings. + + see http://postgis.net/docs/ST_Node.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_OffsetCurve(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Return an offset line at a given distance and side from an input line. Useful for computing parallel lines about a center line + + see http://postgis.net/docs/ST_OffsetCurve.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_PointOnSurface(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Returns a POINT guaranteed to lie on the surface. + + see http://postgis.net/docs/ST_PointOnSurface.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_RemoveRepeatedPoints(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Returns a version of the given geometry with duplicated points removed. + + see http://postgis.net/docs/ST_RemoveRepeatedPoints.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_SharedPaths(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Returns a collection containing paths shared by the two input linestrings/multilinestrings. + + see http://postgis.net/docs/ST_SharedPaths.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_ShiftLongitude(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Toggle geometry coordinates between -180..180 and 0..360 ranges. + + see http://postgis.net/docs/ST_Shift_Longitude.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_WrapX(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Wrap a geometry around an X value. + + see http://postgis.net/docs/ST_WrapX.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_Simplify(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Returns a "simplified" version of the given geometry using the Douglas-Peucker algorithm. + + see http://postgis.net/docs/ST_Simplify.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_SimplifyPreserveTopology(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Returns a "simplified" version of the given geometry using the Douglas-Peucker algorithm. Will avoid creating derived geometries (polygons in particular) that are invalid. + + see http://postgis.net/docs/ST_SimplifyPreserveTopology.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_SimplifyVW(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Returns a "simplified" version of the given geometry using the Visvalingam-Whyatt algorithm + + see http://postgis.net/docs/ST_SimplifyVW.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_ChaikinSmoothing(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Returns a "smoothed" version of the given geometry using the Chaikin algorithm + + see http://postgis.net/docs/ST_ChaikinSmoothing.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_FilterByM(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Filters vertex points based on their m-value + + see http://postgis.net/docs/ST_FilterByM.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_SetEffectiveArea(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Sets the effective area for each vertex, storing the value in the M ordinate. A simplified geometry can then be generated by filtering on the M ordinate. + + see http://postgis.net/docs/ST_SetEffectiveArea.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_Split(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Returns a collection of geometries resulting by splitting a geometry. + + see http://postgis.net/docs/ST_Split.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_SymDifference(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Returns a geometry that represents the portions of A and B that do not intersect. It is called a symmetric difference because ST_SymDifference(A,B) = ST_SymDifference(B,A). + + see http://postgis.net/docs/ST_SymDifference.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_Subdivide(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Returns a set of geometry where no geometry in the set has more than the specified number of vertices. + + see http://postgis.net/docs/ST_Subdivide.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_Union(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """[geometry] Returns a geometry that represents the point set union of the Geometries. + OR + [raster] Returns the union of a set of raster tiles into a single raster composed of 1 or more bands. + + see http://postgis.net/docs/ST_Union.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_UnaryUnion(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Like ST_Union, but working at the geometry component level. + + see http://postgis.net/docs/ST_UnaryUnion.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_VoronoiLines(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Returns the boundaries between the cells of the Voronoi diagram constructed from the vertices of a geometry. + + see http://postgis.net/docs/ST_VoronoiLines.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_VoronoiPolygons(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Returns the cells of the Voronoi diagram constructed from the vertices of a geometry. + + see http://postgis.net/docs/ST_VoronoiPolygons.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_Affine(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Apply a 3D affine transformation to a geometry. + + see http://postgis.net/docs/ST_Affine.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_Rotate(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Rotates a geometry about an origin point. + + see http://postgis.net/docs/ST_Rotate.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_RotateX(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Rotates a geometry about the X axis. + + see http://postgis.net/docs/ST_RotateX.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_RotateY(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Rotates a geometry about the Y axis. + + see http://postgis.net/docs/ST_RotateY.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_RotateZ(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Rotates a geometry about the Z axis. + + see http://postgis.net/docs/ST_RotateZ.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_Scale(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Scales a geometry by given factors. + + see http://postgis.net/docs/ST_Scale.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_Translate(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Translates a geometry by given offsets. + + see http://postgis.net/docs/ST_Translate.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_TransScale(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Translates and scales a geometry by given offsets and factors. + + see http://postgis.net/docs/ST_TransScale.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_ClusterDBSCAN(*args: Any, **kwargs: Any) -> None: + """Window function that returns a cluster id for each input geometry using the DBSCAN algorithm. + + see http://postgis.net/docs/ST_ClusterDBSCAN.html""" + ... + +@_generic_function +def ST_ClusterIntersecting(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Aggregate function that clusters the input geometries into connected sets. + + see http://postgis.net/docs/ST_ClusterIntersecting.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_ClusterKMeans(*args: Any, **kwargs: Any) -> None: + """Window function that returns a cluster id for each input geometry using the K-means algorithm. + + see http://postgis.net/docs/ST_ClusterKMeans.html""" + ... + +@_generic_function +def ST_ClusterWithin(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Aggregate function that clusters the input geometries by separation distance. + + see http://postgis.net/docs/ST_ClusterWithin.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def Box2D(*args: Any, **kwargs: Any) -> None: + """Returns a BOX2D representing the 2D extent of the geometry. + + see http://postgis.net/docs/Box2D_type.html""" + ... + +@_generic_function +def Box3D(*args: Any, **kwargs: Any) -> None: + """[geometry] Returns a BOX3D representing the 3D extent of the geometry. + OR + [raster] Returns the box 3d representation of the enclosing box of the raster. + + see http://postgis.net/docs/Box3D_type.html""" + ... + +@_generic_function +def ST_EstimatedExtent(*args: Any, **kwargs: Any) -> None: + """Return the 'estimated' extent of a spatial table. + + see http://postgis.net/docs/ST_EstimatedExtent.html""" + ... + +@_generic_function +def ST_Expand(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Returns a bounding box expanded from another bounding box or a geometry. + + see http://postgis.net/docs/ST_Expand.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_Extent(*args: Any, **kwargs: Any) -> None: + """an aggregate function that returns the bounding box that bounds rows of geometries. + + see http://postgis.net/docs/ST_Extent.html""" + ... + +@_generic_function +def ST_3DExtent(*args: Any, **kwargs: Any) -> None: + """an aggregate function that returns the 3D bounding box that bounds rows of geometries. + + see http://postgis.net/docs/ST_3DExtent.html""" + ... + +@_generic_function +def ST_MakeBox2D(*args: Any, **kwargs: Any) -> None: + """Creates a BOX2D defined by two 2D point geometries. + + see http://postgis.net/docs/ST_MakeBox2D.html""" + ... + +@_generic_function +def ST_3DMakeBox(*args: Any, **kwargs: Any) -> None: + """Creates a BOX3D defined by two 3D point geometries. + + see http://postgis.net/docs/ST_3DMakeBox.html""" + ... + +@_generic_function +def ST_XMax(*args: Any, **kwargs: Any) -> None: + """Returns the X maxima of a 2D or 3D bounding box or a geometry. + + see http://postgis.net/docs/ST_XMax.html""" + ... + +@_generic_function +def ST_XMin(*args: Any, **kwargs: Any) -> None: + """Returns the X minima of a 2D or 3D bounding box or a geometry. + + see http://postgis.net/docs/ST_XMin.html""" + ... + +@_generic_function +def ST_YMax(*args: Any, **kwargs: Any) -> None: + """Returns the Y maxima of a 2D or 3D bounding box or a geometry. + + see http://postgis.net/docs/ST_YMax.html""" + ... + +@_generic_function +def ST_YMin(*args: Any, **kwargs: Any) -> None: + """Returns the Y minima of a 2D or 3D bounding box or a geometry. + + see http://postgis.net/docs/ST_YMin.html""" + ... + +@_generic_function +def ST_ZMax(*args: Any, **kwargs: Any) -> None: + """Returns the Z maxima of a 2D or 3D bounding box or a geometry. + + see http://postgis.net/docs/ST_ZMax.html""" + ... + +@_generic_function +def ST_ZMin(*args: Any, **kwargs: Any) -> None: + """Returns the Z minima of a 2D or 3D bounding box or a geometry. + + see http://postgis.net/docs/ST_ZMin.html""" + ... + +@_generic_function +def ST_LineInterpolatePoint(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Returns a point interpolated along a line. Second argument is a float8 between 0 and 1 representing fraction of total length of linestring the point has to be located. + + see http://postgis.net/docs/ST_LineInterpolatePoint.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_3DLineInterpolatePoint(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Returns a point interpolated along a line in 3D. Second argument is a float8 between 0 and 1 representing fraction of total length of linestring the point has to be located. + + see http://postgis.net/docs/ST_3DLineInterpolatePoint.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_LineInterpolatePoints(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Returns one or more points interpolated along a line. + + see http://postgis.net/docs/ST_LineInterpolatePoints.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_LineLocatePoint(*args: Any, **kwargs: Any) -> None: + """Returns a float between 0 and 1 representing the location of the closest point on LineString to the given Point, as a fraction of total 2d line length. + + see http://postgis.net/docs/ST_LineLocatePoint.html""" + ... + +@_generic_function +def ST_LineSubstring(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Return a linestring being a substring of the input one starting and ending at the given fractions of total 2d length. Second and third arguments are float8 values between 0 and 1. + + see http://postgis.net/docs/ST_LineSubstring.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_LocateAlong(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Return a derived geometry collection value with elements that match the specified measure. Polygonal elements are not supported. + + see http://postgis.net/docs/ST_LocateAlong.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_LocateBetween(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Return a derived geometry collection value with elements that match the specified range of measures inclusively. + + see http://postgis.net/docs/ST_LocateBetween.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_LocateBetweenElevations(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Return a derived geometry (collection) value with elements that intersect the specified range of elevations inclusively. + + see http://postgis.net/docs/ST_LocateBetweenElevations.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_InterpolatePoint(*args: Any, **kwargs: Any) -> None: + """Return the value of the measure dimension of a geometry at the point closed to the provided point. + + see http://postgis.net/docs/ST_InterpolatePoint.html""" + ... + +@_generic_function +def ST_AddMeasure(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Return a derived geometry with measure elements linearly interpolated between the start and end points. + + see http://postgis.net/docs/ST_AddMeasure.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_IsValidTrajectory(*args: Any, **kwargs: Any) -> None: + """Returns true if the geometry is a valid trajectory. + + see http://postgis.net/docs/ST_IsValidTrajectory.html""" + ... + +@_generic_function +def ST_ClosestPointOfApproach(*args: Any, **kwargs: Any) -> None: + """Returns the measure at which points interpolated along two trajectories are closest. + + see http://postgis.net/docs/ST_ClosestPointOfApproach.html""" + ... + +@_generic_function +def ST_DistanceCPA(*args: Any, **kwargs: Any) -> None: + """Returns the distance between the closest point of approach of two trajectories. + + see http://postgis.net/docs/ST_DistanceCPA.html""" + ... + +@_generic_function +def ST_CPAWithin(*args: Any, **kwargs: Any) -> None: + """Returns true if the closest point of approach of two trajectories is within the specified distance. + + see http://postgis.net/docs/ST_CPAWithin.html""" + ... + +@_generic_function +def postgis_sfcgal_version(*args: Any, **kwargs: Any) -> None: + """Returns the version of SFCGAL in use + + see http://postgis.net/docs/postgis_sfcgal_version.html""" + ... + +@_generic_function +def ST_Extrude(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Extrude a surface to a related volume + + see http://postgis.net/docs/ST_Extrude.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_StraightSkeleton(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Compute a straight skeleton from a geometry + + see http://postgis.net/docs/ST_StraightSkeleton.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_ApproximateMedialAxis(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Compute the approximate medial axis of an areal geometry. + + see http://postgis.net/docs/ST_ApproximateMedialAxis.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_IsPlanar(*args: Any, **kwargs: Any) -> None: + """Check if a surface is or not planar + + see http://postgis.net/docs/ST_IsPlanar.html""" + ... + +@_generic_function +def ST_Orientation(*args: Any, **kwargs: Any) -> None: + """Determine surface orientation + + see http://postgis.net/docs/ST_Orientation.html""" + ... + +@_generic_function +def ST_ForceLHR(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Force LHR orientation + + see http://postgis.net/docs/ST_ForceLHR.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_MinkowskiSum(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Performs Minkowski sum + + see http://postgis.net/docs/ST_MinkowskiSum.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_ConstrainedDelaunayTriangles(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Return a constrained Delaunay triangulation around the given input geometry. + + see http://postgis.net/docs/ST_ConstrainedDelaunayTriangles.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_3DIntersection(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Perform 3D intersection + + see http://postgis.net/docs/ST_3DIntersection.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_3DDifference(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Perform 3D difference + + see http://postgis.net/docs/ST_3DDifference.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_3DUnion(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Perform 3D union + + see http://postgis.net/docs/ST_3DUnion.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_3DArea(*args: Any, **kwargs: Any) -> None: + """Computes area of 3D surface geometries. Will return 0 for solids. + + see http://postgis.net/docs/ST_3DArea.html""" + ... + +@_generic_function +def ST_Tesselate(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Perform surface Tessellation of a polygon or polyhedralsurface and returns as a TIN or collection of TINS + + see http://postgis.net/docs/ST_Tesselate.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_Volume(*args: Any, **kwargs: Any) -> None: + """Computes the volume of a 3D solid. If applied to surface (even closed) geometries will return 0. + + see http://postgis.net/docs/ST_Volume.html""" + ... + +@_generic_function +def ST_MakeSolid(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Cast the geometry into a solid. No check is performed. To obtain a valid solid, the input geometry must be a closed Polyhedral Surface or a closed TIN. + + see http://postgis.net/docs/ST_MakeSolid.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_IsSolid(*args: Any, **kwargs: Any) -> None: + """Test if the geometry is a solid. No validity check is performed. + + see http://postgis.net/docs/ST_IsSolid.html""" + ... + +@_generic_function +def AddAuth(*args: Any, **kwargs: Any) -> None: + """Adds an authorization token to be used in the current transaction. + + see http://postgis.net/docs/AddAuth.html""" + ... + +@_generic_function +def CheckAuth(*args: Any, **kwargs: Any) -> None: + """Creates a trigger on a table to prevent/allow updates and deletes of rows based on authorization token. + + see http://postgis.net/docs/CheckAuth.html""" + ... + +@_generic_function +def DisableLongTransactions(*args: Any, **kwargs: Any) -> None: + """Disables long transaction support. + + see http://postgis.net/docs/DisableLongTransactions.html""" + ... + +@_generic_function +def EnableLongTransactions(*args: Any, **kwargs: Any) -> None: + """Enables long transaction support. + + see http://postgis.net/docs/EnableLongTransactions.html""" + ... + +@_generic_function +def LockRow(*args: Any, **kwargs: Any) -> None: + """Sets lock/authorization for a row in a table. + + see http://postgis.net/docs/LockRow.html""" + ... + +@_generic_function +def UnlockRows(*args: Any, **kwargs: Any) -> None: + """Removes all locks held by an authorization token. + + see http://postgis.net/docs/UnlockRows.html""" + ... + +@_generic_function +def PostGIS_Extensions_Upgrade(*args: Any, **kwargs: Any) -> None: + """Packages and upgrades postgis extensions (e.g. postgis_raster, postgis_topology, postgis_sfcgal) to latest available version. + + see http://postgis.net/docs/PostGIS_Extensions_Upgrade.html""" + ... + +@_generic_function +def PostGIS_Full_Version(*args: Any, **kwargs: Any) -> None: + """Reports full postgis version and build configuration infos. + + see http://postgis.net/docs/PostGIS_Full_Version.html""" + ... + +@_generic_function +def PostGIS_GEOS_Version(*args: Any, **kwargs: Any) -> None: + """Returns the version number of the GEOS library. + + see http://postgis.net/docs/PostGIS_GEOS_Version.html""" + ... + +@_generic_function +def PostGIS_Liblwgeom_Version(*args: Any, **kwargs: Any) -> None: + """Returns the version number of the liblwgeom library. This should match the version of PostGIS. + + see http://postgis.net/docs/PostGIS_Liblwgeom_Version.html""" + ... + +@_generic_function +def PostGIS_LibXML_Version(*args: Any, **kwargs: Any) -> None: + """Returns the version number of the libxml2 library. + + see http://postgis.net/docs/PostGIS_LibXML_Version.html""" + ... + +@_generic_function +def PostGIS_Lib_Build_Date(*args: Any, **kwargs: Any) -> None: + """Returns build date of the PostGIS library. + + see http://postgis.net/docs/PostGIS_Lib_Build_Date.html""" + ... + +@_generic_function +def PostGIS_Lib_Version(*args: Any, **kwargs: Any) -> None: + """Returns the version number of the PostGIS library. + + see http://postgis.net/docs/PostGIS_Lib_Version.html""" + ... + +@_generic_function +def PostGIS_PROJ_Version(*args: Any, **kwargs: Any) -> None: + """Returns the version number of the PROJ4 library. + + see http://postgis.net/docs/PostGIS_PROJ_Version.html""" + ... + +@_generic_function +def PostGIS_Wagyu_Version(*args: Any, **kwargs: Any) -> None: + """Returns the version number of the internal Wagyu library. + + see http://postgis.net/docs/PostGIS_Wagyu_Version.html""" + ... + +@_generic_function +def PostGIS_Scripts_Build_Date(*args: Any, **kwargs: Any) -> None: + """Returns build date of the PostGIS scripts. + + see http://postgis.net/docs/PostGIS_Scripts_Build_Date.html""" + ... + +@_generic_function +def PostGIS_Scripts_Installed(*args: Any, **kwargs: Any) -> None: + """Returns version of the postgis scripts installed in this database. + + see http://postgis.net/docs/PostGIS_Scripts_Installed.html""" + ... + +@_generic_function +def PostGIS_Scripts_Released(*args: Any, **kwargs: Any) -> None: + """Returns the version number of the postgis.sql script released with the installed postgis lib. + + see http://postgis.net/docs/PostGIS_Scripts_Released.html""" + ... + +@_generic_function +def PostGIS_Version(*args: Any, **kwargs: Any) -> None: + """Returns PostGIS version number and compile-time options. + + see http://postgis.net/docs/PostGIS_Version.html""" + ... + +@_generic_function +def PostGIS_AddBBox(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Add bounding box to the geometry. + + see http://postgis.net/docs/PostGIS_AddBBox.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def PostGIS_DropBBox(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Drop the bounding box cache from the geometry. + + see http://postgis.net/docs/PostGIS_DropBBox.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def PostGIS_HasBBox(*args: Any, **kwargs: Any) -> None: + """Returns TRUE if the bbox of this geometry is cached, FALSE otherwise. + + see http://postgis.net/docs/PostGIS_HasBBox.html""" + ... + +@_generic_function +def ST_AddBand(*args: Any, **kwargs: Any) -> geoalchemy2.types.Raster: + """Returns a raster with the new band(s) of given type added with given initial value in the given index location. If no index is specified, the band is added to the end. + + see http://postgis.net/docs/RT_ST_AddBand.html + + Return type: :class:`geoalchemy2.types.Raster`.""" + ... + +@_generic_function +def ST_AsRaster(*args: Any, **kwargs: Any) -> geoalchemy2.types.Raster: + """Converts a PostGIS geometry to a PostGIS raster. + + see http://postgis.net/docs/RT_ST_AsRaster.html + + Return type: :class:`geoalchemy2.types.Raster`.""" + ... + +@_generic_function +def ST_Band(*args: Any, **kwargs: Any) -> geoalchemy2.types.Raster: + """Returns one or more bands of an existing raster as a new raster. Useful for building new rasters from existing rasters. + + see http://postgis.net/docs/RT_ST_Band.html + + Return type: :class:`geoalchemy2.types.Raster`.""" + ... + +@_generic_function +def ST_MakeEmptyCoverage(*args: Any, **kwargs: Any) -> geoalchemy2.types.Raster: + """Cover georeferenced area with a grid of empty raster tiles. + + see http://postgis.net/docs/RT_ST_MakeEmptyCoverage.html + + Return type: :class:`geoalchemy2.types.Raster`.""" + ... + +@_generic_function +def ST_MakeEmptyRaster(*args: Any, **kwargs: Any) -> geoalchemy2.types.Raster: + """Returns an empty raster (having no bands) of given dimensions (width & height), upperleft X and Y, pixel size and rotation (scalex, scaley, skewx & skewy) and reference system (srid). If a raster is passed in, returns a new raster with the same size, alignment and SRID. If srid is left out, the spatial ref is set to unknown (0). + + see http://postgis.net/docs/RT_ST_MakeEmptyRaster.html + + Return type: :class:`geoalchemy2.types.Raster`.""" + ... + +@_generic_function +def ST_Tile(*args: Any, **kwargs: Any) -> geoalchemy2.types.Raster: + """Returns a set of rasters resulting from the split of the input raster based upon the desired dimensions of the output rasters. + + see http://postgis.net/docs/RT_ST_Tile.html + + Return type: :class:`geoalchemy2.types.Raster`.""" + ... + +@_generic_function +def ST_Retile(*args: Any, **kwargs: Any) -> geoalchemy2.types.Raster: + """Return a set of configured tiles from an arbitrarily tiled raster coverage. + + see http://postgis.net/docs/RT_ST_Retile.html + + Return type: :class:`geoalchemy2.types.Raster`.""" + ... + +@_generic_function +def ST_FromGDALRaster(*args: Any, **kwargs: Any) -> geoalchemy2.types.Raster: + """Returns a raster from a supported GDAL raster file. + + see http://postgis.net/docs/RT_ST_FromGDALRaster.html + + Return type: :class:`geoalchemy2.types.Raster`.""" + ... + +@_generic_function +def ST_GeoReference(*args: Any, **kwargs: Any) -> None: + """Returns the georeference meta data in GDAL or ESRI format as commonly seen in a world file. Default is GDAL. + + see http://postgis.net/docs/RT_ST_GeoReference.html""" + ... + +@_generic_function +def ST_Height(*args: Any, **kwargs: Any) -> None: + """Returns the height of the raster in pixels. + + see http://postgis.net/docs/RT_ST_Height.html""" + ... + +@_generic_function +def ST_MetaData(*args: Any, **kwargs: Any) -> None: + """Returns basic meta data about a raster object such as pixel size, rotation (skew), upper, lower left, etc. + + see http://postgis.net/docs/RT_ST_MetaData.html""" + ... + +@_generic_function +def ST_NumBands(*args: Any, **kwargs: Any) -> None: + """Returns the number of bands in the raster object. + + see http://postgis.net/docs/RT_ST_NumBands.html""" + ... + +@_generic_function +def ST_PixelHeight(*args: Any, **kwargs: Any) -> None: + """Returns the pixel height in geometric units of the spatial reference system. + + see http://postgis.net/docs/RT_ST_PixelHeight.html""" + ... + +@_generic_function +def ST_PixelWidth(*args: Any, **kwargs: Any) -> None: + """Returns the pixel width in geometric units of the spatial reference system. + + see http://postgis.net/docs/RT_ST_PixelWidth.html""" + ... + +@_generic_function +def ST_ScaleX(*args: Any, **kwargs: Any) -> None: + """Returns the X component of the pixel width in units of coordinate reference system. + + see http://postgis.net/docs/RT_ST_ScaleX.html""" + ... + +@_generic_function +def ST_ScaleY(*args: Any, **kwargs: Any) -> None: + """Returns the Y component of the pixel height in units of coordinate reference system. + + see http://postgis.net/docs/RT_ST_ScaleY.html""" + ... + +@_generic_function +def ST_RasterToWorldCoord(*args: Any, **kwargs: Any) -> None: + """Returns the raster's upper left corner as geometric X and Y (longitude and latitude) given a column and row. Column and row starts at 1. + + see http://postgis.net/docs/RT_ST_RasterToWorldCoord.html""" + ... + +@_generic_function +def ST_RasterToWorldCoordX(*args: Any, **kwargs: Any) -> None: + """Returns the geometric X coordinate upper left of a raster, column and row. Numbering of columns and rows starts at 1. + + see http://postgis.net/docs/RT_ST_RasterToWorldCoordX.html""" + ... + +@_generic_function +def ST_RasterToWorldCoordY(*args: Any, **kwargs: Any) -> None: + """Returns the geometric Y coordinate upper left corner of a raster, column and row. Numbering of columns and rows starts at 1. + + see http://postgis.net/docs/RT_ST_RasterToWorldCoordY.html""" + ... + +@_generic_function +def ST_Rotation(*args: Any, **kwargs: Any) -> None: + """Returns the rotation of the raster in radian. + + see http://postgis.net/docs/RT_ST_Rotation.html""" + ... + +@_generic_function +def ST_SkewX(*args: Any, **kwargs: Any) -> None: + """Returns the georeference X skew (or rotation parameter). + + see http://postgis.net/docs/RT_ST_SkewX.html""" + ... + +@_generic_function +def ST_SkewY(*args: Any, **kwargs: Any) -> None: + """Returns the georeference Y skew (or rotation parameter). + + see http://postgis.net/docs/RT_ST_SkewY.html""" + ... + +@_generic_function +def ST_UpperLeftX(*args: Any, **kwargs: Any) -> None: + """Returns the upper left X coordinate of raster in projected spatial ref. + + see http://postgis.net/docs/RT_ST_UpperLeftX.html""" + ... + +@_generic_function +def ST_UpperLeftY(*args: Any, **kwargs: Any) -> None: + """Returns the upper left Y coordinate of raster in projected spatial ref. + + see http://postgis.net/docs/RT_ST_UpperLeftY.html""" + ... + +@_generic_function +def ST_Width(*args: Any, **kwargs: Any) -> None: + """Returns the width of the raster in pixels. + + see http://postgis.net/docs/RT_ST_Width.html""" + ... + +@_generic_function +def ST_WorldToRasterCoord(*args: Any, **kwargs: Any) -> None: + """Returns the upper left corner as column and row given geometric X and Y (longitude and latitude) or a point geometry expressed in the spatial reference coordinate system of the raster. + + see http://postgis.net/docs/RT_ST_WorldToRasterCoord.html""" + ... + +@_generic_function +def ST_WorldToRasterCoordX(*args: Any, **kwargs: Any) -> None: + """Returns the column in the raster of the point geometry (pt) or a X and Y world coordinate (xw, yw) represented in world spatial reference system of raster. + + see http://postgis.net/docs/RT_ST_WorldToRasterCoordX.html""" + ... + +@_generic_function +def ST_WorldToRasterCoordY(*args: Any, **kwargs: Any) -> None: + """Returns the row in the raster of the point geometry (pt) or a X and Y world coordinate (xw, yw) represented in world spatial reference system of raster. + + see http://postgis.net/docs/RT_ST_WorldToRasterCoordY.html""" + ... + +@_generic_function +def ST_BandMetaData(*args: Any, **kwargs: Any) -> None: + """Returns basic meta data for a specific raster band. band num 1 is assumed if none-specified. + + see http://postgis.net/docs/RT_ST_BandMetaData.html""" + ... + +@_generic_function +def ST_BandNoDataValue(*args: Any, **kwargs: Any) -> None: + """Returns the value in a given band that represents no data. If no band num 1 is assumed. + + see http://postgis.net/docs/RT_ST_BandNoDataValue.html""" + ... + +@_generic_function +def ST_BandIsNoData(*args: Any, **kwargs: Any) -> None: + """Returns true if the band is filled with only nodata values. + + see http://postgis.net/docs/RT_ST_BandIsNoData.html""" + ... + +@_generic_function +def ST_BandPath(*args: Any, **kwargs: Any) -> None: + """Returns system file path to a band stored in file system. If no bandnum specified, 1 is assumed. + + see http://postgis.net/docs/RT_ST_BandPath.html""" + ... + +@_generic_function +def ST_BandFileSize(*args: Any, **kwargs: Any) -> None: + """Returns the file size of a band stored in file system. If no bandnum specified, 1 is assumed. + + see http://postgis.net/docs/RT_ST_BandFileSize.html""" + ... + +@_generic_function +def ST_BandFileTimestamp(*args: Any, **kwargs: Any) -> None: + """Returns the file timestamp of a band stored in file system. If no bandnum specified, 1 is assumed. + + see http://postgis.net/docs/RT_ST_BandFileTimestamp.html""" + ... + +@_generic_function +def ST_BandPixelType(*args: Any, **kwargs: Any) -> None: + """Returns the type of pixel for given band. If no bandnum specified, 1 is assumed. + + see http://postgis.net/docs/RT_ST_BandPixelType.html""" + ... + +@_generic_function +def ST_MinPossibleValue(*args: Any, **kwargs: Any) -> None: + """Returns the minimum value this pixeltype can store. + + see http://postgis.net/docs/ST_MinPossibleValue.html""" + ... + +@_generic_function +def ST_HasNoBand(*args: Any, **kwargs: Any) -> None: + """Returns true if there is no band with given band number. If no band number is specified, then band number 1 is assumed. + + see http://postgis.net/docs/RT_ST_HasNoBand.html""" + ... + +@_generic_function +def ST_PixelAsPolygon(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Returns the polygon geometry that bounds the pixel for a particular row and column. + + see http://postgis.net/docs/RT_ST_PixelAsPolygon.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_PixelAsPolygons(*args: Any, **kwargs: Any) -> None: + """Returns the polygon geometry that bounds every pixel of a raster band along with the value, the X and the Y raster coordinates of each pixel. + + see http://postgis.net/docs/RT_ST_PixelAsPolygons.html""" + ... + +@_generic_function +def ST_PixelAsPoint(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Returns a point geometry of the pixel's upper-left corner. + + see http://postgis.net/docs/RT_ST_PixelAsPoint.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_PixelAsPoints(*args: Any, **kwargs: Any) -> None: + """Returns a point geometry for each pixel of a raster band along with the value, the X and the Y raster coordinates of each pixel. The coordinates of the point geometry are of the pixel's upper-left corner. + + see http://postgis.net/docs/RT_ST_PixelAsPoints.html""" + ... + +@_generic_function +def ST_PixelAsCentroid(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Returns the centroid (point geometry) of the area represented by a pixel. + + see http://postgis.net/docs/RT_ST_PixelAsCentroid.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_PixelAsCentroids(*args: Any, **kwargs: Any) -> None: + """Returns the centroid (point geometry) for each pixel of a raster band along with the value, the X and the Y raster coordinates of each pixel. The point geometry is the centroid of the area represented by a pixel. + + see http://postgis.net/docs/RT_ST_PixelAsCentroids.html""" + ... + +@_generic_function +def ST_Value(*args: Any, **kwargs: Any) -> None: + """Returns the value of a given band in a given columnx, rowy pixel or at a particular geometric point. Band numbers start at 1 and assumed to be 1 if not specified. If exclude_nodata_value is set to false, then all pixels include nodata pixels are considered to intersect and return value. If exclude_nodata_value is not passed in then reads it from metadata of raster. + + see http://postgis.net/docs/RT_ST_Value.html""" + ... + +@_generic_function +def ST_NearestValue(*args: Any, **kwargs: Any) -> None: + """Returns the nearest non-NODATA value of a given band's pixel specified by a columnx and rowy or a geometric point expressed in the same spatial reference coordinate system as the raster. + + see http://postgis.net/docs/RT_ST_NearestValue.html""" + ... + +@_generic_function +def ST_Neighborhood(*args: Any, **kwargs: Any) -> None: + """Returns a 2-D double precision array of the non-NODATA values around a given band's pixel specified by either a columnX and rowY or a geometric point expressed in the same spatial reference coordinate system as the raster. + + see http://postgis.net/docs/RT_ST_Neighborhood.html""" + ... + +@_generic_function +def ST_SetValue(*args: Any, **kwargs: Any) -> geoalchemy2.types.Raster: + """Returns modified raster resulting from setting the value of a given band in a given columnx, rowy pixel or the pixels that intersect a particular geometry. Band numbers start at 1 and assumed to be 1 if not specified. + + see http://postgis.net/docs/RT_ST_SetValue.html + + Return type: :class:`geoalchemy2.types.Raster`.""" + ... + +@_generic_function +def ST_SetValues(*args: Any, **kwargs: Any) -> geoalchemy2.types.Raster: + """Returns modified raster resulting from setting the values of a given band. + + see http://postgis.net/docs/RT_ST_SetValues.html + + Return type: :class:`geoalchemy2.types.Raster`.""" + ... + +@_generic_function +def ST_DumpValues(*args: Any, **kwargs: Any) -> None: + """Get the values of the specified band as a 2-dimension array. + + see http://postgis.net/docs/RT_ST_DumpValues.html""" + ... + +@_generic_function +def ST_PixelOfValue(*args: Any, **kwargs: Any) -> None: + """Get the columnx, rowy coordinates of the pixel whose value equals the search value. + + see http://postgis.net/docs/RT_ST_PixelOfValue.html""" + ... + +@_generic_function +def ST_SetGeoReference(*args: Any, **kwargs: Any) -> geoalchemy2.types.Raster: + """Set Georeference 6 georeference parameters in a single call. Numbers should be separated by white space. Accepts inputs in GDAL or ESRI format. Default is GDAL. + + see http://postgis.net/docs/RT_ST_SetGeoReference.html + + Return type: :class:`geoalchemy2.types.Raster`.""" + ... + +@_generic_function +def ST_SetRotation(*args: Any, **kwargs: Any) -> geoalchemy2.types.Raster: + """Set the rotation of the raster in radian. + + see http://postgis.net/docs/RT_ST_SetRotation.html + + Return type: :class:`geoalchemy2.types.Raster`.""" + ... + +@_generic_function +def ST_SetScale(*args: Any, **kwargs: Any) -> geoalchemy2.types.Raster: + """Sets the X and Y size of pixels in units of coordinate reference system. Number units/pixel width/height. + + see http://postgis.net/docs/RT_ST_SetScale.html + + Return type: :class:`geoalchemy2.types.Raster`.""" + ... + +@_generic_function +def ST_SetSkew(*args: Any, **kwargs: Any) -> geoalchemy2.types.Raster: + """Sets the georeference X and Y skew (or rotation parameter). If only one is passed in, sets X and Y to the same value. + + see http://postgis.net/docs/RT_ST_SetSkew.html + + Return type: :class:`geoalchemy2.types.Raster`.""" + ... + +@_generic_function +def ST_SetUpperLeft(*args: Any, **kwargs: Any) -> geoalchemy2.types.Raster: + """Sets the value of the upper left corner of the pixel of the raster to projected X and Y coordinates. + + see http://postgis.net/docs/RT_ST_SetUpperLeft.html + + Return type: :class:`geoalchemy2.types.Raster`.""" + ... + +@_generic_function +def ST_Resample(*args: Any, **kwargs: Any) -> geoalchemy2.types.Raster: + """Resample a raster using a specified resampling algorithm, new dimensions, an arbitrary grid corner and a set of raster georeferencing attributes defined or borrowed from another raster. + + see http://postgis.net/docs/RT_ST_Resample.html + + Return type: :class:`geoalchemy2.types.Raster`.""" + ... + +@_generic_function +def ST_Rescale(*args: Any, **kwargs: Any) -> geoalchemy2.types.Raster: + """Resample a raster by adjusting only its scale (or pixel size). New pixel values are computed using the NearestNeighbor (english or american spelling), Bilinear, Cubic, CubicSpline or Lanczos resampling algorithm. Default is NearestNeighbor. + + see http://postgis.net/docs/RT_ST_Rescale.html + + Return type: :class:`geoalchemy2.types.Raster`.""" + ... + +@_generic_function +def ST_Reskew(*args: Any, **kwargs: Any) -> geoalchemy2.types.Raster: + """Resample a raster by adjusting only its skew (or rotation parameters). New pixel values are computed using the NearestNeighbor (english or american spelling), Bilinear, Cubic, CubicSpline or Lanczos resampling algorithm. Default is NearestNeighbor. + + see http://postgis.net/docs/RT_ST_Reskew.html + + Return type: :class:`geoalchemy2.types.Raster`.""" + ... + +@_generic_function +def ST_Resize(*args: Any, **kwargs: Any) -> geoalchemy2.types.Raster: + """Resize a raster to a new width/height + + see http://postgis.net/docs/RT_ST_Resize.html + + Return type: :class:`geoalchemy2.types.Raster`.""" + ... + +@_generic_function +def ST_SetBandNoDataValue(*args: Any, **kwargs: Any) -> geoalchemy2.types.Raster: + """Sets the value for the given band that represents no data. Band 1 is assumed if no band is specified. To mark a band as having no nodata value, set the nodata value = NULL. + + see http://postgis.net/docs/RT_ST_SetBandNoDataValue.html + + Return type: :class:`geoalchemy2.types.Raster`.""" + ... + +@_generic_function +def ST_SetBandIsNoData(*args: Any, **kwargs: Any) -> geoalchemy2.types.Raster: + """Sets the isnodata flag of the band to TRUE. + + see http://postgis.net/docs/RT_ST_SetBandIsNoData.html + + Return type: :class:`geoalchemy2.types.Raster`.""" + ... + +@_generic_function +def ST_SetBandPath(*args: Any, **kwargs: Any) -> geoalchemy2.types.Raster: + """Update the external path and band number of an out-db band + + see http://postgis.net/docs/RT_ST_SetBandPath.html + + Return type: :class:`geoalchemy2.types.Raster`.""" + ... + +@_generic_function +def ST_SetBandIndex(*args: Any, **kwargs: Any) -> geoalchemy2.types.Raster: + """Update the external band number of an out-db band + + see http://postgis.net/docs/RT_ST_SetBandIndex.html + + Return type: :class:`geoalchemy2.types.Raster`.""" + ... + +@_generic_function +def ST_Count(*args: Any, **kwargs: Any) -> None: + """Returns the number of pixels in a given band of a raster or raster coverage. If no band is specified defaults to band 1. If exclude_nodata_value is set to true, will only count pixels that are not equal to the nodata value. + + see http://postgis.net/docs/RT_ST_Count.html""" + ... + +@_generic_function +def ST_CountAgg(*args: Any, **kwargs: Any) -> None: + """Aggregate. Returns the number of pixels in a given band of a set of rasters. If no band is specified defaults to band 1. If exclude_nodata_value is set to true, will only count pixels that are not equal to the NODATA value. + + see http://postgis.net/docs/RT_ST_CountAgg.html""" + ... + +@_generic_function +def ST_Histogram(*args: Any, **kwargs: Any) -> None: + """Returns a set of record summarizing a raster or raster coverage data distribution separate bin ranges. Number of bins are autocomputed if not specified. + + see http://postgis.net/docs/RT_ST_Histogram.html""" + ... + +@_generic_function +def ST_Quantile(*args: Any, **kwargs: Any) -> None: + """Compute quantiles for a raster or raster table coverage in the context of the sample or population. Thus, a value could be examined to be at the raster's 25%, 50%, 75% percentile. + + see http://postgis.net/docs/RT_ST_Quantile.html""" + ... + +@_generic_function +def ST_SummaryStats(*args: Any, **kwargs: Any) -> None: + """Returns summarystats consisting of count, sum, mean, stddev, min, max for a given raster band of a raster or raster coverage. Band 1 is assumed is no band is specified. + + see http://postgis.net/docs/RT_ST_SummaryStats.html""" + ... + +@_generic_function +def ST_SummaryStatsAgg(*args: Any, **kwargs: Any) -> geoalchemy2.types.SummaryStats: + """Aggregate. Returns summarystats consisting of count, sum, mean, stddev, min, max for a given raster band of a set of raster. Band 1 is assumed is no band is specified. + + see http://postgis.net/docs/RT_ST_SummaryStatsAgg.html + + Return type: :class:`geoalchemy2.types.SummaryStats`.""" + ... + +@_generic_function +def ST_ValueCount(*args: Any, **kwargs: Any) -> None: + """Returns a set of records containing a pixel band value and count of the number of pixels in a given band of a raster (or a raster coverage) that have a given set of values. If no band is specified defaults to band 1. By default nodata value pixels are not counted. and all other values in the pixel are output and pixel band values are rounded to the nearest integer. + + see http://postgis.net/docs/RT_ST_ValueCount.html""" + ... + +@_generic_function +def ST_RastFromWKB(*args: Any, **kwargs: Any) -> geoalchemy2.types.Raster: + """Return a raster value from a Well-Known Binary (WKB) raster. + + see http://postgis.net/docs/RT_ST_RastFromWKB.html + + Return type: :class:`geoalchemy2.types.Raster`.""" + ... + +@_generic_function +def ST_RastFromHexWKB(*args: Any, **kwargs: Any) -> geoalchemy2.types.Raster: + """Return a raster value from a Hex representation of Well-Known Binary (WKB) raster. + + see http://postgis.net/docs/RT_ST_RastFromHexWKB.html + + Return type: :class:`geoalchemy2.types.Raster`.""" + ... + +@_generic_function +def ST_AsWKB(*args: Any, **kwargs: Any) -> None: + """Return the Well-Known Binary (WKB) representation of the raster. + + see http://postgis.net/docs/RT_ST_AsBinary.html""" + ... + +@_generic_function +def ST_AsHexWKB(*args: Any, **kwargs: Any) -> None: + """Return the Well-Known Binary (WKB) in Hex representation of the raster. + + see http://postgis.net/docs/RT_ST_AsHexWKB.html""" + ... + +@_generic_function +def ST_AsGDALRaster(*args: Any, **kwargs: Any) -> None: + """Return the raster tile in the designated GDAL Raster format. Raster formats are one of those supported by your compiled library. Use ST_GDALDrivers() to get a list of formats supported by your library. + + see http://postgis.net/docs/RT_ST_AsGDALRaster.html""" + ... + +@_generic_function +def ST_AsJPEG(*args: Any, **kwargs: Any) -> None: + """Return the raster tile selected bands as a single Joint Photographic Exports Group (JPEG) image (byte array). If no band is specified and 1 or more than 3 bands, then only the first band is used. If only 3 bands then all 3 bands are used and mapped to RGB. + + see http://postgis.net/docs/RT_ST_AsJPEG.html""" + ... + +@_generic_function +def ST_AsPNG(*args: Any, **kwargs: Any) -> None: + """Return the raster tile selected bands as a single portable network graphics (PNG) image (byte array). If 1, 3, or 4 bands in raster and no bands are specified, then all bands are used. If more 2 or more than 4 bands and no bands specified, then only band 1 is used. Bands are mapped to RGB or RGBA space. + + see http://postgis.net/docs/RT_ST_AsPNG.html""" + ... + +@_generic_function +def ST_AsTIFF(*args: Any, **kwargs: Any) -> None: + """Return the raster selected bands as a single TIFF image (byte array). If no band is specified or any of specified bands does not exist in the raster, then will try to use all bands. + + see http://postgis.net/docs/RT_ST_AsTIFF.html""" + ... + +@_generic_function +def ST_Clip(*args: Any, **kwargs: Any) -> geoalchemy2.types.Raster: + """Returns the raster clipped by the input geometry. If band number not is specified, all bands are processed. If crop is not specified or TRUE, the output raster is cropped. + + see http://postgis.net/docs/RT_ST_Clip.html + + Return type: :class:`geoalchemy2.types.Raster`.""" + ... + +@_generic_function +def ST_ColorMap(*args: Any, **kwargs: Any) -> geoalchemy2.types.Raster: + """Creates a new raster of up to four 8BUI bands (grayscale, RGB, RGBA) from the source raster and a specified band. Band 1 is assumed if not specified. + + see http://postgis.net/docs/RT_ST_ColorMap.html + + Return type: :class:`geoalchemy2.types.Raster`.""" + ... + +@_generic_function +def ST_Grayscale(*args: Any, **kwargs: Any) -> geoalchemy2.types.Raster: + """Creates a new one-8BUI band raster from the source raster and specified bands representing Red, Green and Blue + + see http://postgis.net/docs/RT_ST_Grayscale.html + + Return type: :class:`geoalchemy2.types.Raster`.""" + ... + +@_generic_function +def ST_MapAlgebra(*args: Any, **kwargs: Any) -> None: + """[raster] Callback function version - Returns a one-band raster given one or more input rasters, band indexes and one user-specified callback function. + OR + [raster] Expression version - Returns a one-band raster given one or two input rasters, band indexes and one or more user-specified SQL expressions. + + see http://postgis.net/docs/RT_ST_MapAlgebra.html""" + ... + +@_generic_function +def ST_MapAlgebraExpr(*args: Any, **kwargs: Any) -> geoalchemy2.types.Raster: + """[raster] 1 raster band version: Creates a new one band raster formed by applying a valid PostgreSQL algebraic operation on the input raster band and of pixeltype provided. Band 1 is assumed if no band is specified. + OR + [raster] 2 raster band version: Creates a new one band raster formed by applying a valid PostgreSQL algebraic operation on the two input raster bands and of pixeltype provided. band 1 of each raster is assumed if no band numbers are specified. The resulting raster will be aligned (scale, skew and pixel corners) on the grid defined by the first raster and have its extent defined by the "extenttype" parameter. Values for "extenttype" can be: INTERSECTION, UNION, FIRST, SECOND. + + see http://postgis.net/docs/RT_ST_MapAlgebraExpr.html + + Return type: :class:`geoalchemy2.types.Raster`.""" + ... + +@_generic_function +def ST_MapAlgebraFct(*args: Any, **kwargs: Any) -> geoalchemy2.types.Raster: + """[raster] 1 band version - Creates a new one band raster formed by applying a valid PostgreSQL function on the input raster band and of pixeltype provided. Band 1 is assumed if no band is specified. + OR + [raster] 2 band version - Creates a new one band raster formed by applying a valid PostgreSQL function on the 2 input raster bands and of pixeltype provided. Band 1 is assumed if no band is specified. Extent type defaults to INTERSECTION if not specified. + + see http://postgis.net/docs/RT_ST_MapAlgebraFct.html + + Return type: :class:`geoalchemy2.types.Raster`.""" + ... + +@_generic_function +def ST_MapAlgebraFctNgb(*args: Any, **kwargs: Any) -> geoalchemy2.types.Raster: + """1-band version: Map Algebra Nearest Neighbor using user-defined PostgreSQL function. Return a raster which values are the result of a PLPGSQL user function involving a neighborhood of values from the input raster band. + + see http://postgis.net/docs/RT_ST_MapAlgebraFctNgb.html + + Return type: :class:`geoalchemy2.types.Raster`.""" + ... + +@_generic_function +def ST_Reclass(*args: Any, **kwargs: Any) -> geoalchemy2.types.Raster: + """Creates a new raster composed of band types reclassified from original. The nband is the band to be changed. If nband is not specified assumed to be 1. All other bands are returned unchanged. Use case: convert a 16BUI band to a 8BUI and so forth for simpler rendering as viewable formats. + + see http://postgis.net/docs/RT_ST_Reclass.html + + Return type: :class:`geoalchemy2.types.Raster`.""" + ... + +@_generic_function +def ST_Distinct4ma(*args: Any, **kwargs: Any) -> None: + """Raster processing function that calculates the number of unique pixel values in a neighborhood. + + see http://postgis.net/docs/RT_ST_Distinct4ma.html""" + ... + +@_generic_function +def ST_InvDistWeight4ma(*args: Any, **kwargs: Any) -> None: + """Raster processing function that interpolates a pixel's value from the pixel's neighborhood. + + see http://postgis.net/docs/RT_ST_InvDistWeight4ma.html""" + ... + +@_generic_function +def ST_Max4ma(*args: Any, **kwargs: Any) -> None: + """Raster processing function that calculates the maximum pixel value in a neighborhood. + + see http://postgis.net/docs/RT_ST_Max4ma.html""" + ... + +@_generic_function +def ST_Mean4ma(*args: Any, **kwargs: Any) -> None: + """Raster processing function that calculates the mean pixel value in a neighborhood. + + see http://postgis.net/docs/RT_ST_Mean4ma.html""" + ... + +@_generic_function +def ST_Min4ma(*args: Any, **kwargs: Any) -> None: + """Raster processing function that calculates the minimum pixel value in a neighborhood. + + see http://postgis.net/docs/RT_ST_Min4ma.html""" + ... + +@_generic_function +def ST_MinDist4ma(*args: Any, **kwargs: Any) -> None: + """Raster processing function that returns the minimum distance (in number of pixels) between the pixel of interest and a neighboring pixel with value. + + see http://postgis.net/docs/RT_ST_MinDist4ma.html""" + ... + +@_generic_function +def ST_Range4ma(*args: Any, **kwargs: Any) -> None: + """Raster processing function that calculates the range of pixel values in a neighborhood. + + see http://postgis.net/docs/RT_ST_Range4ma.html""" + ... + +@_generic_function +def ST_StdDev4ma(*args: Any, **kwargs: Any) -> None: + """Raster processing function that calculates the standard deviation of pixel values in a neighborhood. + + see http://postgis.net/docs/RT_ST_StdDev4ma.html""" + ... + +@_generic_function +def ST_Sum4ma(*args: Any, **kwargs: Any) -> None: + """Raster processing function that calculates the sum of all pixel values in a neighborhood. + + see http://postgis.net/docs/RT_ST_Sum4ma.html""" + ... + +@_generic_function +def ST_Aspect(*args: Any, **kwargs: Any) -> geoalchemy2.types.Raster: + """Returns the aspect (in degrees by default) of an elevation raster band. Useful for analyzing terrain. + + see http://postgis.net/docs/RT_ST_Aspect.html + + Return type: :class:`geoalchemy2.types.Raster`.""" + ... + +@_generic_function +def ST_HillShade(*args: Any, **kwargs: Any) -> geoalchemy2.types.Raster: + """Returns the hypothetical illumination of an elevation raster band using provided azimuth, altitude, brightness and scale inputs. + + see http://postgis.net/docs/RT_ST_HillShade.html + + Return type: :class:`geoalchemy2.types.Raster`.""" + ... + +@_generic_function +def ST_Roughness(*args: Any, **kwargs: Any) -> geoalchemy2.types.Raster: + """Returns a raster with the calculated "roughness" of a DEM. + + see http://postgis.net/docs/RT_ST_Roughness.html + + Return type: :class:`geoalchemy2.types.Raster`.""" + ... + +@_generic_function +def ST_Slope(*args: Any, **kwargs: Any) -> geoalchemy2.types.Raster: + """Returns the slope (in degrees by default) of an elevation raster band. Useful for analyzing terrain. + + see http://postgis.net/docs/RT_ST_Slope.html + + Return type: :class:`geoalchemy2.types.Raster`.""" + ... + +@_generic_function +def ST_TPI(*args: Any, **kwargs: Any) -> geoalchemy2.types.Raster: + """Returns a raster with the calculated Topographic Position Index. + + see http://postgis.net/docs/RT_ST_TPI.html + + Return type: :class:`geoalchemy2.types.Raster`.""" + ... + +@_generic_function +def ST_TRI(*args: Any, **kwargs: Any) -> geoalchemy2.types.Raster: + """Returns a raster with the calculated Terrain Ruggedness Index. + + see http://postgis.net/docs/RT_ST_TRI.html + + Return type: :class:`geoalchemy2.types.Raster`.""" + ... + +@_generic_function +def ST_DumpAsPolygons(*args: Any, **kwargs: Any) -> None: + """Returns a set of geomval (geom,val) rows, from a given raster band. If no band number is specified, band num defaults to 1. + + see http://postgis.net/docs/RT_ST_DumpAsPolygons.html""" + ... + +@_generic_function +def ST_MinConvexHull(*args: Any, **kwargs: Any) -> geoalchemy2.types.Geometry: + """Return the convex hull geometry of the raster excluding NODATA pixels. + + see http://postgis.net/docs/RT_ST_MinConvexHull.html + + Return type: :class:`geoalchemy2.types.Geometry`.""" + ... + +@_generic_function +def ST_SameAlignment(*args: Any, **kwargs: Any) -> None: + """Returns true if rasters have same skew, scale, spatial ref, and offset (pixels can be put on same grid without cutting into pixels) and false if they don't with notice detailing issue. + + see http://postgis.net/docs/RT_ST_SameAlignment.html""" + ... + +@_generic_function +def ST_NotSameAlignmentReason(*args: Any, **kwargs: Any) -> None: + """Returns text stating if rasters are aligned and if not aligned, a reason why. + + see http://postgis.net/docs/RT_ST_NotSameAlignmentReason.html""" + ... + +@_generic_function +def ST_Distance_Sphere(*args: Any, **kwargs: Any) -> None: + """Returns minimum distance in meters between two lon/lat geometries. Uses a spherical earth and radius of 6370986 meters. Faster than ``ST_Distance_Spheroid``, but less accurate. PostGIS versions prior to 1.5 only implemented for points. + + see http://postgis.net/docs/ST_Distance_Sphere.html""" + ... diff --git a/geoalchemy2/py.typed b/geoalchemy2/py.typed new file mode 100644 index 00000000..e69de29b diff --git a/setup.py b/setup.py index f48b3369..3bf074e7 100644 --- a/setup.py +++ b/setup.py @@ -34,7 +34,7 @@ include_package_data=True, zip_safe=False, setup_requires=["setuptools_scm"], - install_requires=["SQLAlchemy>=1.4", "packaging"], + install_requires=["SQLAlchemy>=1.4", "packaging", "typing_extensions"], extras_require={ "shapely": ["Shapely>=1.7"], }, diff --git a/tests/test_functions.py b/tests/test_functions.py index f359b3e6..c1eae2dd 100644 --- a/tests/test_functions.py +++ b/tests/test_functions.py @@ -1,8 +1,10 @@ import re +from pathlib import Path from sqlalchemy.sql import func import geoalchemy2.functions # NOQA +from geoalchemy2._functions_helpers import _generate_stubs from geoalchemy2.types import Raster # NOQA # @@ -44,6 +46,13 @@ def _test_raster_returning_func(name, *args, **kwargs): ) +def test_stubs_up_to_date(): + geoalchemy2_path = Path(geoalchemy2.__file__).parent + current_stubs = (geoalchemy2_path / "functions.pyi").read_text() + generated_stubs = _generate_stubs() + assert current_stubs == generated_stubs + + # # Geometry Constructors #