Bagikan melalui


geo_polygon_area()

Menghitung area poligon atau multipoligon di Bumi.

Sintaks

geo_polygon_area(polygon)

Pelajari selengkapnya tentang konvensi sintaksis.

Parameter

Nama Jenis Diperlukan Deskripsi
Poligon dynamic ✔️ Poligon atau multipoligon dalam format GeoJSON.

Mengembalikan

Luas poligon atau multipoligon, dalam meter persegi, di Bumi. Jika poligon atau multipoligon tidak valid, kueri akan 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 mengubah tepi planar menjadi geodesik.
  • Jika inputnya adalah multipoligon dan berisi lebih dari satu poligon, hasilnya adalah luas gabungan poligon.

Batasan dan definisi 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. 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 menghitung area Central Park NYC.

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 area = geo_polygon_area(central_park)

Output

area
3475207.28346606

Contoh berikut melakukan penyatuan poligon dalam multipoligon dan menghitung luas pada 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_area = geo_polygon_area(polygons)

Output

polygons_union_area
10889971.5343487

Contoh berikut menghitung 5 negara bagian AS terbesar berdasarkan wilayah.

US_States
| project name = features.properties.NAME, polygon = geo_polygon_densify(features.geometry)
| project name, area = geo_polygon_area(polygon)
| top 5 by area desc

Output

nama area
Alaska 1550934810070.61
Texas 693231378868.483
California 410339536449.521
Montana 379583933973.436
New Mexico 314979912310.579

Contoh berikut mengembalikan True karena poligon yang tidak valid.

print isnull(geo_polygon_area(dynamic({"type": "Polygon","coordinates": [[[0,0],[10,10],[10,10],[0,0]]]})))

Output

print_0
True