geo_line_buffer()
Menghitung poligon atau multipoligon yang berisi semua titik dalam radius tertentu dari baris input atau multibaris di Bumi.
Sintaks
geo_line_buffer(
toleransi radius,
lineString,
)
Pelajari selengkapnya tentang konvensi sintaksis.
Parameter
Nama | Tipe | Wajib | Deskripsi |
---|---|---|---|
lineString | dynamic |
✔️ | LineString atau MultiLineString dalam format GeoJSON. |
radius | real |
✔️ | Radius buffer dalam meter. Nilai valid harus positif. |
Toleransi | real |
Mendefinisikan toleransi dalam meter yang menentukan berapa banyak poligon yang dapat menyimpang dari radius ideal. Jika tidak ditentukan, nilai default 10 akan digunakan. Toleransi tidak boleh lebih rendah dari 0,0001% dari radius. Menentukan toleransi yang lebih besar dari radius menurunkan toleransi ke nilai terbesar yang mungkin di bawah radius. |
Mengembalikan
Poligon atau MultiPolygon di sekitar lineString input atau MultiLineString. Jika koordinat atau radius atau toleransi tidak valid, kueri menghasilkan hasil null.
Catatan
- Koordinat geospasial diinterpretasikan sebagaimana diwakili oleh sistem referensi koordinat WGS-84.
- Datum geodetik yang digunakan untuk mengukur jarak di Bumi adalah bola.
- Jika tepi garis input adalah garis kartesius lurus, pertimbangkan untuk menggunakan geo_line_densify() untuk mengubah tepi planar menjadi geodesik.
- Endcap dari garis bulat.
- Kedua sisi garis di-buffer.
Batasan dan definisi LineString
dynamic({"type": "LineString","coordinates": [[lng_1,lat_1], [lng_2,lat_2], ..., [lng_N,lat_N]]})
dynamic({"type": "MultiLineString","coordinates": [[line_1, line_2, ..., line_N]]})
- Array koordinat LineString harus berisi minimal dua entri.
- Koordinat [bujur, lintang] harus valid di mana bujur adalah angka riil dalam rentang [-180, +180] dan garis lintang adalah angka nyata dalam rentang [-90, +90].
- Panjang tepi harus kurang dari 180 derajat. Tepi terpendek antara dua puncak akan dipilih.
Contoh
Kueri berikut menghitung poligon di sekitar garis, dengan radius 4 meter dan toleransi 0,1 meter
let line = dynamic({"type":"LineString","coordinates":[[-80.66634997047466,24.894526340592122],[-80.67373241820246,24.890808090321286]]});
print buffer = geo_line_buffer(line, 4, 0.1)
Buffer |
---|
{"type": "Polygon", "coordinates": [ ... ]} |
Kueri berikut menghitung buffer di sekitar setiap baris dan hasil unifies
datatable(line:dynamic)
[
dynamic({"type":"LineString","coordinates":[[14.429214068940496,50.10043066548272],[14.431184174126173,50.10046525983731]]}),
dynamic({"type":"LineString","coordinates":[[14.43030222687753,50.100780677801936],[14.4303847111523,50.10020274910934]]})
]
| project buffer = geo_line_buffer(line, 2, 0.1)
| summarize polygons = make_list(buffer)
| project result = geo_union_polygons_array(polygons)
hasil |
---|
{"type": "Polygon","coordinates": [ ... ]} |
Contoh berikut akan mengembalikan true, karena baris yang tidak valid.
print buffer = isnull(geo_line_buffer(dynamic({"type":"LineString"}), 5))
Buffer |
---|
Benar |
Contoh berikut akan mengembalikan true, karena radius yang tidak valid.
print buffer = isnull(geo_line_buffer(dynamic({"type":"LineString","coordinates":[[0,0],[1,1]]}), 0))
Buffer |
---|
Benar |
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk