Udostępnij za pośrednictwem


geo_line_buffer()

Dotyczy: ✅Microsoft Fabric✅Azure Data ExplorerAzure MonitorMicrosoft Sentinel

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

Składnia

geo_line_buffer(tolerancja promienia, lineString, )

Dowiedz się więcej na temat konwencji składni.

Parametry

Nazwisko Type Wymagania opis
lineString dynamic ✔️ Ciąg lineString lub MultiLineString w formacie GeoJSON.
promień real ✔️ Promień buforu w metrach. Prawidłowa wartość musi być dodatnia.
tolerancja real Definiuje tolerancję w metrach, która określa, ile wielokąt może odbiegać od idealnego promienia. Jeśli nie określono, zostanie użyta wartość 10 domyślna. Tolerancja nie powinna być niższa niż 0,0001% promienia. Określanie tolerancji większej niż promień obniża tolerancję 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 .
  • Geodetyczne datum używane do mierzenia odległości na Ziemi jest sferą.
  • Jeśli krawędzie linii wejściowej są liniami kartezjańskimi, rozważ użycie geo_line_densify() w celu przekonwertowania krawędzi planarnych na geodesiki.
  • 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, gdzie 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)
bufor
{"type": "Polygon", "współrzędne": [ ... ]}

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": "Wielokąt","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))
bufor
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))
bufor
Prawda