Partager via


geo_line_buffer()

Calcule le polygone ou le multipolygon qui contient tous les points dans le rayon donné de la ligne d’entrée ou du multiligne sur terre.

Syntaxe

geo_line_buffer(tolérance de rayon, lineString, )

En savoir plus sur les conventions de syntaxe.

Paramètres

Nom Type Requise Description
lineString dynamic ✔️ LineString ou MultiLineString au format GeoJSON.
rayon real ✔️ Rayon de mémoire tampon en mètres. La valeur valide doit être positive.
tolerance real Définit la tolérance en mètres qui détermine la quantité d’un polygone qui peut s’écarter du rayon idéal. Si la valeur n’est pas spécifiée, la valeur par défaut 10 est utilisée. La tolérance ne doit pas être inférieure à 0,0001 % du rayon. La spécification de la tolérance supérieure au rayon réduit la tolérance à la plus grande valeur possible en dessous du rayon.

Retours

Polygone ou MultiPolygon autour de l’entrée LineString ou MultiLineString. Si les coordonnées ou le rayon ou la tolérance ne sont pas valides, 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 mesurer la distance sur terre est une sphère.
  • Si les bords de ligne d’entrée sont des lignes cartésiennes droites, envisagez d’utiliser geo_line_densify() pour convertir les bords planaires en géodésiques.
  • Les extrémités des lignes sont arrondies.
  • Les deux côtés des lignes sont mis en mémoire tampon.

Définition et contraintes 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, où la longitude est un nombre réel dans la plage [-180, +180] et la latitude est 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.

Exemples

La requête suivante calcule le polygone autour de la ligne, avec un rayon de 4 mètres et une tolérance de 0,1 mètre

let line = dynamic({"type":"LineString","coordinates":[[-80.66634997047466,24.894526340592122],[-80.67373241820246,24.890808090321286]]});
print buffer = geo_line_buffer(line, 4, 0.1)
buffer
{"type » : « Polygon », « coordinates » : [ ... ]}

La requête suivante calcule la mémoire tampon autour de chaque ligne et unifie le résultat

datatable(line:dynamic)
[
    dynamic({"type":"LineString","coordinates":[[14.429214068940496,50.10043066548272],[14.431184174126173,50.10046525983731]]}),
    dynamic({"type":"LineString","coordinates":[[14.43030222687753,50.100780677801936],[14.4303847111523,50.10020274910934]]})
]
| project buffer = geo_line_buffer(line, 2, 0.1)
| summarize polygons = make_list(buffer)
| project result = geo_union_polygons_array(polygons)
result
{"type » : « Polygon »,"coordinates » : [ ... ]}

L’exemple suivant retourne true, en raison d’une ligne non valide.

print buffer = isnull(geo_line_buffer(dynamic({"type":"LineString"}), 5))
buffer
True

L’exemple suivant retourne true, en raison d’un rayon non valide.

print buffer = isnull(geo_line_buffer(dynamic({"type":"LineString","coordinates":[[0,0],[1,1]]}), 0))
buffer
True