Udostępnij za pośrednictwem


geo_line_buffer()

Oblicza wielokąt lub wielobiegun, który zawiera wszystkie punkty w danym promieniu linii wejściowej lub wielowierszowej na Ziemi.

Składnia

geo_line_buffer(Linestring,Promień,Tolerancji)

Dowiedz się więcej o konwencjach składniowych.

Parametry

Nazwa Typ Wymagane Opis
Linestring dynamic ✔️ Ciąg lineString lub MultiLineString w formacie GeoJSON.
Promień real ✔️ Promień buforu w metrach. Prawidłowa wartość musi być dodatnia.
Tolerancji real Definiuje tolerancję w metrach, która określa, ile wielokąt może odbiegać od idealnego promienia. Jeśli nie zostanie określona, zostanie użyta wartość 10 domyślna. Tolerancja nie powinna być niższa niż 0,0001% promienia. Określenie tolerancji większej niż promień obniża tolerancję do największej możliwej wartości poniżej promienia.

Zwraca

Wielokąt lub MultiPolygon wokół wejściowego ciągu LineString lub MultiLineString. Jeśli współrzędne lub promień lub tolerancja są nieprawidłowe, zapytanie generuje wynik o wartości null.

Uwaga

  • Współrzędne geoprzestrzenne są interpretowane jako reprezentowane przez system odniesienia współrzędnych WGS-84 .
  • Dataum geodetyczne używane do mierzenia odległości na Ziemi jest sferą.
  • Jeśli krawędzie linii wejściowej są prostymi liniami kartezjańskimi, rozważ użycie geo_line_densify(), aby przekonwertować krawędzie planarne na geodesyki.
  • Końce linii są zaokrąglone.
  • Obie strony linii są buforowane.

Definicja i ograniczenia lineString

dynamic({"type": "LineString","coordinates": [[lng_1,lat_1], [lng_2,lat_2], ..., [lng_N,lat_N]]})

dynamic({"type": "MultiLineString","współrzędne": [[line_1, line_2, ..., line_N]]})

  • Tablica współrzędnych LineString musi zawierać co najmniej dwa wpisy.
  • Współrzędne [długość geograficzna, szerokość geograficzna] muszą być prawidłowe, gdy długość geograficzna jest liczbą rzeczywistą w zakresie [-180, +180], a szerokość geograficzna jest liczbą rzeczywistą w zakresie [-90, +90].
  • Długość krawędzi musi być mniejsza niż 180 stopni. Zostanie wybrana najkrótsza krawędź między dwoma wierzchołkami.

Przykłady

Poniższe zapytanie oblicza wielokąt wokół linii z promieńem 4 metrów i tolerancją miernika 0,1

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

Poniższe zapytanie oblicza bufor wokół każdego wiersza i jednoczy wynik

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","współrzędne": [ ... ]}

Poniższy przykład zwróci wartość true z powodu nieprawidłowego wiersza.

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

Poniższy przykład zwróci wartość true z powodu nieprawidłowego promienia.

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