All Products
Search
Document Center

ApsaraDB RDS:ST_LineInterpolatePoints

Last Updated:Jun 25, 2025

Topik ini menjelaskan fungsi ST_LineInterpolatePoints, yang menginterpolasi titik pada satu atau beberapa lokasi tertentu dari objek LineString dan mengembalikan titik-titik tersebut.

Sintaksis

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

Parameter

Parameter

Deskripsi

aLinestring

Objek LineString.

aFraction

Fraksi berdasarkan mana titik diinterpolasi ke dalam garis. Nilai parameter ini adalah angka floating-point dalam rentang 0 hingga 1.

repeat

Menentukan apakah interpolasi ulang titik diperbolehkan. Nilai default: true.

Deskripsi

  • Jika parameter repeat diatur ke True, fungsi ini menginterpolasi titik di setiap lokasi yang direpresentasikan sebagai fraksi sepanjang garis.

  • Jika hasilnya nol atau satu titik, fungsi ini mengembalikan hasilnya sebagai objek titik. Jika tidak, hasilnya dikembalikan sebagai objek MultiPoint.

  • Fungsi ini mendukung objek 3D dan tidak menghapus koordinat z.

  • Fungsi ini mendukung koordinat M.

  • Jika sistem koordinat geografis digunakan, jarak antara titik dihitung berdasarkan jarak bola.

Contoh

  • Menghitung koordinat titik pada lokasi tertentu di segmen yang diberikan:

    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)
    
    -- geography
    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))
  • Menginterpolasi titik dengan parameter repeat disetel ke False.

    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)