geo_intersection_2lines()
Dotyczy: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft 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
- 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ą geodesykami na sferze.
- Jeśli krawędzie linii wejściowej są liniami kartezjańskimi, rozważ użycie geo_line_densify() w celu przekonwertowania krawędzi planarnych na geodesiki.
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 |