geo_simplify_polygons_array()
S’applique à : ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
Simplifie les polygones en remplaçant des chaînes presque droites de bords courts par un seul bord long sur terre.
Syntaxe
geo_simplify_polygons_array(
tolérance aux polygones,
)
En savoir plus sur les conventions de syntaxe.
Paramètres
Nom | Type | Requise | Description |
---|---|---|---|
polygone | dynamic |
✔️ | Polygone ou multipolygon au format GeoJSON. |
tolerance | int, long ou réel | Définit la distance minimale en mètres entre deux sommets. Les valeurs prises en charge sont comprises dans la plage [0, ~7,800,000 mètres]. Si la valeur n’est pas spécifiée, la valeur par défaut 10 est utilisée. |
Retours
Polygone simplifié ou multipolygon au format GeoJSON et d’un type de données dynamique , sans deux sommets avec une distance inférieure à la tolérance. Si le polygone ou la tolérance n’est pas valide, la requête produit un résultat null.
Remarque
- Si l’entrée est un polygone unique, consultez geo_polygon_simplify().
- 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.
- Une tolérance élevée peut entraîner la disparition de petits 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 simplifie les polygones avec des bordures mutuelles (États-Unis), en supprimant les sommets situés à une distance de 100 mètres entre eux.
US_States
| project polygon = features.geometry
| summarize lst = make_list(polygon)
| project polygons = geo_simplify_polygons_array(lst, 100)
Sortie
polygones |
---|
{ « type » : « MultiPolygon », « coordinates » : [ ... ]]} |
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]]]}),
dynamic({"type":"Polygon","coordinates":[[[-73.97335,40.77274],[-73.9936,40.76630],[-73.97171,40.75655],[-73.97335,40.77274]]]})
]
| summarize arr = make_list(polygons)
| project is_invalid_polygon = isnull(geo_simplify_polygons_array(arr))
Sortie
is_invalid_polygon |
---|
1 |
L’exemple suivant retourne True en raison de la tolérance non 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],[-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 arr = make_list(polygons)
| project is_null = isnull(geo_simplify_polygons_array(arr, -1))
Sortie
is_null |
---|
1 |
L’exemple suivant retourne True, car la tolérance élevée entraîne la disparition du polygone.
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 arr = make_list(polygons)
| project is_null = isnull(geo_simplify_polygons_array(arr, 10000))
Sortie
is_null |
---|
1 |