# Основные геометрические функции PostGIS

# Основные функции PostGIS

Полный справочник фукций (англ.)

### 8.5.27 ST_Transform

ST_Transform — Returns a new geometry with its coordinates transformed to the SRID referenced by the integer parameter.

Возвращает новую геометрию с координатами, трансформированными в систему координат, указанную в целочисленном параметре srid.

#### Synopsis

**geometry ST_Transform(geometry g1, integer srid);**

Description

Returns a new geometry with its coordinates transformed to spatial reference system referenced by the SRID integer parameter.

The destination SRID must exist in the SPATIAL_REF_SYS table.

ST_Transform is often confused with ST_SetSRID(). ST_Transform actually changes the coordinates of a geometry from one

spatial reference system to another, while ST_SetSRID() simply changes the SRID identifier of the geometry

### 8.7.15 <->

<-> — Returns the distance between two points. For point / point checks it uses floating point accuracy (as opposed to the double

precision accuracy of the underlying point geometry). For other geometry types the distance between the floating point bounding

box centroids is returned. Useful for doing distance ordering and nearest neighbor limits using KNN gist functionality.

Synopsis

**double precision <->( geometry A , geometry B );**

Description

The <-> operator returns distance between two points read from the spatial index for points (float precision). For other geometries

it returns the distance from centroid of bounding box of geometries. Useful for doing nearest neighbor approximate distance

ordering.

### 8.8.9 ST_Area

ST_Area — Returns the area of the surface if it is a polygon or multi-polygon. For "geometry" type area is in SRID units. For

"geography" area is in square meters.

Synopsis

**float ST_Area(geometry g1);
float ST_Area(geography geog, boolean use_spheroid=true);**

Description

Returns the area of the geometry if it is a polygon or multi-polygon. Return the area measurement of an ST_Surface or

ST_MultiSurface value. For geometry Area is in the units of the srid. For geography area is in square meters and defaults

to measuring about the spheroid of the geography (currently only WGS84). To measure around the faster but less accurate sphere

-- ST_Area(geog,false).

### 8.8.11 ST_Centroid

ST_Centroid— Returns the geometric center of a geometry.

Synopsis

**geometry ST_Centroid(geometry g1);**

Description

Computes the geometric center of a geometry, or equivalently, the center of mass of the geometry as a POINT. For [MULTI]POINTs,

this is computed as the arithmetic mean of the input coordinates. For [MULTI]LINESTRINGs, this is computed as the

weighted length of each line segment. For [MULTI]POLYGONs, "weight" is thought in terms of area. If an empty geometry is

supplied, an empty GEOMETRYCOLLECTION is returned. If NULL is supplied, NULL is returned.

The centroid is equal to the centroid of the set of component Geometries of highest dimension (since the lower-dimension

geometries contribute zero "weight" to the centroid).

### 8.8.13 ST_Contains

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.

Synopsis

**boolean ST_Contains(geometry geomA, geometry geomB);**

Description

Geometry A contains Geometry B 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. An important subtlety of this definition is that A does not contain its boundary, but A does contain itself.

Contrast that to ST_ContainsProperly where geometry A does not Contain Properly itself.

Returns TRUE if geometry B is completely inside geometry A. For this function to make sense, the source geometries must both

be of the same coordinate projection, having the same SRID. ST_Contains is the inverse of ST_Within. So ST_Contains(A,B)

implies ST_Within(B,A) except in the case of invalid geometries where the result is always false regardless or not defined.

### 8.8.14 ST_ContainsProperly

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.

Synopsis

**boolean ST_ContainsProperly(geometry geomA, geometry geomB);**

Description

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.

### 8.8.17 ST_Crosses

ST_Crosses— Returns TRUE if the supplied geometries have some, but not all, interior points in common.

Synopsis

**boolean ST_Crosses(geometry g1, geometry g2);**

Description

ST_Crosses takes two geometry objects and returns TRUE if their intersection "spatially cross", that is, the geometries have

some, but not all interior points in common. The intersection of the interiors of the geometries must not be the empty set and

must have a dimensionality less than the the maximum dimension of the two input geometries. Additionally, the intersection of

the two geometries must not equal either of the source geometries. Otherwise, it returns FALSE.

### 8.8.19 ST_Disjoint

ST_Disjoint— Returns TRUE if the Geometries do not "spatially intersect" - if they do not share any space together.

Synopsis

**boolean ST_Disjoint( geometry A , geometry B );**

Description

Overlaps, Touches, Within all imply geometries are not spatially disjoint. If any of the aforementioned returns true, then the

geometries are not spatially disjoint. Disjoint implies false for spatial intersection.

### 8.8.20 ST_Distance

ST_Distance — For geometry type Returns the 2-dimensional cartesian minimum distance (based on spatial ref) between two

geometries in projected units. For geography type defaults to return spheroidal minimum distance between two geographies in

meters.

Synopsis

**float ST_Distance(geometry g1, geometry g2);
float ST_Distance(geography gg1, geography gg2);
float ST_Distance(geography gg1, geography gg2, boolean use_spheroid);**

Description

For geometry type returns the 2-dimensional minimum cartesian distance between two geometries in projected units (spatial ref

units). For geography type defaults to return the minimum distance around WGS 84 spheroid between two geographies in meters.

Pass in false to return answer in sphere instead of spheroid.

### 8.8.23 ST_Distance_Sphere

ST_Distance_Sphere — Returns minimum distance in meters between two lon/lat geometries. Uses a spherical earth and radius

of 6370986 meters. Faster than ST_Distance_Spheroid ST_Distance_Spheroid, but less accurate. PostGIS versions prior to 1.5

only implemented for points.

Synopsis

**float ST_Distance_Sphere(geometry geomlonlatA, geometry geomlonlatB);**

Description

Returns minimum distance in meters between two lon/lat points. 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.

Note

This function currently does not look at the SRID of a geometry and will always assume its in WGS 84 long lat. Prior

versions of this function only support points.

### 8.8.29 ST_Intersects

ST_Intersects — 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)

Synopsis

**boolean ST_Intersects( geometry geomA , geometry geomB );
boolean ST_Intersects( geography geogA , geography geogB );**

Description

If a geometry or geography shares any portion of space then they intersect. For geography -- tolerance is 0.00001 meters (so any

points that are close are considered to intersect)

Overlaps, Touches, Within all imply spatial intersection. If any of the aforementioned returns true, then the geometries also

spatially intersect. Disjoint implies false for spatial intersection.

### 8.8.30 ST_Length

ST_Length — Returns the 2d length of the geometry if it is a linestring or multilinestring. geometry are in units of spatial

reference and geography are in meters (default spheroid)

Synopsis

**float ST_Length(geometry a_2dlinestring);
float ST_Length(geography geog, boolean use_spheroid=true);**

Description

For geometry: Returns the cartesian 2D length of the geometry if it is a linestring, multilinestring, ST_Curve, ST_MultiCurve. 0

is returned for areal geometries. For areal geometries use ST_Perimeter. Geometry: Measurements are in the units of the spatial

reference system of the geometry. Geography: Units are in meters and also acts as a Perimeter function for areal geogs.

Currently for geometry this is an alias for ST_Length2D, but this may change to support higher dimensions.

### 8.8.39 ST_Perimeter

ST_Perimeter—Return the length measurement of the boundary of an ST_Surface or ST_MultiSurface geometry or geography.

(Polygon, Multipolygon). geometry measurement is in units of spatial reference and geography is in meters.

Synopsis

**float ST_Perimeter(geometry g1);
float ST_Perimeter(geography geog, boolean use_spheroid=true);**

Description

Returns the 2D perimeter of the geometry/geography if it is a ST_Surface, ST_MultiSurface (Polygon, Multipolygon). 0 is

returned for non-areal geometries. For linestrings use ST_Length. Measurements for geometry are in the units of the spatial

reference system of the geometry. Measurements for geography are in meters. If use_spheroid is set to false, then will

model earth as a sphere instead of a spheroid.

Currently this is an alias for ST_Perimeter2D, but this may change to support higher dimensions.

### 8.8.47 ST_Touches

ST_Touches— Returns TRUE if the geometries have at least one point in common, but their interiors do not intersect.

Synopsis

**boolean ST_Touches(geometry g1, geometry g2);**

Description

Returns TRUE if the only points in common between g1 and g2 lie in the union of the boundaries of g1 and g2. The ST_Touches

relation applies to all Area/Area, Line/Line, Line/Area, Point/Area and Point/Line pairs of relationships, but not to the

Point/Point pair.

### 8.8.48 ST_Within

ST_Within— Returns true if the geometry A is completely inside geometry B

Synopsis

**boolean ST_Within(geometry A, geometry B);**

Description

Returns TRUE if geometry A is completely inside geometry B. For this function to make sense, the source geometries must both

be of the same coordinate projection, having the same SRID. It is a given that if ST_Within(A,B) is true and ST_Within(B,A) is

true, then the two geometries are considered spatially equal.

### 8.10.1 ST_Buffer

ST_Buffer — (T) For geometry: 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. For geography: Uses a planar

transform wrapper. Introduced in 1.5 support for different end cap and mitre settings to control shape. buffer_style options:

quad_segs=#,endcap=round|flat|square,join=round|mitre|bevel,mitre_limit=#.#

Synopsis

**geometry ST_Buffer(geometry g1, float radius_of_buffer);
geometry ST_Buffer(geometry g1, float radius_of_buffer, integer num_seg_quarter_circle);
geometry ST_Buffer(geometry g1, float radius_of_buffer, text buffer_style_parameters);
geography ST_Buffer(geography g1, float radius_of_buffer_in_meters);**

Description

Returns a geometry/geography that represents all points whose distance from this Geometry/geography is less than or equal to

distance.

Geometry: Calculations are in the Spatial Reference System of the geometry. Introduced in 1.5 support for different end cap and

mitre settings to control shape.

### 8.10.8 ST_Difference

ST_Difference— Returns a geometry that represents that part of geometry A that does not intersect with geometry B.

Synopsis

**geometry ST_Difference(geometry geomA, geometry geomB);**

Description

Returns a geometry that represents that part of geometry A that does not intersect with geometry B. One can think of this as

GeometryA - ST_Intersection(A,B). If A is completely contained in B then an empty geometry collection is returned.

### 8.10.13 ST_Intersection

ST_Intersection — (T) Returns a geometry that represents the shared portion of geomA and geomB. The geography implementation

does a transform to geometry to do the intersection and then transform back to WGS84.

Synopsis

**geometry ST_Intersection( geometry geomA , geometry geomB );
geography ST_Intersection( geography geogA , geography geogB );**

Description

Returns a geometry that represents the point set intersection of the Geometries.

In other words - that portion of geometry A and geometry B that is shared between the two geometries.

If the geometries do not share any space (are disjoint), then an empty geometry collection is returned.

ST_Intersection in conjunction with ST_Intersects is very useful for clipping geometries such as in bounding box, buffer, region

queries where you only want to return that portion of a geometry that sits in a country or region of interest.

### 8.10.26 ST_Split

ST_Split— Returns a collection of geometries resulting by splitting a geometry.

Synopsis

**geometry ST_Split(geometry input, geometry blade);**

Description

The function supports splitting a line by point, a line by line, a polygon by line. The returned geometry is always a collection.

Think of this function as the opposite of ST_Union. Theoretically applying ST_Union to the elements of the returned collection

should always yield the original geometry.

Availability: 2.0.0

### 8.10.27 ST_SymDifference

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).

Synopsis

**geometry ST_SymDifference(geometry geomA, geometry geomB);**

Description

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). One can think of this as ST_Union(geomA,geomB) - ST_Intersection(A,B).

### 8.10.28 ST_Union

ST_Union— Returns a geometry that represents the point set union of the Geometries.

Synopsis

**geometry ST_Union(geometry set g1field);
geometry ST_Union(geometry g1, geometry g2);
geometry ST_Union(geometry[] g1_array);**

Description

Output type can be a MULTI*, single geometry, or Geometry Collection. Comes in 2 variants. Variant 1 unions 2 geometries

resulting in a new geometry with no intersecting regions. Variant 2 is an aggregate function that takes a set of geometries and

unions them into a single ST_Geometry resulting in no intersecting regions.

Aggregate version: This function returns a MULTI geometry or NON-MULTI geometry from a set of geometries. The ST_Union()

function is an "aggregate" function in the terminology of PostgreSQL. That means that it operates on rows of data, in the same

way the SUM() and AVG() functions do and like most aggregates, it also ignores NULL geometries.

Non-Aggregate version: This function returns a geometry being a union of two input geometries. Output type can be a MULTI*,

NON-MULTI or GEOMETRYCOLLECTION. If any are NULL, then NULL is returned.

- Войдите или зарегистрируйтесь, чтобы отправлять комментарии