geo_intersects_2lines()

Oblicza, czy dwa wiersze czy wielowierszowe przecinają się.

Składnia

geo_intersects_2lines(lineString1,lineString2)

Dowiedz się więcej o konwencjach składniowych.

Parametry

Nazwa Typ Wymagane Opis
lineString1 dynamic ✔️ Wiersz lub wielowierszowy w formacie GeoJSON.
lineString2 dynamic ✔️ Wiersz lub wielowierszowy w formacie GeoJSON.

Zwraca

Wskazuje, czy dwa wiersze czy wielowierszowe przecinają się. Jeśli ciąg lineString lub multiLineString są nieprawidłowe, zapytanie spowoduje wygenerowanie wyniku 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ą. Krawędzie linii są geodesics na sferze.
  • Jeśli krawędzie linii wejściowej są liniami kartezjańskimi, rozważ użycie geo_line_densify(), aby przekonwertować krawędzie planarne na geodesy.

Definicja i ograniczenia lineString

dynamic({"type": "LineString","współrzędne": [[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.

Porada

Aby uzyskać lepszą wydajność, użyj literału LineString lub MultiLineString.

Przykłady

Poniższy przykład sprawdza, czy niektóre dwa wiersze literału przecinają się.

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)

Dane wyjściowe

Przecina
Prawda

Poniższy przykład znajduje wszystkie drogi w tabeli dróg GeoJSON NYC, która przecina się z niektórymi liniami zainteresowania.

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

Dane wyjściowe

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

Poniższy przykład zwróci wynik o wartości null, ponieważ jeden z wierszy jest nieprawidłowy.

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

Dane wyjściowe

print_0
Prawda