Partager via


geo_polygon_centroid()

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

Calcule le centroïde d’un polygone ou d’un multipolygon sur Terre.

Syntaxe

geo_polygon_centroid(polygone)

En savoir plus sur les conventions de syntaxe.

Paramètres

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

Retours

Valeurs de coordonnées centroïdes au format GeoJSON et d’un type de données dynamique . Si le polygone ou le multipolygon ne sont pas valides, 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 le centroïde des polygones union.

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 et choisit la plus petite des deux régions.
  • La longueur du bord LinearRing doit être inférieure à 180 degrés. Le bord le plus court entre les deux sommets est choisi.
  • LinearRings ne doit pas traverser et ne doit pas partager de bords. LinearRings peut partager des sommets.

Exemples

L’exemple suivant calcule le centroïde Central Park à 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)

Sortie

centroïde
{"type » : « Point », « coordinates » : [-73.965735689907618, 40.782550538057812]}

L’exemple suivant calcule la longitude centroïde 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]

Sortie

GNL
-73.9657356899076

L’exemple suivant effectue l’union de polygones dans multipolygon et calcule le centroïde du 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_centroid = geo_polygon_centroid(polygons)

Sortie

polygons_union_centroid
« type » : « Point », « coordinates » : [-73.968569587829577, 40.77631075255119]}

L’exemple suivant visualise le centroïde Central Park sur une carte.

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)

Sortie

Capture d’écran du centroïde du parc central de New York.

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

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

Sortie

print_0
true