Partager via


geo_union_polygons_array()

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

Calcule l’union des polygones ou des multipolygons sur Terre.

Syntaxe

geo_union_polygons_array(Polygones)

En savoir plus sur les conventions de syntaxe.

Paramètres

Nom Type Requise Description
Polygones dynamic ✔️ Tableau de polygones ou de multipolygons au format GeoJSON.

Retours

Polygone ou multipolygon au format GeoJSON et d’un type de données dynamique . Si l’un des polygones ou multipolygons fournis n’est pas valide, la requête produit un résultat null.

Remarque

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 effectue une union géospatiale sur les lignes de polygones.

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 polygons_arr = make_list(polygons)
| project polygons_union = geo_union_polygons_array(polygons_arr)

Sortie

polygons_union
{"type":"Polygon","coordinates":[[[-73.972599326729608,40.765330371902991],[-73.960302383706178,40.782140794645024],[-73.9577,40.7789],[-73.94622,40.79249],[-73.9526593223173,40.792584227716468],[-73.9495,40.7969],[-73.95807,40.80068],[-73.9639277517478,40.792748258673875],[-73.96888,40.792819999999992],[-73.9662719791645,40.7895734224338],[-73.9803360309571,40.770518810606404],[-73.9936,40.7663],[-73.97171,40.756550000000004],[- 73.972599326729608,40.765330371902991]]]}

L’exemple suivant effectue une union géospatiale sur les colonnes de polygones.

datatable(polygon1:dynamic, polygon2: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]]]})
]
| project polygons_arr = pack_array(polygon1, polygon2)
| project polygons_union = geo_union_polygons_array(polygons_arr)

Sortie

polygons_union
{"type » :"Polygon »,"coordinates » :[[-73.9495,40.7969],[-73.95807,40.80068],[-73.9639277517478,40.792748258673875],[-73.96888,40.79281999999999999992],[-73.9662719791645,40.7895734224338],[-73.98201,140.76825],[-73.97317,40.76455],[-73.960302383706178,40.782140794645024],[-73.9577,40.7789],[-73.94622,40.79249],[-73.952659323173,40.792584227716468],[-73.9495,40.7969]}

L’exemple suivant retourne True, car l’un des polygones n’est pas valide.

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]]]})
]
| summarize polygons_arr = make_list(polygons)
| project invalid_union = isnull(geo_union_polygons_array(polygons_arr))

Sortie

invalid_union
True