Todos os produtos
Search
Central de documentação

ApsaraDB RDS:ST_LineInterpolatePoints

Última atualização: Aug 20, 2026

Insere um ou mais pontos em posições especificadas de uma LineString e retorna os pontos inseridos.

Sintaxe

geometry  ST_LineInterpolatePoints(geometry  aLinestring , float8  aFraction , boolean  repeat);
geography  ST_LineInterpolatePoints(geography  aLinestring , float8  aFraction , boolean  repeat);

Parâmetros

Parâmetro

Descrição

aLinestring

Objeto LineString de destino.

aFraction

Fração ao longo do segmento de linha onde o ponto é inserido. Valor de ponto flutuante entre 0 e 1.

repeat

Defina se os pontos são inseridos repetidamente. Valor padrão: true.

Descrição

  • Se repeat for true, um ponto é criado em cada distância especificada.

  • Se o resultado contiver zero ou um ponto, a função retorna um Point. Caso contrário, retorna um MultiPoint.

  • Esta função oferece suporte a objetos 3D e preserva a coordenada Z.

  • Esta função também oferece suporte a coordenadas M.

  • Em sistemas de coordenadas geográficas, o cálculo baseia-se na distância esférica.

Exemplos

  • Calcule as coordenadas do ponto em uma fração específica do segmento de linha fornecido:

    SELECT ST_AsText(ST_LineInterpolatePoints('LINESTRING(0 0,0 5)', 0.20));
                st_astext
    ---------------------------------
     MULTIPOINT(0 1,0 2,0 3,0 4,0 5)
    (1 row)
    
    -- gepgraphy
    SELECT ST_AsText(ST_LineInterpolatePoints('LINESTRING(0 0,0 5)'::geography, 0.20));
                                                   st_astext                                               
    -------------------------------------------------------------------------------------------------------
     MULTIPOINT((0 1.00002443285827),(0 2.00004274948544),(0 3.00004884128919),(0 4.00003661494431),(0 5))
  • Sem inserção repetida:

    SELECT ST_AsText(ST_LineInterpolatePoints('LINESTRING(0 0,0 5)', 0.20, false));
     st_astext
    ------------
     POINT(0 1)
    (1 row)
    
    SELECT ST_AsText(ST_LineInterpolatePoints('LINESTRING(0 0,0 5)'::geography, 0.20, false));
             st_astext         
    ---------------------------
     POINT(0 1.00002443285827)
    (1 row)