geo_line_buffer()
Dotyczy: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft 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 |