geo_intersection_2lines()

Oblicza przecięcie dwóch linii lub wielu linii.

Składnia

geo_intersection_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

Skrzyżowanie w formacie GeoJSON i dynamicznym typie danych . Jeśli ciąg LineString lub MultiLineString są nieprawidłowe, zapytanie zwróci wynik o wartości null.

Uwaga

  • Współrzędne geoprzestrzenne są interpretowane jako reprezentowane przez system odniesienia współrzędnych WGS-84 .
  • Dataum geodetyczne używane do mierzenia odległości na Ziemi jest sferą. Krawędzie linii są geodesykami na sferze.
  • Jeśli krawędzie linii wejściowej są prostymi liniami kartezjańskimi, rozważ użycie geo_line_densify(), aby przekonwertować krawędzie planarne na geodesyki.

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, gdy 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

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

Przykłady

Poniższy przykład oblicza przecięcie między dwoma liniami. W tym przypadku wynik jest punktem.

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)

Dane wyjściowe

Przecięcia
{"type": "Point","coordinates": [-73.979837116670978,40.783989289772165]}

Poniższy przykład oblicza przecięcie między dwoma liniami. W tym przypadku wynik jest wierszem.

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

Dane wyjściowe

Przecięcia
{"type": "LineString","coordinates": [[ -73.978929, 40.785155],[ -73.980903, 40.782621]]}

Następujące dwa wiersze nie przecinają się.

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)

Dane wyjściowe

Przecięcia
{"type": "GeometryCollection", "geometrie": []}

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

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

Dane wyjściowe

nieprawidłowe
1