Sdílet prostřednictvím


geo_intersects_2lines()

Vypočítá, jestli se protínají dvě čáry nebo víceřádky.

Syntax

geo_intersects_2lines(lineString1,lineString2)

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

Parametry

Název Typ Vyžadováno Popis
lineString1 dynamic ✔️ Čára nebo víceřádka ve formátu GeoJSON.
lineString2 dynamic ✔️ Čára nebo víceřádka ve formátu GeoJSON.

Návraty

Označuje, jestli se protínají dvě čáry nebo víceřádky. Pokud jsou řetězec řádku nebo multiLineString neplatné, dotaz vytvoří výsledek null.

Poznámka

  • Geoprostorové souřadnice jsou interpretovány jako reprezentované systémem souřadnic WGS-84 .
  • Geodetickým datem, který se používá k měření vzdálenosti na Zemi, je koule. Hrany čar jsou geodézie na kouli.
  • 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.

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 aspoň dvě položky.
  • Souřadnice [zeměpisná délka, zeměpisná šířka] musí být platné, pokud zeměpisná délka je reálné číslo v oblasti [-180; +180] a zeměpisná šířka je reálné číslo v oblasti [-90, +90].
  • Délka hrany musí být menší než 180 stupňů. Zvolí se nejkratší hrana mezi dvěma vrcholy.

Tip

K lepšímu výkonu použijte literál LineString nebo MultiLineString.

Příklady

Následující příklad zkontroluje, jestli se některé dva řádky literálu protínají.

let lineString1 = dynamic({"type":"LineString","coordinates":[[-73.978929,40.785155],[-73.980903,40.782621]]});
let lineString2 = dynamic({"type":"LineString","coordinates":[[-73.985195,40.788275],[-73.974552,40.779761]]});
print intersects = geo_intersects_2lines(lineString1, lineString2)

Výstup

Protíná
Ano

Následující příklad najde všechny cesty v tabulce NYC GeoJSON roads, která se protíná s některými liniemi zájmu.

let my_road = dynamic({"type":"LineString","coordinates":[[-73.97892951965332,40.78515573551921],[-73.98090362548828,40.78262115769851]]});
NY_Manhattan_Roads
| project name = features.properties.Label, road = features.geometry
| where geo_intersects_2lines(road, my_road)
| project name

Výstup

name
Broadway
W 78. st
W 79. st
W 80th St
W 81st St

Následující příklad vrátí výsledek null, protože jeden z řádků je neplatný.

let lineString1 = dynamic({"type":"LineString","coordinates":[[-73.978929,40.785155],[-73.980903,40.782621]]});
let lineString2 = dynamic({"type":"LineString","coordinates":[[-73.985195,40.788275]]});
print isnull(geo_intersects_2lines(lineString1, lineString2))

Výstup

print_0
Ano