Когда машина едет по дороге, я ловлю широту / долготу.Я хочу рассчитать расстояние, пройденное транспортным средством между каждым сообщенным LatLon.
Позвольте мне подражать вашему сценарию использования со сценарием вычисления расстояния, которое было сделано ураганом Мария в 2017 году
Ниже запрос «готовит» данные для этого (BigQuery Standard SQL):
#standardSQL
WITH points AS (
SELECT ROW_NUMBER() OVER(ORDER BY iso_time) pos,
ST_GEOGPOINT(longitude, latitude) AS point
FROM `bigquery-public-data.noaa_hurricanes.hurricanes`
WHERE name LIKE '%MARIA%' AND season = '2017'
AND ST_DWITHIN(ST_GEOGFROMTEXT('POLYGON((-179 26, -179 48, -10 48, -10 26, -100 -10.1, -179 26))'), ST_GEOGPOINT(longitude, latitude), 10)
), lines AS (
SELECT pos, ST_MAKELINE(LAG(point) OVER(ORDER BY pos), point) line
FROM points
)
SELECT pos, line
FROM lines
WHERE pos > 1
выше можно визуализировать как
Теперь ниже вычисляется расстояние, которое ураган "преодолел"
#standardSQL
WITH points AS (
SELECT ROW_NUMBER() OVER(ORDER BY iso_time) pos,
ST_GEOGPOINT(longitude, latitude) AS point
FROM `bigquery-public-data.noaa_hurricanes.hurricanes`
WHERE name LIKE '%MARIA%' AND season = '2017'
AND ST_DWITHIN(ST_GEOGFROMTEXT('POLYGON((-179 26, -179 48, -10 48, -10 26, -100 -10.1, -179 26))'), ST_GEOGPOINT(longitude, latitude), 10)
), lines AS (
SELECT pos, ST_MAKELINE(LAG(point) OVER(ORDER BY pos), point) line
FROM points
)
SELECT SUM(ST_LENGTH(line)) path_length
FROM lines
WHERE pos > 1
Примечание: ST_LENGTH(geography_expression)
возвращает общую длину в метрах линий на входе GEOGRAPHY
Вы можете прочитать больше о ST_LENGTH здесь