Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Oblicza punkt na wartości ułamkowej na linii na Ziemi.
Składnia
geo_line_interpolate_point(
lineString,ułamek)
Dowiedz się więcej na temat konwencji składni .
Parametry
| Nazwa | Typ | Wymagane | Opis |
|---|---|---|---|
| lineString | dynamic |
✔️ | LineString w formacie GeoJSON. |
| ułamek | real |
✔️ | wartość ułamkowa powinna należeć do zakresu od 0 (początek wiersza) do 1 (koniec wiersza). |
Zwraca
Wartość współrzędnych punktu w formacie GeoJSON i typu danych dynamicznych w ciągu wiersza z określoną wartością ułamka. Jeśli wartość wiersza lub ułamka jest nieprawidłowa, zapytanie generuje wynik 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.
- Dane wejściowe nie powinny zawierać więcej niż jednego ciągu wiersza.
- Aby obliczyć wartość ułamkową, użyj geo_line_locate_point()
Definicja i ograniczenia linestring
dynamic({"type": "LineString","coordinates": [[lng_1,lat_1], [lng_2,lat_2], ..., [lng_N,lat_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. Wybierana jest najkrótsza krawędź między dwoma wierzchołkami.
Przykłady
Poniższy przykład oblicza punkt na 25% lokalizacji od początku wiersza.
let line = dynamic({"type":"LineString","coordinates":[[-73.95796, 40.80042], [-73.97317, 40.764486]]});
print point = geo_line_interpolate_point(line, 0.25);
Wynik
| punkt |
|---|
| {"type": "Point", "coordinates": [-73.961764043218281, 40.79143687257232]} |
Poniższy przykład oblicza długość geograficzną punktu na 90% od początku wiersza.
let line = dynamic({"type":"LineString","coordinates":[[-73.95807266235352,40.800426144169315],[-73.94966125488281,40.79691751000055],[-73.97317886352539,40.764486356930334],[-73.98210525512695,40.76786669510221],[-73.96004676818848,40.7980870753293]]});
print point = geo_line_interpolate_point(line, 0.9)
| project lng = point.coordinates[0]
Wynik
| wynik |
|---|
| -73.96556545832799 |
Poniższy przykład wizualizuje punkt na mapie.
let line = dynamic({"type":"LineString","coordinates":[[-73.95807266235352,40.800426144169315],[-73.94966125488281,40.79691751000055],[-73.97317886352539,40.764486356930334],[-73.98210525512695,40.76786669510221],[-73.96004676818848,40.7980870753293]]});
print point = geo_line_interpolate_point(line, 0.9)
| render scatterchart with (kind = map)
Poniższy przykład zwraca true wartość z powodu nieprawidłowego wiersza.
print is_bad_line = isnull(geo_line_interpolate_point(dynamic({"type":"LineString","coordinates":[[1, 1]]}), 0.5))
Wynik
| is_bad_line |
|---|
| prawda |