geo_line_densify()
S’applique à : ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
Convertit des lignes planaires ou des bords multilignes en géodésiques en ajoutant des points intermédiaires.
Syntaxe
geo_line_densify(
tolérance,
lineString,
[ preserve_crossing ])
En savoir plus sur les conventions de syntaxe.
Paramètres
Nom | Type | Requise | Description |
---|---|---|---|
lineString | dynamic |
✔️ | LineString ou MultiLineString 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 10 est utilisée. |
|
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. |
Retours
Ligne dénsifiée au format GeoJSON et d’un type de données dynamique . Si la ligne 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 .
Définition LineString
dynamic({"type » : « LineString »,"coordinates » : [[lng_1,lat_1], [lng_2,lat_2], ..., [lng_N,lat_N]})
dynamic({"type » : « MultiLineString »,"coordinates » : [[line_1, line_2, ..., line_N]})
- Le tableau de coordonnées LineString doit contenir au moins deux entrées.
- 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].
- 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 la ligne dénsifiée est limité à 10485760.
- Le stockage de lignes au format dynamique a des limites de taille.
Motivation
- Le format GeoJSON définit un bord entre deux points sous la forme d’une ligne cartestérisienne droite tout en
geo_line_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.
Exemples
L’exemple suivant dénsifie une route dans l’île de Manhattan. Le bord est court et la distance entre le bord planaire et son équivalent géodésique est inférieure à la distance spécifiée par tolérance. Par conséquent, le résultat reste inchangé.
print densified_line = tostring(geo_line_densify(dynamic({"type":"LineString","coordinates":[[-73.949247, 40.796860],[-73.973017, 40.764323]]})))
Sortie
densified_line |
---|
{"type » :"LineString »,"coordinates » :[-73.949247, 40.796860], [-73.973017, 40.764323]]] } |
L’exemple suivant dénsifie un bord d’environ 130 km de longueur
print densified_line = tostring(geo_line_densify(dynamic({"type":"LineString","coordinates":[[50, 50], [51, 51]]})))
Sortie
densified_line |
---|
{"type » :"LineString »,"coordinates » :[[50,50],[50.125,50.125],[50.25,50.25],[50.375,50.375],[[50.375],[50.375][50.375][50.375][50.375][50.375][50.375] 50.5,50.5],[50.625,50.625],[50.75,50.75],[50.875,50.875],[51,51]]] } |
L’exemple suivant retourne un résultat Null en raison de l’entrée de coordonnées non valide.
print densified_line = geo_line_densify(dynamic({"type":"LineString","coordinates":[[300,1],[1,1]]}))
Sortie
densified_line |
---|
L’exemple suivant retourne un résultat Null en raison de l’entrée de tolérance non valide.
print densified_line = geo_line_densify(dynamic({"type":"LineString","coordinates":[[1,1],[2,2]]}), 0)
Sortie
densified_line |
---|