Menyimpan trek GPS dengan cap waktu di PostGIS


8

Saya perlu menyimpan serangkaian titik GPS dengan stempel waktu di basis data (jejak berbagai kendaraan).

Saya bertanya-tanya yang mana dari dua pendekatan untuk memilih untuk menyimpannya di tabel PostGIS: 1.) Setiap titik di baris sendiri dengan kolom terpisah untuk timestamp dan satu untuk track ID

2.) Gunakan Linestring atau MultiLineString dengan koordinat M keempat yang akan berisi cap waktu UNIX untuk titik di trek. Ini berarti satu baris untuk setiap trek terpisah.


Saya tidak mengerti apa yang Anda maksud dengan koordinat M keempat yang akan berisi cap waktu UNIX. Bisakah Anda lebih spesifik? Apakah lebih baik menyimpan stempel waktu di bidang terpisah?
Benjamin Toueg

Jawaban:


2

Itu tergantung pada apa yang ingin Anda lakukan dengan data begitu mereka dimuat dalam database. Jika setiap titik data memiliki atribut terkait selain waktu (misalnya, pembacaan suhu mesin, foto) atau Anda ingin menggunakan data titik dalam analisis, maka menyimpan setiap datum di barisnya sendiri adalah pilihan yang baik.

Jika setiap trek memiliki atribut yang terkait (misalnya, nama acara) atau analisis Anda akan berada di trek (misalnya, menemukan lintasan trek), maka lebih masuk akal untuk menyimpan masing-masing sebagai (MULTI) LINESTRING.

Jika Anda memilih satu pendekatan, itu tidak akan mencegah Anda melakukan analisis di yang lain. Ini hanya akan memerlukan beberapa langkah tambahan.


4

Secara pribadi saya menyimpan data yang dikumpulkan oleh unit GPS saya sebagai lapisan titik dengan bidang cap waktu, maka saya dapat menggunakan ST_Makeline jika saya memerlukan string garis. Jika Anda memiliki Postgres 9.0+, Anda dapat menggunakan ORDER BY dalam panggilan agregat Anda untuk memastikan saluran bergerak dari titik ke titik dengan urutan kronologis. Saya kehilangan nilai-nilai M di sepanjang garis yang dibuat, tetapi jika saya membutuhkannya saya selalu memiliki layer titik saya bisa melempar di latar belakang.


0

Saya menggunakan nilai stempel waktu bagian koordinat 'z' dari titik xyz, dipangkas menjadi detik (bukan milidetik) dikurangi mulai dari koordinat pertama untuk menghindari penyimpanan nilai 'z' besar.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.