Udostępnij za pośrednictwem


geo_line_densify()

Dotyczy: ✅Microsoft Fabric✅Azure Data ExplorerAzure MonitorMicrosoft 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 trueparametr 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