ST_Within
If spatial object g1
is completely inside of spatial object g2
, then ST_Within returns true. Both parameters must be the same spatial data type. Either specify two GEOMETRY objects or two GEOGRAPHY objects.
If an object such as a point or linestring only exists along a polygon's boundary, then ST_Within returns false. The interior of a linestring is all the points along the linestring except the start and end points.
ST_Within(g1
,
g2
)
is functionally equivalent to ST_Contains(g2
,
g1
)
.
GEOGRAPHY Polygons with a vertex or border on the International Date Line (IDL) or the North or South pole are not supported.
Behavior Type
Syntax
ST_Within( g1, g2 [USING PARAMETERS spheroid={true | false}] )
Arguments
g1 |
Spatial object, type GEOMETRY or GEOGRAPHY |
g2
|
Spatial object, type GEOMETRY or GEOGRAPHY |
Parameters
spheroid = {true | false} |
(Optional) BOOLEAN that specifies whether to use a perfect sphere or WGS84. Default: False |
Returns
BOOLEAN
Supported Data Types
Data Type | GEOMETRY | GEOGRAPHY (Perfect Sphere) | GEOGRAPHY (WGS84) |
Point |
Yes |
Yes |
Yes |
Multipoint |
Yes |
No |
No |
Linestring |
Yes |
Yes |
No |
Multilinestring |
Yes |
No |
No |
Polygon |
Yes |
Yes |
Yes |
Multipolygon |
Yes |
Yes |
No |
GeometryCollection |
Yes |
No |
No |
Compatible GEOGRAPHY pairs:
Data Type | GEOGRAPHY (Perfect Sphere) | GEOGRAPHY (WGS84) |
Point-Point | Yes | No |
Point-Linestring | Yes | No |
Point-Polygon | Yes | Yes |
Point-Multipolygon | Yes | No |
Examples
The following examples show how to use ST_Within.
The first polygon is completely contained within the second polygon:
=> SELECT ST_Within(ST_GeomFromText('POLYGON((0 2,1 1,0 -1,0 2))'), ST_GeomFromText('POLYGON((-1 3,2 1,0 -3,-1 3))')); ST_Within ----------- t (1 row)
The point is on a vertex of the polygon, but not in its interior:
=> SELECT ST_Within (ST_GeographyFromText('POINT(30 25)'), ST_GeographyFromText('POLYGON((25 25,25 35,32.2 35,30 25,25 25))')); ST_Within ----------- f (1 row)
Two polygons are spatially equivalent:
=> SELECT ST_Within (ST_GeomFromText('POLYGON((-1 2, 0 3, 0 1, -1 2))'), ST_GeomFromText('POLYGON((0 3, -1 2, 0 1, 0 3))')); ST_Within ----------- t (1 row)