Я только начал работать с пространственными базами данных и хочу написать запрос SQL (PostGIS) для автоматического обобщения необработанных GPS-треков (с фиксированной частотой отслеживания). Первое, на чем я работаю, - это запрос, который идентифицирует точки остановки в форме запроса, такого как «x точек на расстоянии y метров», чтобы заменить массивные облака точек репрезентативными точками. Я уже понял, чтобы привязать точки на определенном расстоянии и сосчитать привязанные. На рисунке ниже можно увидеть примерный трек (маленькие черные точки) и центры привязанных точек в виде цветных кружков (размер = количество привязанных точек).
CREATE table simplified AS
SELECT count(raw.geom)::integer AS count, st_centroid(st_collect(raw.geom)) AS center
FROM raw
GROUP BY st_snaptogrid(raw.geom, 500, 0.5)
ORDER BY count(raw.geom) DESC;
Я был бы столь же доволен этим решением, но есть проблема времени: представив дорожку в виде дорожки полного дня в городе, человек может вернуться в места, которые уже посещал ранее. В моем примере темно-синий круг представляет дом человека, который он посетил дважды, но мой запрос, конечно, игнорирует это.
В этом случае сложный запрос должен собирать только точки с непрерывными временными метками (или идентификаторами), так что он будет производить две репрезентативные точки здесь. Моей первой идеей была модификация моего запроса к 3d-версии (время как третье измерение), но, похоже, она не работает.
У кого-нибудь есть советы для меня? Я надеюсь, что мой вопрос понятен.
Спасибо за идею линии. Я понял, как сделать и упростить линейную линию, как вы можете видеть на скриншоте ниже (точки - это исходные точки). Что мне еще нужно, так это определить места отдыха (> x точек в радиусе <x метров), в идеале как одну точку с временем прибытия и уходом ... какие-нибудь другие идеи?