Tôi đang suy nghĩ về việc viết phần mềm để đối phó với các Tuyến đường và Điểm tham chiếu GPS (chủ yếu là lưu trữ, hiển thị và tính toán các số liệu như tốc độ, điểm số và một số thống kê đơn giản).
Tôi tự hỏi điều gì sẽ là mô hình dữ liệu mạnh mẽ nhất về mặt khái niệm liên quan đến các điểm theo dõi và đây là một số "ứng cử viên":
Xem Bản nhạc là chuỗi các Điểm theo dõi:
1.1. Các bản nhạc được coi là "2D", vì các phép chiếu bản đồ là 2D. Điểm theo dõi có thể có hoặc không có độ cao, có thể có hoặc không có dấu thời gian. Độ cao và dấu thời gian được xem là "tính năng bổ sung", "tùy chọn". Đối với các ứng dụng trên mặt đất, độ cao là chức năng trực tiếp của lat / lon (có thể đạt được thông qua DEM);
1.2. Các bản nhạc được coi là "3D" vì không gian địa lý thực sự là 3D và quỹ đạo của máy thu là 3D (do đó, hình chiếu 2D là một dạng giảm dữ liệu). Dấu thời gian có thể có hoặc không có mặt (bản nhạc có thể được vẽ bằng tay).
1.3. Các bản nhạc được coi là "4D" (3 không gian + thời gian). Do đó, bản đồ vẽ tay là một trường hợp đặc biệt trong đó độ cao và dấu thời gian có
null
hoặc không có mặt, nhưng các thuộc tính Trackpoint luôn "ở đó".Các bản nhạc được coi là từ điển của các luồng, trong đó tất cả các luồng có độ dài bằng nhau. Có một danh sách các vĩ độ, một danh sách các kinh độ, một danh sách các độ cao, một dấu thời gian, v.v ... Điều này giúp dễ dàng tính toán số liệu thống kê của từng thuộc tính và khái niệm Trackpoint trở nên "ảo" theo nghĩa, vì nó là một mặt cắt ngang của nhiều dòng.
Nếu tôi hiểu đúng, định dạng GPX thông qua 1.1., KML chấp nhận 1.2. (không hỗ trợ dấu thời gian) và API Strava chấp nhận 2. (ở định dạng JSON), nhưng cuối cùng, đây chỉ là các định dạng FILE để tuần tự hóa và lưu trữ, không nhất thiết phải lập mô hình, biểu diễn tính toán và bấm số.
Có bất kỳ hình thức nào là thích hợp hơn, theo nghĩa hướng đối tượng, và tại sao? (Tôi tin rằng việc gõ mạnh và mô hình hợp lý ít nhất sẽ tránh được các thao tác không có ý nghĩa).
EDIT: một số câu hỏi bổ sung "hấp dẫn":
- Một bản nhạc được vẽ bằng tay có phải là điều tương tự như một tracklog được ghi lại trên thiết bị không? Họ nên có các loại dữ liệu khác nhau?
- Có nên coi "chính xác" rằng KML lưu trữ độ cao null là 0 không? Không là độ cao và nếu bạn không biết độ cao bạn không nên gán số 0 cho nó, phải không?
- Có vấn đề gì không, trong một tuyến đường có độ cao, nếu độ cao được trích xuất từ dữ liệu DEM ("ngoại tuyến") hoặc từ dữ liệu GPS hoặc dữ liệu khí áp ("trong trường")? Điều này có nên được gắn cờ trong đối tượng Theo dõi? Lưu vào các thuộc tính Trackpoint khác nhau? Mặc kệ? Chúng có nên là kiểu dữ liệu bộ sưu tập khác nhau không?
- Nếu tôi chỉnh sửa bản nhạc được ghi bằng thiết bị trong trình chỉnh sửa bản đồ (thêm, di chuyển và xóa điểm) hoặc kết hợp các bản nhạc từ các ngày khác nhau, các dấu thời gian trong các điểm theo dõi phải được xử lý như thế nào? Họ có nên được "tái định cư" thành null? Có nên tạo một đối tượng (bộ sưu tập trackpoint) của một loại khác từ những cái trước không?
<>
và{}
để giúp bạn sắp xếp dữ liệu của mình - và dữ liệu meta - bạn đã làm sai.