Partager via


geo_polygon_area()

S’applique à : ✅Microsoft Fabric✅Azure Data ExplorerAzure MonitorMicrosoft Sentinel

Calcule la zone d’un polygone ou d’un multipolygon sur Terre.

Syntaxe

geo_polygon_area(polygone)

En savoir plus sur les conventions de syntaxe.

Paramètres

Nom Type Requise Description
polygone dynamic ✔️ Polygone ou multipolygon au format GeoJSON.

Retours

La zone d’un polygone ou d’un multipolygon, en mètres carrés, sur Terre. Si le polygone ou le multipolygon n’est pas valide, la requête produit un résultat null.

Remarque

  • Les coordonnées géospatiales sont interprétées comme représentées par le système de référence de coordonnées WGS-84 .
  • La référence géodésique utilisée pour les mesures sur Terre est une sphère. Les bords de polygones sont géodésiques sur la sphère.
  • Si les bords des polygones d’entrée sont des lignes cartestériennes droites, envisagez d’utiliser geo_polygon_densify() pour convertir des bords planaires en géodésiques.
  • Si l’entrée est un multipolygon et contient plusieurs polygones, le résultat est la zone d’union des polygones.

Définition et contraintes de polygones

dynamic({"type » : « Polygon »,"coordinates » : [ LinearRingShell, LinearRingHole_1, ..., LinearRingHole_N ]})

dynamic({"type » : « MultiPolygon »,"coordinates » : [[ LinearRingShell, LinearRingHole_1, ..., LinearRingHole_N ], ..., [LinearRingShell, LinearRingHole_1, ..., LinearRingHole_M]})

  • LinearRingShell est obligatoire et défini comme un counterclockwise tableau ordonné de coordonnées [[lng_1,lat_1],...,[lng_i,lat_i],...,[lng_j,lat_j],...,[lng_1,lat_1]]. Il ne peut y avoir qu’un seul interpréteur de commandes.
  • LinearRingHole est facultatif et défini comme un clockwise tableau ordonné de coordonnées [[lng_1,lat_1],...,[lng_i,lat_i],...,[lng_j,lat_j],...,[lng_1,lat_1]]. Il peut y avoir n’importe quel nombre d’anneaux intérieurs et de trous.
  • Les sommets LinearRing doivent être distincts avec au moins trois coordonnées. La première coordonnée doit être égale au dernier. Au moins quatre entrées sont requises.
  • Les coordonnées [longitude, latitude] doivent être valides. La longitude doit être un nombre réel dans la plage [-180, +180] et la latitude doit être un nombre réel dans la plage [-90, +90].
  • LinearRingShell entoure au maximum la moitié de la sphère. LinearRing divise la sphère en deux régions. La plus petite des deux régions sera choisie.
  • La longueur du bord LinearRing doit être inférieure à 180 degrés. Le bord le plus court entre les deux sommets sera choisi.
  • LinearRings ne doit pas traverser et ne doit pas partager de bords. LinearRings peut partager des sommets.

Exemples

L’exemple suivant calcule la zone nyC 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 area = geo_polygon_area(central_park)

Sortie

area
3475207.28346606

L’exemple suivant effectue l’union de polygones dans multipolygon et calcule la zone sur le polygone unifié.

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)

Sortie

polygons_union_area
10889971.5343487

L’exemple suivant calcule les 5 états américains les plus importants par zone.

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

Sortie

name area
Alaska 1550934810070.61
Texas 693231378868.483
Californie 410339536449.521
Montana 379583933973.436
Nouveau Mexique 314979912310.579

L’exemple suivant retourne True en raison du polygone non valide.

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

Sortie

print_0
True