Sdílet prostřednictvím


geo_intersection_2lines()

Vypočítá průsečík dvou čar nebo více čar.

Syntax

geo_intersection_2lines(lineString1,lineString2)

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

Parametry

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

Návraty

Průnik ve formátu GeoJSON a dynamického datového typu. Pokud jsou řetězec LineString nebo MultiLineString neplatné, dotaz vygeneruje 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. 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 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.

Tip

Pro lepší výkon použijte literál LineString nebo MultiLineString.

Příklady

Následující příklad vypočítá průnik mezi dvěma spojnicemi. V tomto případě je výsledkem bod.

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 intersection = geo_intersection_2lines(lineString1, lineString2)

Výstup

Průsečíku
{"type": "Point","coordinates": [-73.979837116670978,40.783989289772165]}

Následující příklad vypočítá průnik mezi dvěma spojnicemi. V tomto případě je výsledkem čára.

let line = dynamic({"type":"LineString","coordinates":[[-73.978929,40.785155],[-73.980903,40.782621]]});
print intersection = geo_intersection_2lines(line, line)

Výstup

Průsečíku
{"type": "LineString","coordinates": [[ -73.978929, 40.785155],[ -73.980903, 40.782621]]}

Následující dva řádky se neprotínají.

let lineString1 = dynamic({"type":"LineString","coordinates":[[1, 1],[2, 2]]});
let lineString2 = dynamic({"type":"LineString","coordinates":[[3, 3],[4, 4]]});
print intersection = geo_intersection_2lines(lineString1, lineString2)

Výstup

Průsečíku
{"type": "GeometryCollection", "geometries": []}

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

let lineString1 = dynamic({"type":"LineString","coordinates":[[1, 1],[2, 2]]});
let lineString2 = dynamic({"type":"LineString","coordinates":[[3, 3]]});
print invalid = isnull(geo_intersection_2lines(lineString1, lineString2))

Výstup

neplatné
1