几何对象存取函数¶
GeometryType¶
GeometryType — 该函数以字符串方式返回几何对象的几何类型,例如’LINESTRING’, ’POLYGON’, ’MULTIPOINT’等等。
示例¶
SELECT GeometryType(ST_GeomFromText('LINESTRING(77.29 29.07,77.42 29.26,77.27 29.31,77.29 29.07)'));
GEOMETRYTYPE(text) |
------------------------
LINESTRING |
总数目:1
ST_Boundary¶
ST_Boundary — 返回这个几何类型对象的边界组成的闭包。
返回值¶
返回值为geometry类型。
示例¶
SELECT ST_AsText(ST_Boundary(ST_GeomFromText('LINESTRING(1 1,0 0, -1 1)')));
ST_ASTEXT(text) |
---------------------
MULTIPOINT(1 1,-1 1) |
总数目:1
SELECT ST_AsText(ST_Boundary(ST_GeomFromText('POLYGON((1 1,0 0, -1 1, 1 1))')));
ST_ASTEXT(text) |
---------------------
LINESTRING(1 1,0 0,-1|
1,1 1) |
总数目:1
ST_CoordDim¶
ST_CoordDim — 返回ST_Geometry 值对应的几何类型的坐标维度值。等价于 ST_Ndims函数。
返回值¶
返回值为integer类型。
示例¶
SELECT ST_CoordDim('CIRCULARSTRING(1 2 3, 1 3 4, 5 6 7, 8 9 10, 11 12 13)');
ST_COORDDIM(smallint) |
---------------------------
3 |
总数目:1
SELECT ST_CoordDim(ST_Point(1,2));
ST_COORDDIM(smallint) |
---------------------------
2 |
总数目:1
ST_Dimension¶
ST_Dimension — 返回输入的几何对象固有的维度值,这个维度值必须小于或等于坐标系的维度值。
返回值¶
返回值为integer类型。
注解
Point的固有维度值是0,LINESTRING固有维度值是1,POLYGON固有维度值为2,GEOMETRYCOLLECTION 的维度值最大,如果是空几何类型,就返回NULL值。
示例¶
SELECT ST_Dimension('GEOMETRYCOLLECTION(LINESTRING(1 1,0 0),POINT(0 0))');
ST_DIMENSION(int) |
-----------------------
1 |
总数目:1
SELECT ST_Dimension('GEOMETRYCOLLECTION(POLYHEDRALSURFACE(((0 0,0 0,0 1,0 0))))'::geometry);
ST_DIMENSION(int) |
-----------------------
2 |
总数目:1
ST_EndPoint¶
ST_EndPoint — 返回一个LINESTRING的最后一个point对象。
返回值¶
返回值为geometry类型。
示例¶
SELECT ST_AsText(ST_EndPoint('LINESTRING(1 1, 2 2, 3 3)'::geometry));
ST_ASTEXT(text) |
---------------------
POINT(3 3) |
总数目:1
SELECT ST_EndPoint('POINT(1 1)'::geometry) IS NULL AS is_null;
IS_NULL(boolean) |
----------------------
true |
总数目:1
ST_Envelope¶
ST_Envelope — 从提供的geometry类型中返回一个box的边界值精度为float8的geometry类型。
返回值¶
返回值为geometry类型。
示例¶
SELECT ST_AsText(ST_Envelope('POINT(1 3)'::geometry));
ST_ASTEXT(text) |
---------------------
POINT(1 3) |
总数目:1
SELECT ST_AsText(ST_Envelope('LINESTRING(0 0, 1 3)'::geometry));
ST_ASTEXT(text) |
---------------------
POLYGON((0 0,0 3,1 3,|
1 0,0 0)) |
总数目:1
SELECT ST_AsText(ST_Envelope('POLYGON((0 0, 0 1, 1.0000001 1, 1.0000001 0, 0 0))'::geometry ));
ST_ASTEXT(text) |
---------------------
POLYGON((0 0,0 1,1.00|
00001 1,1.0000001 0,|
0 0)) |
总数目:1
SELECT ST_AsText(ST_Envelope('POLYGON((0 0, 0 1, 1.0000000001 1, 1.0000000001 0, 0 0))'::geometry));
ST_ASTEXT(text) |
---------------------
POLYGON((0 0,0 1,1.00|
00000001 1,1.0000000|
001 0,0 0)) |
总数目:1
ST_BoundingDiagonal¶
ST_BoundingDiagonal — 返回所提供几何体边界框的对角线。
参数¶
geomA
geometry类型。如果输入几何图形为空,则对角线也为空,否则它是一个两点线串,每个点的最小值在其起点,最大值在其终点。
default
boolean类型。该参数指定是否需要最佳拟合,默认值为false。如果为false,则可以接受较大边界框的对角线(对于顶点较多的几何体,获得对角线的速度更快)。在任何情况下,返回对角线的边界框始终覆盖输入几何体。
返回值¶
返回值为geometry类型。返回的线串几何图形始终保留输入几何图形的SRID和维度(Z和M存在)。
注解
在退化情况下(输入中只有一个顶点),返回的linestring在逻辑上无效(无内部)。这不会使返回在语义上无效。
示例¶
SELECT ST_X(ST_StartPoint(ST_BoundingDiagonal(ST_Buffer(ST_MakePoint(0,0),10))));
ST_X(double precision) |
----------------------------
-10 |
总数目:1
SELECT ST_AsText(ST_BoundingDiagonal(ST_Buffer(ST_MakePoint(0,0),10)));
ST_ASTEXT(text) |
---------------------
LINESTRING(-10 -10,10|
10) |
总数目:1
SELECT ST_AsText(ST_BoundingDiagonal('LINESTRINGZ(1 1 1,8 9 10,1 10 5,10 1 3)'::geometry,true));
ST_ASTEXT(text) |
---------------------
LINESTRING Z (1 1 1,1|
0 10 10) |
总数目:1
ST_ExteriorRing¶
ST_ExteriorRing — 返回一个POLYGON 几何类型的外环,如果输入类型不是POLYGON类型,返回NULL值,该函数不支持MULTIPOLYGON。
返回值¶
返回值为geometry类型。
示例¶
SELECT ST_AsEWKT(ST_ExteriorRing(ST_GeomFromEWKT('POLYGON((0 0 1, 1 1 1, 1 2 1, 1 1 1, 0 0 1))')));
ST_ASEWKT(text) |
---------------------
LINESTRING(0 0 1,1 1 |
1,1 2 1,1 1 1,0 0 1) |
总数目:1
SELECT ST_AsEWKT(ST_ExteriorRing(ST_GeomFromEWKT('LINESTRING(0 0, 1 3)')));
ST_ASEWKT(text) |
---------------------
null |
总数目:1
ST_GeometryN¶
ST_GeometryN — 该函数的输入参数是一个collection对象和一个整数N值,返回这个collection里面的第N个对象,这些collection类型可以是GEOMETRYCOLLECTION,(MULTI)POINT,(MULTI)LINES,MULTICURVE or (MULTI)POLYGON,POLYHEDRALSURFACE,其他值返回为NULL。
示例¶
SELECT ST_AsEWKT(ST_GeometryN(p_geom,3)) As geom_ewkt
FROM (SELECT
ST_GeomFromEWKT('POLYHEDRALSURFACE(((0 0 0, 0 0 1, 0 1 1, 0 1 0, 0 0 0)),((0 0 0, 0 1 0, 1 1 0, 1 0 0, 0 0 0)),
((0 0 0, 1 0 0, 1 0 1, 0 0 1, 0 0 0)),((1 1 0, 1 1 1, 1 0 1, 1 0 0, 1 1 0)),((0 1 0, 0 1 1, 1 1 1, 1 1 0, 0 1 0)),((0 0 1, 1 0 1, 1 1 1, 0 1 1, 0 0 1)))') As p_geom
) As a;
GEOM_EWKT(text) |
---------------------
POLYGON((0 0 0,1 0 0,|
1 0 1,0 0 1,0 0 0)) |
总数目:1
SELECT ST_AsEWKT(ST_GeometryN(geom,2)) As wkt
FROM (SELECT
ST_GeomFromEWKT('TIN (((0 0 0,0 0 1,0 1 0,0 0 0)), ((0 0 0,0 1 0,1 1 0,0 0 0)))') As geom
) As g;
WKT(text) |
---------------
TRIANGLE((0 0 0|
,0 1 0,1 1 0,0|
0 0)) |
总数目:1
ST_GeometryType¶
ST_GeometryType — 返回ST_Geometry值对应的几何对象的几何类型。
返回值¶
返回值为text类型。返回的geometry类型是一个字符串,比如’ST_Linestring’, ’ST_Polygon’,’ST_MultiPolygon’ 等待。
该函数与函数GeometryType(geometry) 在string类型结果不同,该函数返回的字符串有前缀ST,同样对geometry类型是否有m值也是一样的处理。
示例¶
SELECT ST_GeometryType(ST_GeomFromText('LINESTRING(77.29 29.07,77.42 29.26,77.27 29.31,77.29 29.07)'));
ST_GEOMETRYTYPE(text) |
---------------------------
ST_LineString |
总数目:1
ST_InteriorRingN¶
ST_InteriorRingN — 返回一个POLYGON几何类型的第N个内环,如果输入的geometry类型不是POLYGON类型或者N超出了范围,返回NULL值。
返回值¶
返回值为geometry类型。
示例¶
SELECT ST_AsText(ST_InteriorRingN(the_geom, 1)) As the_geom
FROM (SELECT
ST_BuildArea(ST_Collect(ST_Buffer(ST_Point(1,2), 20,3),ST_Buffer(ST_Point(1, 2), 10,3))) As the_geom
) As foo;
THE_GEOM(text) |
--------------------
LINESTRING(11 2,9.66|
025403784436 7.0000|
0000000005,5.999999|
99999995 10.6602540|
378444,0.9999999999|
99954 12,-4.0000000|
0000003 10.66025403|
78444,-7.6602540378|
4441 6.999999999999|
97,-9 1.99999999999|
997,-7.660254037844|
37 -3.0000000000000|
2,-3.99999999999998|
-6.6602540378444,1|
.00000000000001 -8,|
6.00000000000001 -6|
.66025403784438,9.6|
6025403784439 -3,11|
2) |
总数目:1
SELECT ST_AsText(ST_InteriorRingN(the_geom, 0)) As the_geom
FROM (SELECT
ST_BuildArea(ST_Collect(ST_Buffer(ST_Point(1,2), 20,3),ST_Buffer(ST_Point(1, 2), 10,3))) As the_geom
) As foo;
THE_GEOM(text) |
--------------------
null |
总数目:1
ST_IsPolygonCCW¶
ST_IsPolygonCCW — 如果所有外环均为逆时针方向,所有内环均为时钟方向,则返回true。
返回值¶
返回值为boolean类型。如果几何体没有多边形组件,则返回true。闭合linestrings不被视为多边形组件,因此通过传递单个闭合linestrings(无论其方向如何),仍然可以返回true。
示例¶
SELECT ST_IsPolygonCCW(ST_GeomFromText('POINT(1 2)'));
ST_ISPOLYGONCCW(boolean) |
------------------------------
true |
总数目:1
SELECT ST_IsPolygonCCW(ST_MakePolygon(ST_GeomFromText('LINESTRING(75.15 29.53,77 29,77.6 29.5, 75.15 29.53)')));
ST_ISPOLYGONCCW(boolean) |
------------------------------
true |
总数目:1
ST_IsPolygonCW¶
ST_IsPolygonCW — 如果所有外环都是顺时针方向,而所有内环都是逆时针方向,则返回true。
返回值¶
返回值为boolean类型。闭合linestrings不被视为多边形组件,因此通过传递单个闭合linestrings(无论其方向如何),仍然可以返回true。
示例¶
SELECT ST_IsPolygonCW(ST_GeomFromText('POINT(1 2)'));
ST_ISPOLYGONCW(boolean) |
-----------------------------
true |
总数目:1
SELECT ST_IsPolygonCW(ST_MakePolygon(ST_GeomFromText('LINESTRING(75.15 29.53,77 29,77.6 29.5, 75.15 29.53)')));
ST_ISPOLYGONCW(boolean) |
-----------------------------
false |
总数目:1
ST_IsClosed¶
ST_IsClosed — 如果LINESTRING是闭合的,即起点和终点重合,那么该函数返回值为TRUE,对于Polyhedral surface类型来说,它可能是闭合的。
返回值¶
返回值为boolean类型。
示例¶
SELECT ST_IsClosed('LINESTRING(0 0, 1 1)'::geometry);
ST_ISCLOSED(boolean) |
--------------------------
false |
总数目:1
SELECT ST_IsClosed('LINESTRING(0 0, 0 1, 1 1, 0 0)'::geometry);
ST_ISCLOSED(boolean) |
--------------------------
true |
总数目:1
SELECT ST_IsClosed('MULTILINESTRING((0 0, 0 1, 1 1, 0 0),(0 0, 1 1))'::geometry);
ST_ISCLOSED(boolean) |
--------------------------
false |
总数目:1
SELECT ST_IsClosed('POINT(0 0)'::geometry);
ST_ISCLOSED(boolean) |
--------------------------
true |
总数目:1
SELECT ST_IsClosed('MULTIPOINT((0 0), (1 1))'::geometry);
ST_ISCLOSED(boolean) |
--------------------------
true |
总数目:1
ST_IsCollection¶
ST_IsCollection — 如果参数是一个collection类型的几何对象如 (MULTI*, GEOMETRYCOLLECTION, ...),则返回值为TRUE。
返回值¶
返回值为boolean类型。
如果参数是一个collection类型的几何对象是下面的之一,则返回值为TRUE:
- GEOMETRYCOLLECTION
- MULTI{POINT,POLYGON,LINESTRING,CURVE,SURFACE}
- COMPOUNDCURVE
注解
该函数是通过分析geometry类型来判断的,这意味着如果一个collection是空的或者包含单个元素,它也会返回TRUE。
示例¶
SELECT ST_IsCollection('LINESTRING(0 0, 1 1)'::geometry);
ST_ISCOLLECTION(boolean) |
------------------------------
false |
总数目:1
SELECT ST_IsCollection('MULTIPOINT EMPTY'::geometry);
ST_ISCOLLECTION(boolean) |
------------------------------
true |
总数目:1
SELECT ST_IsCollection('MULTIPOINT((0 0))'::geometry);
ST_ISCOLLECTION(boolean) |
------------------------------
true |
总数目:1
SELECT ST_IsCollection('MULTIPOINT((0 0), (42 42))'::geometry);
ST_ISCOLLECTION(boolean) |
------------------------------
true |
总数目:1
SELECT ST_IsCollection('GEOMETRYCOLLECTION(POINT(0 0))'::geometry);
ST_ISCOLLECTION(boolean) |
------------------------------
true |
总数目:1
ST_IsEmpty¶
ST_IsEmpty — 如果输入的geometry参数是空的geometry collection或者空的polygon或者空的point类型等等,那么返回值将会是TRUE。
返回值¶
返回值为boolean类型。
示例¶
SELECT ST_IsEmpty(ST_GeomFromText('GEOMETRYCOLLECTION EMPTY'));
ST_ISEMPTY(boolean) |
-------------------------
true |
总数目:1
SELECT ST_IsEmpty(ST_GeomFromText('POLYGON EMPTY'));
ST_ISEMPTY(boolean) |
-------------------------
true |
总数目:1
SELECT ST_IsEmpty(ST_GeomFromText('POLYGON((1 2, 3 4, 5 6, 1 2))'));
ST_ISEMPTY(boolean) |
-------------------------
false |
总数目:1
ST_IsRing¶
ST_IsRing — 如果LINESTRING是简单、闭合的,则返回TRUE。
返回值¶
返回值为boolean类型。
示例¶
SELECT ST_IsRing(the_geom), ST_IsClosed(the_geom), ST_IsSimple(the_geom)
FROM (SELECT 'LINESTRING(0 0, 0 1, 1 1, 1 0, 0 0)'::geometry As the_geom) As foo;
ST_ISRING(boolean) |ST_ISCLOSED(boolean) |ST_ISSIMPLE(boolean) |
----------------------------------------------------------------------------
true |true |true |
总数目:1
SELECT ST_IsRing(the_geom), ST_IsClosed(the_geom), ST_IsSimple(the_geom)
FROM (SELECT 'LINESTRING(0 0, 0 1, 1 0, 1 1, 0 0)'::geometry As the_geom) As foo;
ST_ISRING(boolean) |ST_ISCLOSED(boolean) |ST_ISSIMPLE(boolean) |
----------------------------------------------------------------------------
false |true |false |
总数目:1
ST_IsSimple¶
ST_IsSimple — 如果输入的geometry类型没有不规则的几何点,比如自我相交或者自我相切,则返回值为TRUE。
返回值¶
返回值为boolean类型。
示例¶
SELECT ST_IsSimple(ST_GeomFromText('POLYGON((1 2, 3 4, 5 6, 1 2))'));
ST_ISSIMPLE(boolean) |
--------------------------
true |
总数目:1
SELECT ST_IsSimple(ST_GeomFromText('LINESTRING(1 1,2 2,2 3.5,1 3,1 2,2 1)'));
ST_ISSIMPLE(boolean) |
--------------------------
false |
总数目:1
ST_IsValid¶
ST_IsValid — 测试ST_Geometry 的值是否是符合规范的格式。如果ST_Geometry返回的值是满足WKT或EWKT或WKB或EWKB描述的,那么这个函数返回值是TRUE。
返回值¶
返回值为boolean类型。
示例¶
SELECT ST_IsValid(ST_GeomFromText('LINESTRING(0 0, 1 1)')) As good_line,
ST_IsValid(ST_GeomFromText('POLYGON((0 0, 1 1, 1 2, 1 1, 0 0))')) As bad_poly;
GOOD_LINE(boolean) |BAD_POLY(boolean) |
-----------------------------------------------
true |false |
总数目:1
SELECT ST_IsValid(ST_GeomFromText('LINESTRING(0 0, 1 1)',1)) As good_line,
ST_IsValid(ST_GeomFromText('POLYGON((0 0, 1 1, 1 2, 1 1, 0 0))'),1) As bad_poly;
GOOD_LINE(boolean) |BAD_POLY(boolean) |
-----------------------------------------------
true |false |
总数目:1
ST_IsValidReason¶
ST_IsValidReason — 返回一个geometry是否是有效的,以及无效的原因。
示例¶
SELECT ST_IsValid('LINESTRING(220227 150406,2220227 150407,222020 150410)'), ST_IsValidReason('LINESTRING(220227 150406,2220227 150407,222020 150410)');
ST_ISVALID(boolean) |ST_ISVALIDREASON(text) |
-----------------------------------------------------
true |Valid Geometry |
总数目:1
SELECT ST_IsValidReason(ST_GeomFromText('POLYGON((0 0, 1 1, 1 2, 1 1, 0 0))'), 1);
ST_ISVALIDREASON(text) |
----------------------------
Self-intersection |
总数目:1
ST_IsValidDetail¶
ST_IsValidDetail — 返回几何类型是否有效以及无效原因和无效的几何对象是哪些。
返回值¶
返回值为boolean类型。
注解
通常用来替代ST_IsValid 与 ST_IsValidReason,用来生成无效geometry对象的明细报告。
参数flags是一个bit参数,它有如下的值:
1: 把自我相交的环形成的控当做是有效的,这也被称作 "the ESRI flag".
示例¶
SELECT ST_IsValidDetail('LINESTRING(220227 150406,2220227 150407,222020 150410)',1);
ST_ISVALIDDETAIL(VALID_DETAIL) |
------------------------------------
(t,,) |
总数目:1
SELECT reason(ST_IsValidDetail(the_geom)), ST_AsText(location(ST_IsValidDetail(the_geom))) as location
FROM
(SELECT ST_GeomFromText('POLYGON((0 0, 1 1, 1 2, 1 1, 0 0))') as the_geom);
REASON(varchar) |LOCATION(text) |
-----------------------------------------
Self-intersection |POINT(0 0) |
总数目:1
ST_M¶
ST_M — 返回一个点的M坐标,如果输入不是point类型,返回NULL。输入值必须是point类型。
返回值¶
返回值为float类型。
示例¶
SELECT ST_M(ST_GeomFromEWKT('POINT(1 2 3 4)'));
ST_M(double precision) |
----------------------------
4 |
总数目:1
ST_NDims¶
ST_NDims — 返回一个geometry类型的坐标维度,类型是small int类型,值为2,3或4。
返回值¶
返回值为integer类型。
示例¶
SELECT
ST_NDims(ST_GeomFromText('POINT(1 1)')) As d2point,
ST_NDims(ST_GeomFromEWKT('POINT(1 1 2)')) As d3point,
ST_NDims(ST_GeomFromEWKT('POINTM(1 1 0.5)')) As d2pointm;
D2POINT(smallint) |D3POINT(smallint) |D2POINTM(smallint) |
----------------------------------------------------------------------
2 |3 |3 |
总数目:1
ST_NPoints¶
ST_NPoints — 返回geometry的顶点个数。
返回值¶
返回值为integer类型。
示例¶
SELECT ST_NPoints(ST_GeomFromText('LINESTRING(77.29 29.07,77.42 29.26,77.27 29.31,77.29 29.07)'));
ST_NPOINTS(int) |
---------------------
4 |
总数目:1
ST_NRings¶
ST_NRings — 如果输入的几何类型对象是polygon或者multi-polygon,返回环的个数。
返回值¶
返回值为integer类型。不像函数NumInteriorRings,ST_NRings函数会把外环也统计进去。
示例¶
SELECT ST_NRings(the_geom) As Nrings, ST_NumInteriorRings(the_geom) As ninterrings
FROM (SELECT
ST_GeomFromText('POLYGON((1 2, 3 4, 5 6, 1 2))') As the_geom)
As foo;
NRINGS(int) |NINTERRINGS(int) |
---------------------------------------
1 |0 |
总数目:1
select ST_NRings(ST_GeomFromText('MULTIPOLYGON(((0 0 1,20 0 1,20 20 1,0 20 1,0 0 1),(5 5 3,5 7 3,7 7 3,7 5 3,5 5 3)))', 4326));
ST_NRINGS(int) |
--------------------
2 |
总数目:1
select ST_NRings(ST_GeomFromText('point(0 3)', 4326));
ST_NRINGS(int) |
--------------------
0 |
总数目:1
ST_NumGeometries¶
ST_NumGeometries — 返回geometry类型是 GEOMETRYCOLLECTION (或 MULTI*类型)里面包含的几何对象个数,对于单个几何对象,返回1,其他情况返回NULL。
返回值¶
返回值为integer类型。
示例¶
SELECT ST_NumGeometries(ST_GeomFromText('LINESTRING(77.29 29.07,77.42 29.26,77.27 29.31,77.29 29.07)'));
ST_NUMGEOMETRIES(int) |
---------------------------
1 |
总数目:1
SELECT ST_NumGeometries(ST_GeomFromEWKT('GEOMETRYCOLLECTION(MULTIPOINT(-2 3 , -2 2),LINESTRING(5 5 ,10 10),POLYGON((-7 4.2,-7.1 5,-7.1 4.3,-7 4.2)))'));
ST_NUMGEOMETRIES(int) |
---------------------------
3 |
总数目:1
ST_NumInteriorRings¶
ST_NumInteriorRings — 返回输入几何对象里面第一个polygon对象里面的内环数,该函数支持POLYGON 和 MULTIPOLYGON,如果geometry中没有polygon对象,则返回NULL。
返回值¶
返回值为integer类型。
示例¶
SELECT ST_NumInteriorRings(ST_GeomFromText('LINESTRING(77.29 29.07,77.42 29.26,77.27 29.31,77.29 29.07)'));
ST_NUMINTERIORRINGS(int) |
------------------------------
null |
总数目:1
SELECT ST_NumInteriorRings(ST_GeomFromText('POLYGON((1 2, 3 4, 5 6, 1 2))'));
ST_NUMINTERIORRINGS(int) |
------------------------------
0 |
总数目:1
ST_NumInteriorRing¶
ST_NumInteriorRing — 返回geometry对象里面第一个polygon里面包含的内环数。该函数与ST_NumInteriorRings等价。
示例¶
SELECT ST_NumInteriorRing(ST_GeomFromText('LINESTRING(77.29 29.07,77.42 29.26,77.27 29.31,77.29 29.07)'));
ST_NUMINTERIORRING(int) |
-----------------------------
null |
总数目:1
SELECT ST_NumInteriorRing(ST_GeomFromText('POLYGON((1 2, 3 4, 5 6, 1 2))'));
ST_NUMINTERIORRING(int) |
-----------------------------
0 |
总数目:1
ST_NumPatches¶
ST_NumPatches — 返回 Polyhedral Surface的面数. 对于非polyhedral 几何类型对象返回NULL值。
示例¶
SELECT ST_NumPatches('POLYHEDRALSURFACE(((0 0,0 0,0 1,0 0)))'::geometry);
ST_NUMPATCHES(int) |
------------------------
1 |
总数目:1
SELECT ST_NumPatches(
ST_GeomFromEWKT('POLYHEDRALSURFACE( ((0 0 0, 0 0 1, 0 1 1, 0 1 0, 0 0 0)),((0 0 0, 0 1 0, 1 1 0, 1 0 0, 0 0 0)), ((0 0 0, 1 0 0, 1 0 1, 0 0 1, 0 0 0)),
((1 1 0, 1 1 1, 1 0 1, 1 0 0, 1 1 0)),((0 1 0, 0 1 1, 1 1 1, 1 1 0, 0 1 0)), ((0 0 1, 1 0 1, 1 1 1, 0 1 1, 0 0 1)) )'));
ST_NUMPATCHES(int) |
------------------------
6 |
总数目:1
ST_NumPoints¶
ST_NumPoints — 返回ST_LineString 或 ST_CircularString 值对应的几何对象里面包含的point对象个数。该函数是ST_Npoints的别名函数。
返回值¶
返回值为integer类型。
示例¶
SELECT ST_NumPoints(ST_GeomFromText('LINESTRING(77.29 29.07,77.42 29.26,77.27 29.31,77.29 29.07)'));
ST_NUMPOINTS(int) |
-----------------------
4 |
总数目:1
ST_PatchN¶
ST_PatchN — 返回至少包含一个面的geometry对象的第N个面,支持的输入类型是POLYHEDRALSURFACE,POLYHEDRALSURFACEM。否则返回NULL值。
示例¶
SELECT ST_AsEWKT(ST_PatchN(geom, 2)) As geomewkt
FROM (
SELECT (ST_GeomFromEWKT('POLYHEDRALSURFACE( ((0 0 0, 0 0 1, 0 1 1, 0 1 0, 0 0 0)),((0 0 0, 0 1 0, 1 1 0, 1 0 0, 0 0 0)),
((0 0 0, 1 0 0, 1 0 1, 0 0 1, 0 0 0)),((1 1 0, 1 1 1, 1 0 1, 1 0 0, 1 1 0)),((0 1 0, 0 1 1, 1 1 1, 1 1 0, 0 1 0)), ((0 0 1, 1 0 1, 1 1 1, 0 1 1, 0 0 1)) )'))
As geom );
GEOMEWKT(text) |
--------------------
POLYGON((0 0 0,0 1 0|
,1 1 0,1 0 0,0 0 0)|
) |
总数目:1
ST_PointN¶
ST_PointN — 返回单个linestring 或 circular linestring的第N个point对象。如果几何对象里面不包括LINESTRING对象,则返回NULL。
返回值¶
返回值为geometry类型。
示例¶
SELECT ST_AsText(ST_PointN(ST_GeomFromText('CIRCULARSTRING(1 2, 3 2, 1 2)'),2));
ST_ASTEXT(text) |
---------------------
POINT(3 2) |
总数目:1
SELECT ST_AsText(ST_PointN(ST_GeomFromText('point(1 2)'),1));
ST_ASTEXT(text) |
---------------------
null |
总数目:1
ST_Points¶
ST_Points — 返回几何的所有坐标点集MultiPoint。
返回值¶
返回值为geometry类型。
注解
返回包含几何体所有坐标的多点。不删除输入几何图形中重复的点,包括环形几何图形的起点和终点。(如果不希望出现这种行为,可以使用ST_RemovePeatedPoints删除重复项)。如果存在,M和Z坐标将被保留。
示例¶
SELECT ST_AsText(ST_Points(ST_GeomFromText('LINESTRING(75.15 29.53 1,77 29 1,77.6 29.5 1, 75.15 29.53 1)', 4326)));
ST_ASTEXT(text) |
---------------------
MULTIPOINT Z (75.15 2|
9.53 1,77 29 1,77.6 |
29.5 1,75.15 29.53 1|
) |
总数目:1
ST_SRID¶
ST_SRID — 返回ST_Geometry值对应对象的SRID值,该值必须存在spatial_ref_sys表中。
返回值¶
返回值为integer类型。
注解
spatial_ref_sys table是一个记录对OscarGIS所有已知的空间坐标系统的表,该表可以用来将一个对象的空间坐标系转换到另一种,因此如果对几何对象进行坐标系转换时候,请确认SRID。
示例¶
SELECT ST_SRID(ST_GeomFromText('POINT(-71.1043 42.315)',4326));
ST_SRID(int) |
------------------
4326 |
总数目:1
ST_StartPoint¶
ST_StartPoint — 返回LINESTRING几何对象的起点。
返回值¶
返回值为geometry类型。
示例¶
SELECT ST_AsText(ST_StartPoint('LINESTRING(0 1, 0 2)'::geometry));
ST_ASTEXT(text) |
---------------------
POINT(0 1) |
总数目:1
SELECT ST_StartPoint('POINT(0 1)'::geometry) IS NULL AS is_null;
IS_NULL(boolean) |
----------------------
true |
总数目:1
ST_Summary¶
ST_Summary — 返回geometry对象的文本概要。
示例¶
SELECT ST_Summary(ST_GeomFromText('LINESTRING(0 0, 1 1)')) as geom,
ST_Summary(ST_GeogFromText('POLYGON((0 0, 1 1, 1 2, 1 1, 0 0))')) geog;
GEOM(text) |GEOG(text) |
--------------------------------
LineString[] wit|Polygon[BGS] wit|
h 2 points |h 1 rings
ri|
|ng 0 has 5 poin|
|ts |
总数目:1
SELECT ST_Summary(ST_GeogFromText('LINESTRING(0 0 1, 1 1 1)')) As geog_line,
ST_Summary(ST_GeomFromText('SRID=4326;POLYGON((0 0 1, 1 1 2, 1 2 3, 1 1 1, 0 0 1))')) As geom_poly;
GEOG_LINE(text) |GEOM_POLY(text) |
------------------------------------------
LineString[ZGS] with |Polygon[ZBS] with 1 r|
2 points |ings
ring 0 has 5|
| points |
总数目:1
ST_X¶
ST_X — 返回点的X坐标,如果输入参数不是一个点,返回NULL,输入必须是一个点类型。
示例¶
SELECT ST_X(ST_GeomFromEWKT('POINT(1 2 3 4)'));
ST_X(double precision) |
----------------------------
1 |
总数目:1
ST_XMax¶
ST_XMax — 返回2d或3d的bounding box 或一个几何对象的X最大值。
参数¶
aGeomorBox2DorBox3D
Box3D类型。虽然该函数是为box3d而定义的,但也支持box2d和geometry类型对象,因为这两种对象可以自动转换成box3d类型。但不能用WKT表述的geometry或box2d对象传递进去,因为这种情况下不能做自动转换成box3d类型。
返回值¶
返回值为float类型。
示例¶
SELECT ST_XMax('BOX3D(1 2 3, 4 5 6)');
ST_XMAX(double precision) |
-------------------------------
4 |
总数目:1
SELECT ST_XMax(ST_GeomFromText('LINESTRING(1 3 4, 5 6 7)'));
ST_XMAX(double precision) |
-------------------------------
5 |
总数目:1
SELECT ST_XMax('LINESTRING(1 3, 5 6)');
ERROR, BOX3D parser - doesn't start with BOX3D(
ST_XMin¶
ST_XMin — 返回bounding box或者2d或3d或geometry的X方向范围的最小值。
参数¶
aGeomorBox2DorBox3D
Box3D类型。虽然该函数是为box3d而定义的,但也支持box2d和geometry类型对象,因为这两种对象可以自动转换成box3d类型。但不能用WKT表述的geometry或box2d对象传递进去,因为这种情况下不能做自动转换成box3d类型。
返回值¶
返回值为float类型。
示例¶
SELECT ST_XMin('BOX3D(1 2 3, 4 5 6)');
ST_XMIN(double precision) |
-------------------------------
1 |
总数目:1
SELECT ST_XMin(ST_GeomFromText('LINESTRING(1 3 4, 5 6 7)'));
ST_XMIN(double precision) |
-------------------------------
1 |
总数目:1
SELECT ST_XMin('LINESTRING(1 3, 5 6)');
ERROR, BOX3D parser - doesn't start with BOX3D(
ST_Y¶
ST_Y — 返回输入点的Y坐标,如果输入不是点,返回NULL,输入必须是点类型。
返回值¶
返回值为float类型。
示例¶
SELECT ST_Y(ST_GeomFromEWKT('POINT(1 2 3 4)'));
ST_Y(double precision) |
----------------------------
2 |
总数目:1
SELECT ST_Y(ST_Centroid(ST_GeomFromEWKT('LINESTRING(1 2 3 4, 1 1 1 1)')));
ST_Y(double precision) |
----------------------------
1.5 |
总数目:1
ST_YMax¶
ST_YMax — 返回bounding box 或者2d或3d或geometry的Y方向范围的最大值。
返回值¶
返回值为float类型。
示例¶
SELECT ST_YMax('BOX3D(1 2 3, 4 5 6)');
ST_YMAX(double precision) |
-------------------------------
5 |
总数目:1
SELECT ST_YMax(ST_GeomFromText('LINESTRING(1 3 4, 5 6 7)'));
ST_YMAX(double precision) |
-------------------------------
6 |
总数目:1
SELECT ST_YMax('LINESTRING(1 3, 5 6)');
ERROR, BOX3D parser - doesn't start with BOX3D(
ST_YMin¶
ST_YMin — 返回bounding box 或者2d或3d或geometry的Y方向范围的最小值。
返回值¶
返回值为float类型。
注解
ST_ZMax、ST_ZMin 分别为返回bounding box 或者2d或3d或geometry的Y方向范围的最大值和最小值。用法同ST_XMax、ST_XMin一样。就不再描述了。
示例¶
SELECT ST_YMin('BOX3D(1 2 3, 4 5 6)');
ST_YMIN(double precision) |
-------------------------------
2 |
总数目:1
SELECT ST_YMin(ST_GeomFromText('LINESTRING(1 3 4, 5 6 7)'));
ST_YMIN(double precision) |
-------------------------------
3 |
总数目:1
SELECT ST_YMin('LINESTRING(1 3, 5 6)');
ERROR, BOX3D parser - doesn't start with BOX3D(
ST_Z¶
ST_Z — 返回输入点的Z坐标,如果输入不是点,返回NULL,输入必须是点类型。
返回值¶
返回值为float类型。
示例¶
SELECT ST_Z(ST_GeomFromEWKT('POINT(1 2 3 4)'));
ST_Z(double precision) |
----------------------------
3 |
总数目:1
ST_Zmflag¶
ST_Zmflag — 返回一个几何对象的ZM标识,值的对应关系如下,对于2d对象,ZM值为1记为0=2d,以此类推 1=3dm, 2=3dz,3=4d。
返回值¶
返回值为smallint类型。
示例¶
SELECT ST_Zmflag(ST_GeomFromEWKT('LINESTRING(1 2, 3 4)'));
ST_ZMFLAG(smallint) |
-------------------------
0 |
总数目:1
SELECT ST_Zmflag(ST_GeomFromEWKT('LINESTRINGM(1 2 3, 3 4 3)'));
ST_ZMFLAG(smallint) |
-------------------------
1 |
总数目:1
SELECT ST_Zmflag(ST_GeomFromEWKT('CIRCULARSTRING(1 2 3, 3 4 3, 5 6 3)'));
ST_ZMFLAG(smallint) |
-------------------------
2 |
总数目:1
SELECT ST_Zmflag(ST_GeomFromEWKT('POINT(1 2 3 4)'));
ST_ZMFLAG(smallint) |
-------------------------
3 |
总数目:1