geo_polygon_densify()
S’applique à : ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
Convertit les arêtes planaires d’un polygone ou d’un multipolygone en géodésiques en ajoutant des points intermédiaires.
Syntaxe
geo_polygon_densify(
tolérance de,
polygone,
[ preserve_crossing ])
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 maximale en mètres entre le bord planaire d’origine et la chaîne de bord géodesique convertie. Les valeurs prises en charge se trouvent dans la plage [0.1, 10000]. Si la valeur n’est pas spécifiée, la valeur par défaut est 10 . |
|
preserve_crossing | bool |
Si true , conserve le croisement de bord sur l’antimeridien. Si la valeur n’est pas spécifiée, la valeur par défaut false est utilisée. |
Définition de polygone
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 uncounterclockwise
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 unclockwise
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.LinearRing
les sommets 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.LinearRing
la longueur du bord doit être inférieure à 180 degrés. Le bord le plus court entre les deux sommets sera choisi.
Contraintes
- Le nombre maximal de points dans le polygone dénsifié est limité à 10485760.
- Le stockage de polygones au format dynamique a des limites de taille.
- Lansification d’un polygone valide peut invalider le polygone. L’algorithme ajoute des points d’une manière non uniforme et, par conséquent, peut entraîner l’entrelacé des bords entre eux.
Motivation
- Le format GeoJSON définit un bord entre deux points sous la forme d’une ligne cartestérisienne droite tout en
geo_polygon_densify()
utilisant la géodésique. - La décision d’utiliser des bords géodésiques ou planaires peut dépendre du jeu de données et est particulièrement pertinente dans les bords longs.
Retours
Polygone dénsifié au format GeoJSON et d’un type de données dynamique . Si le polygone ou la tolérance 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 .
Exemples
L’exemple suivant dénsifie le polygone Manhattan Central Park. Les arêtes sont courtes et la distance entre les bords planaires et leurs équivalents géodésiques est inférieure à la distance spécifiée par tolérance. Par conséquent, le résultat reste inchangé.
print densified_polygon = tostring(geo_polygon_densify(dynamic({"type":"Polygon","coordinates":[[[-73.958244,40.800719],[-73.949146,40.79695],[-73.973093,40.764226],[-73.982062,40.768159],[-73.958244,40.800719]]]})))
Sortie
densified_polygon |
---|
{"type » :"Polygon »,"coordinates » :[[-73.958244,40.800719],[-73.949146,40.79695],[-73.973093,40.764226],[-73.982062,40.768159],[-73.958244,40.800719]]]} |
L’exemple suivant dénsifie deux bords du polygone. La longueur des arêtes dénsifiées est d’environ 110 km
print densified_polygon = tostring(geo_polygon_densify(dynamic({"type":"Polygon","coordinates":[[[10,10],[11,10],[11,11],[10,11],[10,10]]]})))
Sortie
densified_polygon |
---|
{"type » :"Polygon »,"coordinates » :[[[[10,10],[10.25,10],[10.5,10],[10.75,10],[11,10][11.10 ],[11,11],[10.75,11],[10.5,11],[10.25,11],[10,11],[10,10,10]]]} |
L’exemple suivant retourne un résultat Null en raison de l’entrée de coordonnées non valide.
print densified_polygon = geo_polygon_densify(dynamic({"type":"Polygon","coordinates":[[[10,900],[11,10],[11,11],[10,11],[10,10]]]}))
Sortie
densified_polygon |
---|
L’exemple suivant retourne un résultat Null en raison de l’entrée de tolérance non valide.
print densified_polygon = geo_polygon_densify(dynamic({"type":"Polygon","coordinates":[[[10,10],[11,10],[11,11],[10,11],[10,10]]]}), 0)
Sortie
densified_polygon |
---|