geo_intersects_2lines()
Dotyczy: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
Oblicza, czy dwa wiersze czy wielowierszowe przecinają się.
Składnia
geo_intersects_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
Wskazuje, czy dwa wiersze lub wielowierszowe przecinają się. 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 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)
Wyjście
Przecina |
---|
Prawda |
Poniższy przykład znajduje wszystkie drogi w tabeli dróg GeoJSON w Nowym Jorku, która przecina niektóre interesujące linie.
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
Wyjście
name |
---|
Broadway |
W 78 st |
W 79 st |
W 80th 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))
Wyjście
print_0 |
---|
Prawda |