Categorias:

Funções geoespaciais

ST_NPOINTS , ST_NUMPOINTS

Retorna o número de pontos em um objeto GEOGRAPHY ou GEOGRAPHY.

Sintaxe

ST_NPOINTS( <geography_or_geometry_expression> )
Copy

Argumentos

geography_or_geometry_expression

O argumento deve ser uma expressão do tipo GEOGRAPHY ou GEOMETRY.

Retornos

Retorna um valor do tipo INTEGER.

Notas de uso

  • Cada loop do polígono lista o ponto de partida duas vezes (uma como início, outra como fim). ST_NPOINTS conta as duas ocorrências. Por exemplo, dado um polígono triangular, ST_NPOINTS retornará 4, e não 3.

  • ST_NUMPOINTS é um alias para ST_NPOINTS.

    Nota

    Em alguns outros sistemas, ST_NUMPOINTS comporta-se de maneira diferente de ST_NPOINTS e retorna o número de pontos para objetos LineString / MultiLineString somente.

Exemplos

Exemplos GEOGRAPHY

Isto mostra o número de pontos em um polígono simples.

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

Exemplos GEOMETRY

Os exemplos a seguir demonstram como utilizar a função 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