geo_polygon_centroid()
Menghitung sentroid poligon atau multipoligon di Bumi.
Sintaks
geo_polygon_centroid(
polygon)
Pelajari selengkapnya tentang konvensi sintaksis.
Parameter
Nama | Jenis | Diperlukan | Deskripsi |
---|---|---|---|
Poligon | dynamic |
✔️ | Poligon atau multipoligon dalam format GeoJSON. |
Mengembalikan
Nilai koord sentroid dalam Format GeoJSON dan jenis data dinamis. Jika poligon atau multipoligon tidak valid, kueri menghasilkan hasil null.
Catatan
- 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 akan menjadi sentroid gabungan poligon.
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 [bujur, lintang] harus valid. Bujur harus bilangan riil dalam rentang [-180, +180] dan lintang harus bilangan riil dalam rentang [-90, +90].
- LinearRingShell menutup paling banyak setengah dari bola. LinearRing membagi bola menjadi dua wilayah dan memilih yang lebih kecil dari dua wilayah.
- Panjang tepi LinearRing harus kurang dari 180 derajat. Tepi terpendek antara dua simpul dipilih.
- LinearRing tidak boleh bersilangan dan tidak boleh berbagi tepi. LinearRings mungkin berbagi simpul.
Contoh
Contoh berikut menghitung sentroid Central Park di Kota New York.
let central_park = dynamic({"type":"Polygon","coordinates":[[[-73.9495,40.7969],[-73.95807266235352,40.80068603561921],[-73.98201942443848,40.76825672305777],[-73.97317886352539,40.76455136505513],[-73.9495,40.7969]]]});
print centroid = geo_polygon_centroid(central_park)
Output
sentroid |
---|
{"type": "Point", "coordinates": [-73.965735689907618, 40.782550538057812]} |
Contoh berikut menghitung bujur sentroid Central Park.
let central_park = dynamic({"type":"Polygon","coordinates":[[[-73.9495,40.7969],[-73.95807266235352,40.80068603561921],[-73.98201942443848,40.76825672305777],[-73.97317886352539,40.76455136505513],[-73.9495,40.7969]]]});
print
centroid = geo_polygon_centroid(central_park)
| project lng = centroid.coordinates[0]
Output
lng |
---|
-73.9657356899076 |
Contoh berikut melakukan penyatuan poligon dalam multipoligon dan menghitung sentroid poligon terpadu.
let polygons = dynamic({"type":"MultiPolygon","coordinates":[[[[-73.9495,40.7969],[-73.95807266235352,40.80068603561921],[-73.98201942443848,40.76825672305777],[-73.97317886352539,40.76455136505513],[-73.9495,40.7969]]],[[[-73.94262313842773,40.775991804565585],[-73.98107528686523,40.791849155467695],[-73.99600982666016,40.77092185281977],[-73.96150588989258,40.75609977566361],[-73.94262313842773,40.775991804565585]]]]});
print polygons_union_centroid = geo_polygon_centroid(polygons)
Output
polygons_union_centroid |
---|
"type": "Point", "coordinates": [-73.968569587829577, 40.776310752555119]} |
Contoh berikut memvisualisasikan sentroid Central Park pada peta.
let central_park = dynamic({"type":"Polygon","coordinates":[[[-73.9495,40.7969],[-73.95807266235352,40.80068603561921],[-73.98201942443848,40.76825672305777],[-73.97317886352539,40.76455136505513],[-73.9495,40.7969]]]});
print
centroid = geo_polygon_centroid(central_park)
| render scatterchart with (kind = map)
Output
Contoh berikut mengembalikan true
karena poligon yang tidak valid.
print isnull(geo_polygon_centroid(dynamic({"type": "Polygon","coordinates": [[[0,0],[10,10],[10,10],[0,0]]]})))
Output
print_0 |
---|
TRUE |
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