Saya baru saja mulai bekerja dengan database spasial dan saya ingin menulis query SQL (PostGIS) untuk generalisasi otomatis trek-GPS mentah (dengan frekuensi pelacakan tetap). Hal pertama yang saya wokring adalah kueri yang mengidentifikasi titik macet dalam bentuk kueri seperti "x titik dalam jarak y meter" untuk menggantikan titik awan besar dengan titik yang representatif. Saya sudah sadar untuk mengambil poin dalam jarak tertentu dan menghitung yang terputus. Pada gambar di bawah ini orang dapat melihat trek contoh mentah (titik hitam kecil) dan pusat-pusat titik bentak sebagai lingkaran berwarna (ukuran = jumlah titik bentak).
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;
Saya akan cukup puas dengan solusi ini, tetapi ada masalah waktu: Pencitraan trek sebagai trek sehari penuh di kota orang dapat kembali ke tempat-tempat yang sudah dikunjungi sebelumnya. Dalam contoh saya, lingkaran biru tua melambangkan rumah orang yang ia kunjungi dua kali tetapi pertanyaan saya tentu saja mengabaikannya.
Dalam hal ini, kueri canggih hanya mengumpulkan poin dengan cap waktu berdekatan (atau id), sehingga akan menghasilkan dua poin representatif di sini. Gagasan pertama saya adalah modifikasi kueri saya ke versi 3d (waktu sebagai dimensi ketiga), tetapi tampaknya tidak berfungsi.
Adakah yang punya saran untuk saya? Saya harap pertanyaan saya jelas.
Terima kasih untuk ide garisnya. Saya menyadari untuk membuat dan menyederhanakan linestring seperti yang dapat Anda lihat pada tangkapan layar di bawah ini (titik adalah poin asli). Apa yang masih saya butuhkan adalah menentukan tempat istirahat (> x poin dalam radius <x meter), idealnya sebagai satu titik dengan waktu kedatangan dan waktu berangkat ... ada ide lain?