All Products
Search
Document Center

:ST_3DGridPath

Last Updated:Jun 25, 2025

Topik ini menjelaskan fungsi ST_3DGridPath, yang menghitung jalur menggunakan sistem grid 3D.

Sintaksis

geomgrid[] ST_3DGridPath(geometry start, geometry end, box3d range, gridcost[] barriers, params text default '');

Parameter

Parameter

Deskripsi

start

Titik awal.

end

Titik akhir.

range

Ruang lingkup perencanaan jalur.

barriers

Biaya semua grid dengan hambatan.

params

Parameter yang digunakan untuk perhitungan.

Berikut adalah deskripsi bidang dari parameter params:

  • algorithm: algoritma pencarian jalur

    • dij: Algoritma Dijkstra

    • astar (default): Algoritma A*

    • nb_astar: Algoritma A* dua arah

  • movement: mode pergerakan

    • cross (default): hanya bergerak ke grid yang berdekatan

    • octothorpe: bergerak ke grid yang berdekatan dan diagonal

    • strict_octothorpe: bergerak ke grid diagonal ketika grid yang berdekatan dapat dilewati

  • distance: metode estimasi jarak

    • euclidean: Jarak Euclidean

    • manhattan (default): Jarak Manhattan

    • chebyshev: Jarak Chebyshev

Contoh: {"algorithm":"astar","movement":"strict_octothorpe"}.

Catatan

Jika parameter params dibiarkan kosong atau beberapa bidang tidak dikonfigurasi, sistem akan menggunakan nilai default.

Deskripsi

Fungsi ini menghitung jalur grid berdasarkan data yang ditentukan.

  • Titik awal dan titik akhir adalah titik 3D, di mana nilai pada sumbu-z bisa tidak akurat. Algoritma secara otomatis menemukan nilai yang sesuai pada sumbu-z untuk titik 3D dan merencanakan jalur.

  • Parameter range menentukan ruang lingkup perencanaan jalur, yang dikonfigurasi berdasarkan data model permukaan digital (DSM).

  • Parameter barriers menggabungkan biaya semua grid dengan hambatan. Anda dapat memanggil operasi ST_CostUnion untuk menanyakan nilai parameter ini.

  • Jika parameter params dibiarkan kosong, sistem secara default menggunakan astar, cross, dan manhattan. Hasil perhitungan adalah array dari grid geometri yang disusun secara berurutan.

Contoh

select st_astext(ST_3DGridPath(st_geomfromewkt('srid=4490;POINT Z (1 1 1)'), st_geomfromewkt('srid=4490;POINT Z (5 6 3)'),
'BOX3D(0 0 0,10 10 10)'::box3d, st_costunion(array[st_setcost(array[st_gridfromtext('GZ0000000001')],1), st_setcost(array[st_gridfromtext('GZ0000000000')],5)])));

--------------------------------------------------------------------------------
 {GZ0000000006,GZ0000000042,GZ0000000046,GZ0000000064,GZ0000000420,GZ0000000422,
GZ0000000426,GZ0000000604,GZ0000000640,GZ0000000644,GZ0000004200,GZ0000004240,
GZ0000004244,GZ0000004600,GZ0000004602,GZ0000004620,GZ0000004622,GZ0000006400,
GZ0000006420}

select ST_3DGridPath(st_geomfromewkt('srid=4490;POINT Z (1 1 1)'), st_geomfromewkt('srid=4490;POINT Z (5 6 3)'),
'BOX3D(0 0 0,10 10 10)'::box3d, st_costunion(array[st_setcost(array[st_gridfromtext('GZ0000000001')],1), st_setcost(array[st_gridfromtext('GZ0000000000')],5)]), '{"algorithm":"astar","movement":"strict_octothorpe","distance":"euclidean"}');

--------------------------------------------------------------------------------
 {GZ0000000006,GZ0000000060,GZ0000000066,GZ0000000600,GZ0000000606,GZ0000000660,
GZ0000000666,GZ0000006000,GZ0000006040,GZ0000006044,GZ0000006420}

Sistem grid 3D

image