geo_line_simplify()
Menyederhanakan garis atau multibaris dengan mengganti rantai tepi pendek yang hampir lurus dengan satu tepi panjang di Bumi.
Sintaks
geo_line_simplify(
toleransi lineString,
)
Pelajari selengkapnya tentang konvensi sintaksis.
Parameter
Nama | Tipe | Wajib | Deskripsi |
---|---|---|---|
lineString | dynamic |
✔️ | LineString atau MultiLineString dalam format GeoJSON. |
Toleransi | int, long, atau real | Mendefinisikan jarak minimum dalam meter antara dua simpul. Nilai yang didukung berada dalam rentang [0, ~7.800.000 meter]. Jika tidak ditentukan, nilai default 10 akan digunakan. |
Mengembalikan
Garis yang disederhanakan atau multibaris dalam format GeoJSON dan jenis data dinamis , tanpa dua simpul dengan jarak kurang dari toleransi. Jika garis atau toleransi tidak valid, kueri akan memberikan 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. Tepi garis adalah geodesik pada bola.
- Jika tepi garis input adalah garis kartesius lurus, pertimbangkan untuk menggunakan geo_line_densify() untuk mengubah tepi planar menjadi geodesik.
- Jika input adalah multibaris dan berisi lebih dari satu baris, hasilnya akan menjadi penyederhanaan penyatuan garis.
- Toleransi tinggi dapat menyebabkan garis kecil menghilang.
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
Contoh berikut menyederhanakan baris dengan menghapus simpul yang berada dalam jarak 10 meter satu sama lain.
let line = dynamic({"type":"LineString","coordinates":[[-73.97033169865608,40.789063020152824],[-73.97039607167244,40.78897975920816],[-73.9704617857933,40.78888837512432],[-73.97052884101868,40.7887949601531],[-73.9706052839756,40.788698498903564],[-73.97065222263336,40.78862640672032],[-73.97072866559029,40.78852791445617],[-73.97079303860664,40.788434498977836]]});
print simplified = geo_line_simplify(line, 10)
Hasil
disederhanakan |
---|
{"type": "LineString", "coordinates": [[-73.97033169865608, 40.789063020152824], [-73.97079303860664, 40.788434498977836]] } |
Contoh berikut menyederhanakan garis dan menggabungkan hasil ke dalam koleksi geometri GeoJSON.
NY_Manhattan_Roads
| project road = features.geometry
| project road_simplified = geo_line_simplify(road, 100)
| summarize roads_lst = make_list(road_simplified)
| project geojson = bag_pack("type", "Feature","geometry", bag_pack("type", "GeometryCollection", "geometries", roads_lst), "properties", bag_pack("name", "roads"))
Hasil
geojson |
---|
{"type": "Feature", "geometry": {"type": "GeometryCollection", "geometries": [ ... ]}, "properties": {"name": "roads"}} |
Contoh berikut menyederhanakan garis dan hasil unifies
NY_Manhattan_Roads
| project road = features.geometry
| project road_simplified = geo_line_simplify(road, 100)
| summarize roads_lst = make_list(road_simplified)
| project roads = geo_union_lines_array(roads_lst)
Hasil
Jalan |
---|
{"type": "MultiLineString", "coordinates": [ ... ]} |
Contoh berikut mengembalikan True karena baris yang tidak valid.
print is_invalid_line = isnull(geo_line_simplify(dynamic({"type":"LineString","coordinates":[[1, 1]]})))
Hasil
is_invalid_line |
---|
Benar |
Contoh berikut mengembalikan True karena toleransi yang tidak valid.
print is_invalid_line = isnull(geo_line_simplify(dynamic({"type":"LineString","coordinates":[[1, 1],[2,2]]}), -1))
Hasil
is_invalid_line |
---|
Benar |
Contoh berikut mengembalikan True karena toleransi tinggi menyebabkan garis kecil menghilang.
print is_invalid_line = isnull(geo_line_simplify(dynamic({"type":"LineString","coordinates":[[1.1, 1.1],[1.2,1.2]]}), 100000))
Hasil
is_invalid_line |
---|
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