geo_simplify_polygons_array()
Menyederhanakan poligon dengan mengganti rantai tepi pendek yang hampir lurus dengan satu tepi panjang di Bumi.
Sintaks
geo_simplify_polygons_array(
toleransi,
poligon)
Pelajari selengkapnya tentang konvensi sintaksis.
Parameter
Nama | Tipe | Wajib | Deskripsi |
---|---|---|---|
polygon | dynamic |
✔️ | Poligon atau multipoligon 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
Poligon yang disederhanakan atau multipoligon dalam format GeoJSON dan jenis data dinamis , tanpa dua simpul dengan jarak kurang dari toleransi. Jika poligon atau toleransi tidak valid, kueri akan memberikan hasil null.
Catatan
- Jika input adalah poligon tunggal, silakan lihat geo_polygon_simplify().
- Koordinat geospasial diinterpretasikan sebagaimana diwakili oleh sistem referensi koordinat WGS-84.
- Datum geodetik yang digunakan untuk pengukuran di Bumi adalah bola. Tepi poligon adalah geodesik pada bola.
- Jika tepi poligon input adalah garis kartesius lurus, pertimbangkan untuk menggunakan geo_polygon_densify() untuk mengonversi tepi planar menjadi geodesik.
- Jika inputnya adalah multipoligon dan berisi lebih dari satu poligon, hasilnya adalah luas gabungan poligon.
- Toleransi tinggi dapat menyebabkan poligon kecil menghilang.
Definisi dan batasan poligon
dynamic({"type": "Polygon","coordinates": [ LinearRingShell, LinearRingHole_1, ..., LinearRingHole_N ]})
dynamic({"type": "MultiPolygon","coordinates": [[ LinearRingShell, LinearRingHole_1, ..., LinearRingHole_N ], ..., [LinearRingShell, LinearRingHole_1, ..., LinearRingHole_M]]})
- LinearRingShell diperlukan dan didefinisikan sebagai array berurutan koordinat
counterclockwise
[[lng_1,lat_1],...,[lng_i,lat_i],...,[lng_j,lat_j],...,[lng_1,lat_1]]. Hanya boleh ada satu shell. - LinearRingHole diperlukan dan didefinisikan sebagai array berurutan koordinat
clockwise
[[lng_1,lat_1],...,[lng_i,lat_i],...,[lng_j,lat_j],...,[lng_1,lat_1]]. Mungkin ada sejumlah cincin dan lubang interior. - Puncak LinearRing harus berbeda dengan setidaknya tiga koordinat. Koordinat pertama harus sama dengan yang terakhir. Setidaknya empat entri yang diperlukan.
- Koordinat [garis bujur, garis lintang] harus valid. Bujur harus berupa bilangan real dalam rentang [-180, +180] dan garis lintang berupa menjadi bilangan real dalam rentang [-90, +90].
- LinearRingShell menutup paling banyak setengah dari bola. LinearRing membagi bola menjadi dua wilayah. Yang lebih kecil dari dua wilayah akan dipilih.
- Panjang tepi LinearRing harus kurang dari 180 derajat. Tepi terpendek antara dua puncak akan dipilih.
- LinearRing tidak boleh bersilangan dan tidak boleh berbagi tepi. LinearRings dapat berbagi puncak.
Contoh
Contoh berikut menyederhanakan poligon dengan batas bersama (status AS), dengan menghapus simpul yang berada dalam jarak 100 meter satu sama lain.
US_States
| project polygon = features.geometry
| summarize lst = make_list(polygon)
| project polygons = geo_simplify_polygons_array(lst, 100)
Hasil
Poligon |
---|
{ "type": "MultiPolygon", "coordinates": [ ... ]]} |
Contoh berikut mengembalikan True karena salah satu poligon tidak valid.
datatable(polygons:dynamic)
[
dynamic({"type":"Polygon","coordinates":[[[-73.9495,40.7969],[-73.95807,40.80068],[-73.98201,40.76825],[-73.97317,40.76455],[-73.9495,40.7969]]]}),
dynamic({"type":"Polygon","coordinates":[[[-73.94622,40.79249]]]}),
dynamic({"type":"Polygon","coordinates":[[[-73.97335,40.77274],[-73.9936,40.76630],[-73.97171,40.75655],[-73.97335,40.77274]]]})
]
| summarize arr = make_list(polygons)
| project is_invalid_polygon = isnull(geo_simplify_polygons_array(arr))
Hasil
is_invalid_polygon |
---|
1 |
Contoh berikut mengembalikan True karena toleransi yang tidak valid.
datatable(polygons:dynamic)
[
dynamic({"type":"Polygon","coordinates":[[[-73.9495,40.7969],[-73.95807,40.80068],[-73.98201,40.76825],[-73.97317,40.76455],[-73.9495,40.7969]]]}),
dynamic({"type":"Polygon","coordinates":[[[-73.94622,40.79249],[-73.96888,40.79282],[-73.9577,40.7789],[-73.94622,40.79249]]]}),
dynamic({"type":"Polygon","coordinates":[[[-73.97335,40.77274],[-73.9936,40.76630],[-73.97171,40.75655],[-73.97335,40.77274]]]})
]
| summarize arr = make_list(polygons)
| project is_null = isnull(geo_simplify_polygons_array(arr, -1))
Hasil
is_null |
---|
1 |
Contoh berikut mengembalikan True karena toleransi tinggi menyebabkan poligon menghilang.
datatable(polygons:dynamic)
[
dynamic({"type":"Polygon","coordinates":[[[-73.9495,40.7969],[-73.95807,40.80068],[-73.98201,40.76825],[-73.97317,40.76455],[-73.9495,40.7969]]]}),
dynamic({"type":"Polygon","coordinates":[[[-73.94622,40.79249],[-73.96888,40.79282],[-73.9577,40.7789],[-73.94622,40.79249]]]}),
dynamic({"type":"Polygon","coordinates":[[[-73.97335,40.77274],[-73.9936,40.76630],[-73.97171,40.75655],[-73.97335,40.77274]]]})
]
| summarize arr = make_list(polygons)
| project is_null = isnull(geo_simplify_polygons_array(arr, 10000))
Hasil
is_null |
---|
1 |
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