类别:

地理空间函数

ST_NPOINTS、ST_NUMPOINTS

返回 GEOGRAPHYGEOGRAPHY 对象中的点数。

语法

ST_NPOINTS( <geography_or_geometry_expression> )
Copy

实参

geography_or_geometry_expression

实参必须是 GEOGRAPHY 或 GEOMETRY 类型的表达式。

返回

返回类型 INTEGER 的值。

使用说明

  • 每个多边形循环列出两次起点(一次作为起点,一次作为终点)。ST_NPOINTS 记为两次出现次数。例如,给定一个三角形多边形,ST_NPOINTS 会返回 4,而不是 3。

  • ST_NUMPOINTS 是 ST_NPOINTS 的别名。

    备注

    在其他一些系统中,ST_NUMPOINTS 与 ST_NPOINTS 的行为不同,并且只会返回 LineString / MultiLineString 对象的点数。

示例

GEOGRAPHY 示例

这显示了简单多边形中的点数。

create table geospatial_table_01 (g1 GEOGRAPHY, g2 GEOGRAPHY);
insert into geospatial_table_01 (g1, g2) values 
    ('POLYGON((0 0, 3 0, 3 3, 0 3, 0 0))', 'POLYGON((1 1, 2 1, 2 2, 1 2, 1 1))');
Copy
SELECT ST_NPOINTS(g1) 
    FROM geospatial_table_01;
+----------------+
| ST_NPOINTS(G1) |
|----------------|
|              5 |
+----------------+
Copy

GEOMETRY 示例

下面的示例演示如何使用 ST_NPOINTS 函数。

CREATE OR REPLACE TABLE geometry_shapes (g GEOMETRY);
INSERT INTO geometry_shapes VALUES
    ('POINT(66 12)'),
    ('MULTIPOINT((45 21), (12 54))'),
    ('LINESTRING(40 60, 50 50, 60 40)'),
    ('MULTILINESTRING((1 1, 32 17), (33 12, 73 49, 87.1 6.1))'),
    ('POLYGON((17 17, 17 30, 30 30, 30 17, 17 17))'),
    ('MULTIPOLYGON(((-10 0,0 10,10 0,-10 0)),((-10 40,10 40,0 20,-10 40)))'),
    ('GEOMETRYCOLLECTION(POLYGON((-10 0,0 10,10 0,-10 0)),LINESTRING(40 60, 50 50, 60 40), POINT(99 11))')
    ;

SELECT ST_NPOINTS(g), ST_ASWKT(g) FROM geometry_shapes;
Copy
+---------------+-------------------------------------------------------------------------------------------------+
| ST_NPOINTS(G) | ST_ASWKT(G)                                                                                     |
|---------------+-------------------------------------------------------------------------------------------------|
|             1 | POINT(66 12)                                                                                    |
|             2 | MULTIPOINT((45 21),(12 54))                                                                     |
|             3 | LINESTRING(40 60,50 50,60 40)                                                                   |
|             5 | MULTILINESTRING((1 1,32 17),(33 12,73 49,87.1 6.1))                                             |
|             5 | POLYGON((17 17,17 30,30 30,30 17,17 17))                                                        |
|             8 | MULTIPOLYGON(((-10 0,0 10,10 0,-10 0)),((-10 40,10 40,0 20,-10 40)))                            |
|             8 | GEOMETRYCOLLECTION(POLYGON((-10 0,0 10,10 0,-10 0)),LINESTRING(40 60,50 50,60 40),POINT(99 11)) |
+---------------+-------------------------------------------------------------------------------------------------+
Copy
语言: 中文