Udostępnij za pośrednictwem


geo_intersection_2lines()

Dotyczy: ✅Microsoft Fabric✅Azure Data ExplorerAzure MonitorMicrosoft Sentinel

Oblicza przecięcie dwóch linii lub wielolinii.

Składnia

geo_intersection_2lines(lineString1,lineString2)

Dowiedz się więcej na temat konwencji składni.

Parametry

Nazwisko Type Wymagania opis
lineString1 dynamic ✔️ Wiersz lub wielowierszowy w formacie GeoJSON.
lineString2 dynamic ✔️ Wiersz lub wielowierszowy w formacie GeoJSON.

Zwraca

Skrzyżowanie w formacie GeoJSON i dynamiczny typ danych. Jeśli ciąg LineString lub MultiLineString są nieprawidłowe, zapytanie spowoduje wygenerowanie wyniku o wartości null.

Uwaga

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

Napiwek

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

Wyjście

skrzyżowanie
{"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)

Wyjście

skrzyżowanie
{"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)

Wyjście

skrzyżowanie
{"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))

Wyjście

nieprawidłowe
1