Sdílet prostřednictvím


geo_line_buffer()

Vypočítá mnohoúhelník nebo multipolygon, který obsahuje všechny body v daném poloměru vstupní čáry nebo víceřádkové čáry na Zemi.

Syntax

geo_line_buffer(Linestring,Radius,Tolerance)

Přečtěte si další informace o konvencích syntaxe.

Parametry

Název Typ Vyžadováno Popis
Linestring dynamic ✔️ LineString nebo MultiLineString ve formátu GeoJSON.
Radius real ✔️ Poloměr vyrovnávací paměti v metrech. Platná hodnota musí být kladná.
Tolerance real Definuje toleranci v metrech, která určuje, jak moc se mnohoúhelník může odchylovat od ideálního poloměru. Pokud není zadán, použije se výchozí hodnota 10 . Tolerance by neměla být menší než 0,0001 % poloměru. Zadáním tolerance větší než poloměr snížíte toleranci na největší možnou hodnotu pod poloměrem.

Návraty

Mnohoúhelník nebo MultiPolygon kolem vstupu LineString nebo MultiLineString. Pokud jsou souřadnice, poloměr nebo tolerance neplatné, dotaz vytvoří výsledek null.

Poznámka

  • Geoprostorové souřadnice jsou interpretovány jako reprezentované systémem souřadnic WGS-84 .
  • Geodetické datum používané k měření vzdálenosti na Zemi je koule.
  • Pokud jsou hrany vstupních čar rovné kartézské čáry, zvažte použití geo_line_densify() k převodu rovinných okrajů na geodézie.
  • Konce čar jsou zaoblené.
  • Obě strany čar jsou v vyrovnávací paměti.

Definice a omezení linestringu

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]]})

  • Pole souřadnic LineString musí obsahovat alespoň dvě položky.
  • Souřadnice [zeměpisná délka, zeměpisná šířka] musí být platné, kde zeměpisná délka je reálné číslo v rozsahu [-180; +180] a zeměpisná šířka je reálné číslo v rozsahu [-90, +90].
  • Délka hrany musí být menší než 180 stupňů. Zvolí se nejkratší hrana mezi těmito dvěma vrcholy.

Příklady

Následující dotaz vypočítá mnohoúhelník kolem přímky s poloměrem 4 metry a tolerancí 0,1 m.

let line = dynamic({"type":"LineString","coordinates":[[-80.66634997047466,24.894526340592122],[-80.67373241820246,24.890808090321286]]});
print buffer = geo_line_buffer(line, 4, 0.1)
Vyrovnávací paměti
{"type": "Mnohoúhelník", "souřadnice": [ ... ]}

Následující dotaz vypočítá vyrovnávací paměť kolem každého řádku a sjednocuje výsledek.

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": [ ... ]}

Následující příklad vrátí hodnotu true kvůli neplatnému řádku.

print buffer = isnull(geo_line_buffer(dynamic({"type":"LineString"}), 5))
Vyrovnávací paměti
Ano

Následující příklad vrátí hodnotu true kvůli neplatnému poloměru.

print buffer = isnull(geo_line_buffer(dynamic({"type":"LineString","coordinates":[[0,0],[1,1]]}), 0))
Vyrovnávací paměti
Ano