geo_union_polygons_array()
S’applique à : ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft 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
- 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.
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 |