geo_line_densify()
Dotyczy: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
Konwertuje linie planarne lub wielowierszowe krawędzie na geodesyki przez dodanie punktów pośrednich.
Składnia
geo_line_densify(
tolerancja lineString,
[ preserve_crossing ],
)
Dowiedz się więcej na temat konwencji składni.
Parametry
Nazwisko | Type | Wymagania | opis |
---|---|---|---|
lineString | dynamic |
✔️ | Ciąg lineString lub MultiLineString w formacie GeoJSON. |
tolerancja | int, long lub real | Definiuje maksymalną odległość w metrach między oryginalną krawędzią planarną a przekształconym łańcuchem krawędzi geodesowych. Obsługiwane wartości znajdują się w zakresie [0.1, 10000]. Jeśli nie określono, zostanie użyta wartość 10 domyślna. |
|
preserve_crossing | bool |
Jeśli true parametr zachowuje przekraczanie krawędzi przez antymeryka. Jeśli nie określono, zostanie użyta wartość false domyślna. |
Zwraca
Zagnieżdżony wiersz w formacie GeoJSON i dynamiczny typ danych. Jeśli wiersz lub tolerancja jest nieprawidłowa, 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 .
Definicja 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. Długość geograficzna musi być liczbą rzeczywistą w zakresie [-180, +180], a szerokość geograficzna musi być 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.
Ograniczenia
- Maksymalna liczba punktów w zagęsznionej linii jest ograniczona do 10485760.
- Przechowywanie wierszy w formacie dynamicznym ma limity rozmiaru.
Motywacja
- Format GeoJSON definiuje krawędź między dwoma punktami jako prostą linią kartezjańską, podczas gdy
geo_line_densify()
używa geodezji. - Decyzja o korzystaniu z krawędzi geodesowych lub planarnych może zależeć od zestawu danych i jest szczególnie istotna w przypadku długich krawędzi.
Przykłady
Poniższy przykład zagnieża drogę na wyspie Manhattan. Krawędź jest krótka, a odległość między krawędzią planarną a jego odpowiednik geodesowy jest mniejsza niż odległość określona przez tolerancję. W związku z tym wynik pozostaje niezmieniony.
print densified_line = tostring(geo_line_densify(dynamic({"type":"LineString","coordinates":[[-73.949247, 40.796860],[-73.973017, 40.764323]]})))
Wyjście
densified_line |
---|
{"type":"LineString","coordinates":[[-73.949247, 40.796860], [-73.973017, 40.764323]]} |
Poniższy przykład zagnieża krawędź o długości ok. 130 km
print densified_line = tostring(geo_line_densify(dynamic({"type":"LineString","coordinates":[[50, 50], [51, 51]]})))
Wyjście
densified_line |
---|
{"type":"LineString","coordinates":[[50,50],[50.125,50.125],[50.25,50.25],[50.375,50.375],[50.5,50.5],[50.625,50.625],[50.75,50.75],[50.875,50.875],[51,51]]} |
Poniższy przykład zwraca wynik o wartości null z powodu nieprawidłowych danych wejściowych współrzędnych.
print densified_line = geo_line_densify(dynamic({"type":"LineString","coordinates":[[300,1],[1,1]]}))
Wyjście
densified_line |
---|
Poniższy przykład zwraca wynik o wartości null z powodu nieprawidłowej tolerancji danych wejściowych.
print densified_line = geo_line_densify(dynamic({"type":"LineString","coordinates":[[1,1],[2,2]]}), 0)
Wyjście
densified_line |
---|