Topik ini menjelaskan fungsi ST_CurvatureRadius, yang menghitung radius rotasi lintasan di setiap titik perantara dan mengembalikan larik bilangan floating-point.
Sintaksis
double precision[] ST_CurvatureRadius(trajectory traj, boolean hasdirection default false);Parameter
Parameter | Deskripsi |
traj | Objek lintasan. |
hasdirection | Menentukan apakah akan menghitung arah rotasi lintasan. Jika arah rotasi lintasan dihitung, nilai negatif akan dikembalikan ketika lintasan berotasi dalam arah berlawanan jarum jam. |
Deskripsi
Fungsi ini menghitung radius rotasi lintasan di setiap titik perantara. Jika lintasan memiliki n titik, jumlah titik perantara adalah n dikurangi 2. Apabila lintasan bergerak lurus atau tetap tidak berubah di titik perantara, radius rotasi menjadi tak terbatas. Semakin kecil radius rotasi, semakin tajam kurva lintasan tersebut.
Contoh
SELECT ST_CurvatureRadius(ST_MakeTrajectory('STPOINT'::leaftype,'LINESTRING(0 0, 0 8, 6 8, 12 8, 12 8)', '2000-01-01', '2000-01-01'::timestamp+ '1 day'::interval* (ST_NPoints('LINESTRING(0 0, 0 8, 6 8, 12 8, 12 8)')-1), '{}'));
st_curvatureradius
-----------------------
{5,Infinity,Infinity}
SELECT ST_CurvatureRadius(ST_MakeTrajectory('STPOINT'::leaftype,'LINESTRING(0 0, 0 8, 6 8, 12 8, 12 8, 6 8, 0 8, 0 0)', '2000-01-01', '2000-01-01'::timestamp+ '1 day'::interval* (ST_NPoints('LINESTRING(0 0, 0 8, 6 8, 12 8, 12 8, 6 8, 0 8, 0 0)')-1), '{}'));
st_curvatureradius
-----------
{5,Infinity,Infinity,Infinity,Infinity,5}
SELECT ST_CurvatureRadius(ST_MakeTrajectory('STPOINT'::leaftype,'LINESTRING(0 0, 0 8, 6 8, 12 8, 12 8, 6 8, 0 8, 0 0)', '2000-01-01', '2000-01-01'::timestamp+ '1 day'::interval* (ST_NPoints('LINESTRING(0 0, 0 8, 6 8, 12 8, 12 8, 6 8, 0 8, 0 0)')-1), '{}'), true);
st_curvatureradius
-----------
{5,Infinity,Infinity,Infinity,Infinity,-5}
SELECT ST_CurvatureRadius(ST_MakeTrajectory('STPOINT'::leaftype,'LINESTRING(0 0, 0 8, 6 8, 12 8, 12 8, 6 8, 0 8, 0 0, 0 4, 3 4)', '2000-01-01', '2000-01-01'::timestamp+ '1 day'::interval* (ST_NPoints('LINESTRING(0 0, 0 8, 6 8, 12 8, 12 8, 6 8, 0 8, 0 0, 0 4, 3 4)')-1), '{}'), true);
st_curvatureradius
-----------
{5,Infinity,Infinity,Infinity,Infinity,-5,0,2.5}