Partager via


geo_line_densify()

S’applique à : ✅Microsoft Fabric✅Azure Data ExplorerAzure MonitorMicrosoft 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