Chapter 7. PostGIS Reference

Table of Contents

7.1. Management Functions
7.2. Geometry Constructors
7.3. Geometry Accessors
7.4. Geometry Editors
7.5. Geometry Outputs
7.6. Operators
7.7. Spatial Relationships and Measurements
7.8. Geometry Processing Functions
7.9. Linear Referencing
7.10. Long Transactions Support
7.11. Miscellaneous Functions
7.12. Exceptional Functions

The functions given below are the ones which a user of PostGIS is likely to need. There are other functions which are required support functions to the PostGIS objects which are not of use to a general user.

[Note]

PostGIS has begun a transition from the existing naming convention to an SQL-MM-centric convention. As a result, most of the functions that you know and love have been renamed using the standard spatial type (ST) prefix. Previous functions are still available, though are not listed in this document where updated functions are equivalent. These will be deprecated in a future release.

7.1. Management Functions

AddGeometryColumn - Adds a geometry column to an existing table of attributes.
DropGeometryColumn - Removes a geometry column from a spatial table.
DropGeometryTable - Drops a table and all its references in geometry_columns.
PostGIS_Full_Version - Reports full postgis version and build configuration infos.
PostGIS_GEOS_Version - Returns the version number of the GEOS library.
PostGIS_Lib_Build_Date - Returns build date of the PostGIS library.
PostGIS_Lib_Version - Returns the version number of the PostGIS library.
PostGIS_PROJ_Version - Returns the version number of the PROJ4 library.
PostGIS_Scripts_Build_Date - Returns build date of the PostGIS scripts.
PostGIS_Scripts_Installed - Returns version of the postgis scripts installed in this database.
PostGIS_Scripts_Released - Returns the version number of the lwpostgis.sql script released with the installed postgis lib.
PostGIS_Uses_Stats - Returns TRUE if STATS usage has been enabled.
PostGIS_Version - Returns PostGIS version number and compile-time options.
Populate_Geometry_Columns - Ensures geometry columns have appropriate spatial constraints and exist in the geometry_columns table.
Probe_Geometry_Columns - Scans all tables with PostGIS geometry constraints and adds them to the geometry_columns table if they are not there.
UpdateGeometrySRID - Updates the SRID of all features in a geometry column, geometry_columns metadata and srid table constraint

7.2. Geometry Constructors

ST_BdPolyFromText - Construct a Polygon given an arbitrary collection of closed linestrings as a MultiLineString Well-Known text representation.
ST_BdMPolyFromText - Construct a MultiPolygon given an arbitrary collection of closed linestrings as a MultiLineString text representation Well-Known text representation.
ST_GeomCollFromText - Makes a collection Geometry from collection WKT with the given SRID. If SRID is not give, it defaults to -1.
ST_GeomFromEWKB - Return a specified ST_Geometry value from Extended Well-Known Binary representation (EWKB).
ST_GeomFromEWKT - Return a specified ST_Geometry value from Extended Well-Known Text representation (EWKT).
ST_GeometryFromText - Return a specified ST_Geometry value from Well-Known Text representation (WKT). This is an alias name for ST_GeomFromText
ST_GeomFromText - Return a specified ST_Geometry value from Well-Known Text representation (WKT).
ST_GeomFromWKB - Creates a geometry instance from a Well-Known Binary geometry representation (WKB) and optional SRID.
ST_LineFromMultiPoint - Creates a LineString from a MultiPoint geometry.
ST_LineFromText - Makes a Geometry from WKT representation with the given SRID. If SRID is not given, it defaults to -1.
ST_LineFromWKB - Makes a LINESTRING from WKB with the given SRID
ST_LinestringFromWKB - Makes a geometry from WKB with the given SRID.
ST_MakeBox2D - Creates a BOX2D defined by the given point geometries.
ST_MakeBox3D - Creates a BOX3D defined by the given 3d point geometries.
ST_MakeLine - Creates a Linestring from point geometries.
ST_MakePolygon - Creates a Polygon formed by the given shell. Input geometries must be closed LINESTRINGS.
ST_MakePoint - Creates a 2D,3DZ or 4D point geometry.
ST_MakePointM - Creates a point geometry with an x y and m coordinate.
ST_MLineFromText - Return a specified ST_MultiLineString value from WKT representation.
ST_MPointFromText - Makes a Geometry from WKT with the given SRID. If SRID is not give, it defaults to -1.
ST_MPolyFromText - Makes a MultiPolygon Geometry from WKT with the given SRID. If SRID is not give, it defaults to -1.
ST_Point - Returns an ST_Point with the given coordinate values. OGC alias for ST_MakePoint.
ST_PointFromText - Makes a point Geometry from WKT with the given SRID. If SRID is not given, it defaults to unknown.
ST_PointFromWKB - Makes a geometry from WKB with the given SRID
ST_Polygon - Returns a polygon built from the specified linestring and SRID.
ST_PolygonFromText - Makes a Geometry from WKT with the given SRID. If SRID is not give, it defaults to -1.
ST_WKBToSQL - Return a specified ST_Geometry value from Well-Known Binary representation (WKB). This is an alias name for ST_GeomFromWKB that takes no srid
ST_WKTToSQL - Return a specified ST_Geometry value from Well-Known Text representation (WKT). This is an alias name for ST_GeomFromText

7.3. Geometry Accessors

GeometryType - Returns the type of the geometry as a string. Eg: 'LINESTRING', 'POLYGON', 'MULTIPOINT', etc.
ST_Boundary - Returns the closure of the combinatorial boundary of this Geometry.
ST_CoordDim - Return the coordinate dimension of the ST_Geometry value.
ST_Dimension - The inherent dimension of this Geometry object, which must be less than or equal to the coordinate dimension.
ST_EndPoint - Returns the last point of a LINESTRING geometry as a POINT.
ST_Envelope - Returns a geometry representing the bounding box of the supplied geometry.
ST_ExteriorRing - Returns a line string representing the exterior ring of the POLYGON geometry. Return NULL if the geometry is not a polygon. Will not work with MULTIPOLYGON
ST_GeometryN - Return the 1-based Nth geometry if the geometry is a GEOMETRYCOLLECTION, MULTIPOINT, MULTILINESTRING, MULTICURVE or MULTIPOLYGON. Otherwise, return NULL.
ST_GeometryType - Return the geometry type of the ST_Geometry value.
ST_InteriorRingN - Return the Nth interior linestring ring of the polygon geometry. Return NULL if the geometry is not a polygon or the given N is out of range.
ST_IsClosed - Returns TRUE if the LINESTRING's start and end points are coincident.
ST_IsEmpty - Returns true if this Geometry is an empty geometry . If true, then this Geometry represents the empty point set - i.e. GEOMETRYCOLLECTION(EMPTY).
ST_IsRing - Returns TRUE if this LINESTRING is both closed and simple.
ST_IsSimple - Returns (TRUE) if this Geometry has no anomalous geometric points, such as self intersection or self tangency.
ST_IsValid - Returns true if the ST_Geometry is well formed.
ST_IsValidReason - Returns text stating if a geometry is valid or not and if not valid, a reason why.
ST_M - Return the M coordinate of the point, or NULL if not available. Input must be a point.
ST_NDims - Returns coordinate dimension of the geometry as a small int. Values are: 2,3 or 4.
ST_NPoints - Return the number of points (vertexes) in a geometry.
ST_NRings - If the geometry is a polygon or multi-polygon returns the number of rings.
ST_NumGeometries - If geometry is a GEOMETRYCOLLECTION (or MULTI*) return the number of geometries, otherwise return NULL.
ST_NumInteriorRings - Return the number of interior rings of the first polygon in the geometry. This will work with both POLYGON and MULTIPOLYGON types but only looks at the first polygon. Return NULL if there is no polygon in the geometry.
ST_NumInteriorRing - Return the number of interior rings of the first polygon in the geometry. Synonym to ST_NumInteriorRings.
ST_NumPoints - Return the number of points in an ST_LineString or ST_CircularString value.
ST_PointN - Return the Nth point in the first linestring or circular linestring in the geometry. Return NULL if there is no linestring in the geometry.
ST_SRID - Returns the spatial reference identifier for the ST_Geometry as defined in spatial_ref_sys table.
ST_StartPoint - Returns the first point of a LINESTRING geometry as a POINT.
ST_Summary - Returns a text summary of the contents of the ST_Geometry.
ST_X - Return the X coordinate of the point, or NULL if not available. Input must be a point.
ST_Y - Return the Y coordinate of the point, or NULL if not available. Input must be a point.
ST_Z - Return the Z coordinate of the point, or NULL if not available. Input must be a point.
ST_Zmflag - Returns ZM (dimension semantic) flag of the geometries as a small int. Values are: 0=2d, 1=3dm, 2=3dz, 3=4d.

7.4. Geometry Editors

ST_AddPoint - Adds a point to a LineString before point <position> (0-based index).
ST_Affine - Applies a 3d affine transformation to the geometry to do things like translate, rotate, scale in one step.
ST_Force_2D - Forces the geometries into a "2-dimensional mode" so that all output representations will only have the X and Y coordinates.
ST_Force_3D - Forces the geometries into XYZ mode. This is an alias for ST_Force_3DZ.
ST_Force_3DZ - Forces the geometries into XYZ mode. This is a synonym for ST_Force_3D.
ST_Force_3DM - Forces the geometries into XYM mode.
ST_Force_4D - Forces the geometries into XYZM mode.
ST_Force_Collection - Converts the geometry into a GEOMETRYCOLLECTION.
ST_ForceRHR - Forces the orientation of the vertices in a polygon to follow the Right-Hand-Rule.
ST_LineMerge - Returns a (set of) LineString(s) formed by sewing together a MULTILINESTRING.
ST_Multi - Returns the geometry as a MULTI* geometry. If the geometry is already a MULTI*, it is returned unchanged.
ST_RemovePoint - Removes point from a linestring. Offset is 0-based.
ST_Reverse - Returns the geometry with vertex order reversed.
ST_Rotate - This is a synonym for ST_RotateZ
ST_RotateX - Rotate a geometry rotRadians about the X axis.
ST_RotateY - Rotate a geometry rotRadians about the Y axis.
ST_RotateZ - Rotate a geometry rotRadians about the Z axis.
ST_Scale - Scales the geometry to a new size by multiplying the ordinates with the parameters. Ie: ST_Scale(geom, Xfactor, Yfactor, Zfactor).
ST_Segmentize - Return a modified geometry having no segment longer than the given distance. Distance computation is performed in 2d only.
ST_SetPoint - Replace point N of linestring with given point. Index is 0-based.
ST_SetSRID - Sets the SRID on a geometry to a particular integer value.
ST_SnapToGrid - Snap all points of the input geometry to the grid defined by its origin and cell size. Remove consecutive points falling on the same cell, eventually returning NULL if output points are not enough to define a geometry of the given type. Collapsed geometries in a collection are stripped from it. Useful for reducing precision.
ST_Transform - Returns a new geometry with its coordinates transformed to the SRID referenced by the integer parameter.
ST_Translate - Translates the geometry to a new location using the numeric parameters as offsets. Ie: ST_Translate(geom, X, Y) or ST_Translate(geom, X, Y,Z).
ST_TransScale - Translates the geometry using the deltaX and deltaY args, then scales it using the XFactor, YFactor args, working in 2D only.

7.5. Geometry Outputs

ST_AsBinary - Return the Well-Known Binary (WKB) representation of the geometry without SRID meta data.
ST_AsEWKB - Return the Well-Known Binary (WKB) representation of the geometry with SRID meta data.
ST_AsEWKT - Return the Well-Known Text (WKT) representation of the geometry with SRID meta data.
ST_AsGeoJSON - Return the geometry as a GeoJSON element.
ST_AsGML - Return the geometry as a GML version 2 or 3 element.
ST_AsHEXEWKB - Returns a Geometry in HEXEWKB format (as text) using either little-endian (NDR) or big-endian (XDR) encoding.
ST_AsKML - Return the geometry as a KML element. Several variants. Default version=2, default precision=15
ST_AsSVG - Returns a Geometry in SVG path data.
ST_GeoHash - Return a GeoHash representation (geohash.org) of the geometry.
ST_AsText - Return the Well-Known Text (WKT) representation of the geometry without SRID metadata.

7.6. Operators

&& - Returns TRUE if A's bounding box overlaps B's.
&< - Returns TRUE if A's bounding box overlaps or is to the left of B's.
&<| - Returns TRUE if A's bounding box overlaps or is below B's.
&> - Returns TRUE if A' bounding box overlaps or is to the right of B's.
<< - Returns TRUE if A's bounding box is strictly to the left of B's.
<<| - Returns TRUE if A's bounding box is strictly below B's.
= - Returns TRUE if A's bounding box is the same as B's.
>> - Returns TRUE if A's bounding box is strictly to the right of B's.
@ - Returns TRUE if A's bounding box is contained by B's.
|&> - Returns TRUE if A's bounding box overlaps or is above B's.
|>> - Returns TRUE if A's bounding box is strictly above B's.
~ - Returns TRUE if A's bounding box contains B's.
~= - Returns TRUE if the geometry A is the same as B.

7.7. Spatial Relationships and Measurements

ST_Area - Returns the area of the geometry if it is a polygon or multi-polygon.
ST_Azimuth - Returns the angle in radians from the horizontal of the vector defined by pointA and pointB
ST_Centroid - Returns the geometric center of a geometry.
ST_Contains - 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.
ST_ContainsProperly - 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.
ST_Covers - Returns 1 (TRUE) if no point in Geometry B is outside Geometry A
ST_CoveredBy - Returns 1 (TRUE) if no point in Geometry A is outside Geometry B
ST_Crosses - Returns TRUE if the supplied geometries have some, but not all, interior points in common.
ST_LineCrossingDirection - Given 2 linestrings, returns a number between -3 and 3 denoting what kind of crossing behavior. 0 is no crossing.
ST_Disjoint - Returns TRUE if the Geometries do not "spatially intersect" - if they do not share any space together.
ST_Distance - Returns the 2-dimensional cartesian minimum distance between two geometries in projected units.
ST_Distance_Sphere - Returns linear distance in meters between two lon/lat points. Uses a spherical earth and radius of 6370986 meters. Faster than , but less accurate. Only implemented for points.
ST_Distance_Spheroid - Returns linear distance between two lon/lat points given a particular spheroid. Currently only implemented for points.
ST_DWithin - Returns true if the geometries are within the specified distance of one another
ST_Equals - Returns true if the given geometries represent the same geometry. Directionality is ignored.
ST_HasArc - Returns true if a geometry or geometry collection contains a circular string
ST_Intersects - Returns TRUE if the Geometries "spatially intersect" - (share any portion of space) and FALSE if they don't (they are Disjoint).
ST_Length - Returns the 2d length of the geometry if it is a linestring or multilinestring.
ST_Length2D - Returns the 2-dimensional length of the geometry if it is a linestring or multi-linestring. This is an alias for ST_Length
ST_Length3D - Returns the 3-dimensional or 2-dimensional length of the geometry if it is a linestring or multi-linestring.
ST_Length_Spheroid - Calculates the 2D or 3D length of a linestring/multilinestring on an ellipsoid. This is useful if the coordinates of the geometry are in longitude/latitude and a length is desired without reprojection.
ST_Length2D_Spheroid - Calculates the 2D length of a linestring/multilinestring on an ellipsoid. This is useful if the coordinates of the geometry are in longitude/latitude and a length is desired without reprojection.
ST_Length3D_Spheroid - Calculates the length of a geometry on an ellipsoid, taking the elevation into account. This is just an alias for ST_Length_Spheroid.
ST_Max_Distance - Returns the 2-dimensional largest distance between two geometries in projected units.
ST_OrderingEquals - Returns true if the given geometries represent the same geometry and points are in the same directional order.
ST_Overlaps - Returns TRUE if the Geometries share space, are of the same dimension, but are not completely contained by each other.
ST_Perimeter - Return the length measurement of the boundary of an ST_Surface or ST_MultiSurface value. (Polygon, Multipolygon)
ST_Perimeter2D - Returns the 2-dimensional perimeter of the geometry, if it is a polygon or multi-polygon. This is currently an alias for ST_Perimeter.
ST_Perimeter3D - Returns the 3-dimensional perimeter of the geometry, if it is a polygon or multi-polygon.
ST_PointOnSurface - Returns a POINT guaranteed to lie on the surface.
ST_Relate - 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.
ST_Touches - Returns TRUE if the geometries have at least one point in common, but their interiors do not intersect.
ST_Within - Returns true if the geometry A is completely inside geometry B

7.8. Geometry Processing Functions

ST_Buffer - Returns a geometry that represents all points whose distance from this Geometry is less than or equal to distance. Calculations are in the Spatial Reference System of this Geometry. The optional third parameter sets the number of segments used to approximate a quarter circle (defaults to 8).
ST_BuildArea - Creates an areal geometry formed by the constituent linework of given geometry
ST_Collect - Return a specified ST_Geometry value from a collection of other geometries.
ST_ConvexHull - The convex hull of a geometry represents the minimum convex geometry that encloses all geometries within the set.
ST_CurveToLine - Converts a CIRCULARSTRING/CURVEDPOLYGON to a LINESTRING/POLYGON
ST_Difference - Returns a geometry that represents that part of geometry A that does not intersect with geometry B.
ST_Dump - Returns a set of geometry_dump (geom,path) rows, that make up a geometry g1.
ST_DumpRings - Returns a set of geometry_dump rows, representing the exterior and interior rings of a polygon.
ST_Intersection - Returns a geometry that represents the shared portion of geomA and geomB
ST_LineToCurve - Converts a LINESTRING/POLYGON to a CIRCULARSTRING, CURVED POLYGON
ST_MemUnion - Same as ST_Union, only memory-friendly (uses less memory and more processor time).
ST_MinimumBoundingCircle - Returns the smallest circle polygon that can fully contain a geometry. Default uses 48 segments per quarter circle.
ST_Polygonize - Aggregate. Creates a GeometryCollection containing possible polygons formed from the constituent linework of a set of geometries.
ST_Shift_Longitude - Reads every point/vertex in every component of every feature in a geometry, and if the longitude coordinate is <0, adds 360 to it. The result would be a 0-360 version of the data to be plotted in a 180 centric map
ST_Simplify - Returns a "simplified" version of the given geometry using the Douglas-Peuker algorithm.
ST_SimplifyPreserveTopology - Returns a "simplified" version of the given geometry using the Douglas-Peuker algorithm. Will avoid creating derived geometries (polygons in particular) that are invalid.
ST_SymDifference - 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).
ST_Union - Returns a geometry that represents the point set union of the Geometries.

7.9. Linear Referencing

ST_Line_Interpolate_Point - 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.
ST_Line_Locate_Point - 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.
ST_Line_Substring - 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.
ST_Locate_Along_Measure - Return a derived geometry collection value with elements that match the specified measure. Polygonal elements are not supported.
ST_Locate_Between_Measures - Return a derived geometry collection value with elements that match the specified range of measures inclusively. Polygonal elements are not supported.
ST_LocateBetweenElevations - Return a derived geometry (collection) value with elements that intersect the specified range of elevations inclusively. Only 3D, 4D LINESTRINGS and MULTILINESTRINGS are supported.

7.10. Long Transactions Support

AddAuth - Add an authorization token to be used in current transaction.
CheckAuth - Creates trigger on a table to prevent/allow updates and deletes of rows based on authorization token.
DisableLongTransactions - Disable long transaction support. This function removes the long transaction support metadata tables, and drops all triggers attached to lock-checked tables.
EnableLongTransactions - Enable long transaction support. This function creates the required metadata tables, needs to be called once before using the other functions in this section. Calling it twice is harmless.
LockRow - Set lock/authorization for specific row in table
UnlockRows - Remove all locks held by specified authorization id. Returns the number of locks released.

This module and associated pl/pgsql functions have been implemented to provide long locking support required by Web Feature Service specification.

[Note]

Users must use serializable transaction level otherwise locking mechanism would break.

7.11. Miscellaneous Functions

ST_Accum - Aggregate. Constructs an array of geometries.
ST_Box2D - Returns a BOX2D representing the maximum extents of the geometry.
ST_Box3D - Returns a BOX3D representing the maximum extents of the geometry.
ST_Estimated_Extent - Return the 'estimated' extent of the given spatial table. The estimated is taken from the geometry column's statistics. The current schema will be used if not specified.
ST_Expand - Returns bounding box expanded in all directions from the bounding box of the input geometry
ST_Extent - an aggregate function that returns the bounding box that bounds rows of geometries.
ST_Extent3D - an aggregate function that returns the box3D bounding box that bounds rows of geometries.
Find_SRID - The syntax is find_srid(<db/schema>, <table>, <column>) and the function returns the integer SRID of the specified column by searching through the GEOMETRY_COLUMNS table.
ST_Mem_Size - Returns the amount of space (in bytes) the geometry takes.
ST_Point_Inside_Circle - Is the point geometry insert circle defined by center_x, center_y , radius
ST_XMax - Returns X maxima of a bounding box 2d or 3d or a geometry.
ST_XMin - Returns X minima of a bounding box 2d or 3d or a geometry.
ST_YMax - Returns Y maxima of a bounding box 2d or 3d or a geometry.
ST_YMin - Returns Y minima of a bounding box 2d or 3d or a geometry.
ST_ZMax - Returns Z minima of a bounding box 2d or 3d or a geometry.
ST_ZMin - Returns Z minima of a bounding box 2d or 3d or a geometry.

7.12. Exceptional Functions

ST_AddBBox - Add bounding box to the geometry.
ST_DropBBox - Drop the bounding box cache from the geometry.
ST_HasBBox - Returns TRUE if the bbox of this geometry is cached, FALSE otherwise.

These functions are rarely used functions that should only be used if your data is corrupted in someway. They are used for troubleshooting corruption and also fixing things that should under normal circumstances, never happen.