Saya sedang berpikir tentang menulis perangkat lunak untuk berurusan dengan GPS Tracks dan Waypoints (kebanyakan menyimpan, menampilkan, dan menghitung metrik seperti kecepatan, tingkatan, dan beberapa statistik sederhana).
Saya bertanya-tanya apa yang harus menjadi model data yang paling kuat secara konseptual mengenai trackpoint, dan berikut adalah beberapa "kandidat":
Mempertimbangkan Tracks sebagai urutan Trackpoints:
1.1. Trek dianggap "2D", karena proyeksi peta adalah 2D. Trackpoint mungkin memiliki atau tidak memiliki ketinggian, mungkin atau tidak memiliki stempel waktu. Ketinggian dan stempel waktu dianggap "ekstra", "opsional". Untuk aplikasi terestrial, elevasi adalah fungsi langsung dari lat / lon (dapat diperoleh melalui DEM);
1.2. Trek dianggap "3D" karena ruang geografisnya memang 3D, dan lintasan penerima adalah 3D (dengan demikian, proyeksi 2D merupakan bentuk reduksi data). Stempel waktu mungkin atau tidak ada (trek bisa ditarik dengan tangan).
1.3. Trek dianggap "4D" (3 spasial + waktu). Dengan demikian, peta yang digambar tangan adalah kasus khusus di mana ketinggian dan cap waktu tidak ada
null
atau tidak ada, tetapi properti Trackpoint selalu "ada".Trek dianggap sebagai kamus aliran, di mana semua aliran memiliki panjang yang sama. Ada daftar garis lintang, daftar garis bujur, daftar ketinggian, salah satu stempel waktu, dll. Ini memudahkan untuk menghitung statistik setiap properti, dan konsep Trackpoint menjadi "virtual" dalam arti tertentu, karena merupakan penampang banyak aliran.
Jika saya mengerti benar, format GPX mengadopsi 1.1., KML mengadopsi 1.2. (tanpa dukungan untuk stempel waktu), dan Strava API mengadopsi 2. (dalam format JSON), tetapi pada akhirnya ini hanyalah format FILE untuk serialisasi dan penyimpanan, tidak harus untuk pemodelan, representasi komputasi, dan penjumlahan angka.
Apakah ada bentuk yang lebih disukai, dalam arti berorientasi objek, dan mengapa? (Saya percaya bahwa pengetikan yang kuat dan pemodelan yang masuk akal setidaknya akan menghindari operasi yang tidak masuk akal).
EDIT: beberapa pertanyaan tambahan "menarik":
- Apakah trek yang digambar tangan SEPENUHNYA sama dengan tracklog yang direkam perangkat? Haruskah mereka dari tipe data yang berbeda?
- Haruskah dianggap "benar" bahwa KML menyimpan elevasi nol sebagai nol? Nol ADALAH ketinggian, dan jika Anda tidak tahu ketinggian, Anda tidak harus menetapkan nol numerik untuk itu, bukan?
- Apakah itu penting, di trek dengan ketinggian, jika ketinggian diekstraksi dari data DEM ("offline") atau dari data GPS atau data barometrik ("di lapangan")? Haruskah ini ditandai di objek Track? Disimpan ke properti Trackpoint yang berbeda? Diabaikan? Haruskah mereka tipe data koleksi yang berbeda?
- Jika saya mengedit trek yang direkam perangkat dalam editor peta (menambah, memindahkan, dan menghapus titik), atau menggabungkan trek dari tanggal yang berbeda, bagaimana penanganan stempel waktu pada trackpoint? Haruskah mereka "dipindahkan" ke nol? Haruskah objek (koleksi trackpoint) dari jenis yang berbeda dibuat dari yang sebelumnya?
sumber
<>
dan{}
untuk membantu Anda mengatur data Anda - dan meta data - Anda salah melakukannya.Jawaban:
Saya tidak berpikir pertanyaan ini sebenarnya dapat dijawab secara pasti karena ada banyak, banyak cara untuk mendekati ini ..
Namun, pemikiran ini mungkin relevan:
Penyimpanan data relatif tidak penting. Apa pun mekanisme yang Anda gunakan, Database, JSON, KML, dll, itu masih "penyimpanan datar".
Yang penting adalah perangkat lunak yang Anda gunakan dan bagaimana Anda merepresentasikan data dalam Perangkat Lunak sehingga Anda dapat melakukan pemodelan Anda.
Kecepatan tersedia dua cara, jarak x waktu atau sebagai output dari perangkat GPS, yang merupakan asal Anda sumber data. Oleh karena itu waktu menjadi tidak relevan selain sebagai item informasi.
Selain itu, Anda juga dapat mempertimbangkan waktu dengan menggunakan offset dari awal trek. Jika Anda memiliki kecepatan dan jarak, maka Anda dapat menghitung waktu di titik. (jarak antara dua titik dapat ditentukan dengan sejumlah metode yang berbeda )
Ketinggian harus dianggap sebagai bagian dari Model Spasial, mereka relevan untuk menentukan sejumlah besar informasi menarik tentang trek itu sendiri, misalnya kelas dapat dihitung yang kemudian memungkinkan Anda untuk memahami variasi kecepatan di sepanjang trek. Jika tidak ada grade, penurunan atau peningkatan kecepatan apa pun mungkin disebabkan karena melepas kaki dari pedal gas.
Dalam hal menggabungkan trek dan trek yang digambar tangan, waktu kurang relevan. Anda dapat menerapkan kecepatan sewenang-wenang untuk menentukan waktu, misalnya, berapa lama untuk melintasi trek pada kecepatan tertentu. Jika Anda menggabungkan trek beberapa hari secara terpisah, maka data Anda tidak akan masuk akal sehingga Anda harus mengatur ulang bidang waktu, mungkin menggunakan offset dari awal lagu.
Jika ketinggian tidak diketahui, maka tidak diketahui, karena itu seharusnya tidak nol. Itu juga tidak boleh negatif, karena ketinggian negatif juga merupakan ketinggian yang valid. (Di lembah di bawah permukaan laut, lubang tambang, dll)
Ya, DEMS tersedia, Ya, Anda dapat mengekstraknya. Akankah ini cukup akurat? Tidak mungkin, kecuali keakuratannya tidak menjadi masalah. GPS atau barometrik yang disediakan Elevasi akan menjadi yang terbaik yang bisa Anda dapatkan.
Jadi untuk mencoba dan memberi Anda jawaban yang mendekati:
Simpan data dalam format datar apa pun yang Anda suka, tetapi saya akan merekomendasikan, PostGRES dengan PostGIS adalah pilihan yang baik, menangani 3D dengan baik. Anda kemudian dapat menggunakan fungsi spasial yang luas di PostGIS untuk memanipulasi / memodelkan data Anda.
Jika Anda menggunakan beberapa bentuk program kustom yang Anda kembangkan, gunakan pendekatan Berorientasi Objek daripada array. Jika Anda menggunakan array, Anda juga dapat menggunakan database.
sumber
Seperti yang telah disebutkan dalam jawaban lain, ada banyak pendekatan berbeda. Karena saya meminta "model data yang kuat secara konseptual", setelah banyak penelitian saya menemukan dua kumpulan besar pengetahuan yang menyediakan dua pendekatan yang sangat berbeda untuk konsep "objek bergerak", dan memiliki banyak tumpang tindih (dalam arti yang baik):
sumber