3.2.13.1.1Giải pháp tối ƣu dữ liệu[4]
Tại sao cần tối ưu dữ liệu?
Khi số lƣợng bản tin gửi về với tần suất lấy mẫu cao (1Hz) thì với số lƣợng thiết bị giám sát lớn sẽ xảy ra hiện tƣợng quá tải dữ liệu. Ví dụ, với tần suất gửi bản tin dữ liệu NMEA1083 là 1s/bản tin/thiết bị thì trong một ngày số lƣợng bản tin nhận đƣợc sẽ là 60×60×24=86400 bản tin. Với mỗi bản tin có kích thƣớc 70 bytes tƣơng ứng với khoảng 6Mb dữ liệu đƣợc truyền và lƣu trữ tại server một ngày. Kết quả là tại trung tâm sẽ lƣu trữ một lƣợng lớn bản tin dữ liệu, ảnh hƣởng đến hiệu năng hoạt động của server và thời gian hiển thị thông tin cho ngƣời sử dụng. Tôi đƣa ra giải pháp xử lý số lƣợng bản tin “dƣ thừa” này tại server trung tâm với yêu cầu không làm mất đi khả năng giám sát liên tục và chính xác đối với bộ thu.
Ý tƣởng của thuật toán đó là vị trí của phƣơng tiện có rất ít hay gần nhƣ không thay đổi trong vòng một giây và chỉ có một vài trong số hàng ngàn điểm đó là những điểm quan trọng (những điểm mang nhiều thông tin –tôi tạm gọi là điểm chuyển hƣớng). Ví dụ, khi ngƣời dùng kiểm tra lại lịch sử di chuyển của phƣơng tiện trên một tuyến đƣờng, với hầu hết cac hệ bản đồ số phổ biến nhƣ Google Maps, ta chỉ cần điểm bắt đầu và kết thúc của tuyến đƣờng và những điểm chuyển hƣớng di chuyển là có thể vẽ lại lộ trình mà không cần load lại toàn bộ các điểm. Dựa trên nguyên lý về sự chuyển hƣớng của phƣơng tiện, ta hoàn toàn có thể giảm hay loại bỏ những điểm không cần thiết giữa những điểm này. Hơn nữa, một bộ lọc đơn giản có thể đƣợc dùng
Formatted: Font: 14 pt, No underline, Font
color: Auto, All caps
Formatted: Font: 14 pt, No underline, Font
color: Auto, All caps
Formatted: Font: 14 pt, No underline, Font
color: Auto, All caps
Formatted: Font: 14 pt, No underline, Font
color: Auto, All caps
Formatted: Font: 14 pt, All caps
Formatted: No underline, Font color: Auto, All
caps
Formatted: Level 2, Indent: Hanging: 0.5",
Space Before: 6 pt
Formatted: No underline, Font color: Auto, All
caps
Formatted: All caps
Formatted: Justified, Level 3, Outline
numbered + Level: 3 + Numbering Style: 1, 2, 3, … + Start at: 1 + Alignment: Left + Aligned at: 0.25" + Indent at: 0.75"
Formatted: Font: Not Bold, No underline, Font
color: Auto
Hoàng Văn Dũng-CB120666 Trang 37
để loại bỏ những điểm có cùng tọa độ, những điểm này đƣợc sinh ra khi phƣơng tiện dừng trên đƣờng hoặc ở khu đỗ xe.
Hình sau trình bày nguyên lý cơ bản của việc dữ liệu trƣớc và sau khi đƣợc tối ƣu.
Hình 3.1 Ví dụ về tối ƣu hóa dữ liệu
Sau khi xử lý thuật toán này, những bản tin trùng lặp tại các điểm 1 và 4 sẽ đƣợc loại bỏ và khi thực hiện chức năng xem lại lộ trình di chuyển của xe trên trong một khoảng thời gian có hƣớng di chuyển không đổi với các điểm bắt đầu – kết thúc là 1 và 7 có hai đoạn đƣờng là 1-4, 4-7 thì các điểm trung gian 2, 3, 5, 6 là không cần thiết, chúng sẽ đƣợc loại bỏ. Nhƣ vậy khi cần xem lại lộ trình di chuyển từ điểm bắt đầu 1 và kết thúc 7 chỉ cần các điểm đầu và cuối mỗi đoạn đƣờng di chuyển của xe và điểm chuyển hƣớng 4.
Nhƣ vậy, quá trình thực hiện qua 2 bƣớc nhƣ sau: đầu tiên hạn chế các điểm trùng lặp chính là các điểm có cùng một tọa độ, sau đó chọn các điểm có hƣớng di chuyển thay đổi so với các điểm trƣớc đó.
Chi tiết thuật toán nhƣ sau:
Pha 1: Loại bỏ những điểm trùng nhau
Vì những điểm trung nhau có tọa độ giống nhau vì thế kết quả của phép trừ giữa hai điểm liên tiếp sẽ bằng không. Vì thế, ta chỉ cần một vòng lặp với các phép trừ để để loại bỏ những điểm này.
Formatted: Font: No underline, Font color:
Auto
Formatted: Font: Not Bold, No underline, Font
color: Auto
Hoàng Văn Dũng-CB120666 Trang 38
Mảng đầu vào là A[], là một mảng N phần tử, chứa chỉ số và tọa độ của các điểm. Kết quả của pha này là mảng B[], gồm K phần tử (K<=N).
- Bƣớc 1:
Khởi tạo B[ ]; B[0]:=A[0];
i:=0; // điểm hiện tại j:=i; //điểm tiếp theo k:=0; - Bƣớc 2: Loop { if i >= N-1 or j>=N: //Vòng lặp kết thúc Return B[ ] ; if i <N and j<N: //Tiếp tục lặp j++;
if(A[i] != A[j]) // Không phải điểm trùng nhau i:=j; // Tới điểm tiếp theo
B[k++]:=A[j]; // Lưu trữ vào B[] else
j++; }
Pha 2: Loại bỏ những điểm giữa hai điểm chuyển hƣớng.
Sau khi kết thúc pha 1, ta thu đƣợc một tập các điểm đƣợc lƣu trong bảng B[]. Những điểm chuyển hƣớng có thể là điểm bắt đầu hoặc kết thúc của mảng B[] hoặc là những điểm mà tại đó góc di chuyển có sự sai khác nhất định với điểm gần nhất trƣớc nó, trong nghiên cứu này tôi xác định giá trị đó là 10 độ. Những điểm dƣ thừa là những điểm nằm giữa hai điểm chuyển hƣớng và cần bị loại bỏ.
Formatted: Line spacing: 1.5 lines, Bulleted +
Level: 1 + Aligned at: 0.25" + Indent at: 0.5"
Formatted: Line spacing: 1.5 lines Formatted: Font: Italic, No underline, Font
color: Auto
Formatted: Font: Italic
Formatted: Font: Italic, No underline, Font
color: Auto
Formatted: Font: Italic
Formatted: Font: Italic, No underline, Font
color: Auto
Formatted: Font: Italic
Formatted: Font: Italic, No underline, Font
color: Auto
Formatted: Font: Italic
Formatted: Line spacing: 1.5 lines, Bulleted +
Level: 1 + Aligned at: 0.25" + Indent at: 0.5"
Formatted: Font: Italic, No underline, Font
color: Auto
Formatted: Line spacing: 1.5 lines Formatted: Font: Italic
Formatted ...
Formatted: Font: Italic
Formatted ...
Formatted: Font: Italic
Formatted ...
Formatted: Font: Italic
Formatted ...
Formatted: Font: Italic
Formatted ...
Formatted: Font: Italic
Formatted ...
Formatted: Font: Italic
Formatted ...
Formatted: Font: Italic
Formatted ...
Formatted: Font: Italic
Formatted ...
Formatted: Font: Italic
Formatted ...
Formatted: Font: Italic
Hoàng Văn Dũng-CB120666 Trang 39
Mảng đầu vào là mảng B[] chứa K phần từ với mỗi i thuộc[0,K], B[i] tƣơng ứng là là góc của mỗi điểm. Đầu ra là mảng R[] chứa M phần tử (M<=K), bao gồm chỉ số của các điểm chuyển hƣớng. Với mỗi điểm j thuộc [0,M], B[R[j]] là góc của các điểm chuyển hƣớng này.
Bƣớc 1:
Khởi tạo:
i := 0; // Điểm bắt đầu của điểm chuyển hướng trong mảng B[] j :=0; // biến chỉ số trong R[ ] Bƣớc 2: If index >= K-1 // vòng lặp kết thúc { Jump Step 4; }
Else // kiểm tra mỗi phần tử trong B[ ] {
NextIndex:=Findturningdirectionpoint(index);//tìm điểm chuyển hướng tiếp theo
R[j++]:= NextIndex; // lưu trữ điểm tìm được }
Bƣớc 3:
Index := NextIndex; // khởi tạo điểm chuyển hướng tiếp theo Return Step 2;
Bƣớc 4:
Return R[ ];
Một vòng lặp sẽ đƣợc dùng trong hàm Findturningdirectionpoint() để tìm các điểm tiếp theo với góc của chúng sai khác 10 độ so với điểm chuyển hƣớng trƣớc đó và sau đó trả về chỉ số của chúng trong mảng B[].
Formatted: Line spacing: 1.5 lines Formatted: Font: Italic, No underline, Font
color: Auto
Formatted: Font: Italic
Formatted: Font: Italic, No underline, Font
color: Auto
Formatted: Font: Italic
Formatted: Font: Italic, No underline, Font
color: Auto
Formatted: Font: Italic
Formatted: Font: Italic, No underline, Font
color: Auto
Formatted: Font: Italic
Formatted: Font: Italic, No underline, Font
color: Auto
Formatted: Font: Italic
Formatted: Font: Italic, No underline, Font
color: Auto
Formatted: Font: Italic
Formatted: Font: Italic, No underline, Font
color: Auto
Formatted: Font: Italic
Formatted: Font: Italic, No underline, Font
color: Auto
Formatted: Font: Italic
Formatted: Font: Italic, No underline, Font
color: Auto
Formatted: Font: Italic
Formatted: Font: Italic, No underline, Font
color: Auto
Formatted: Font: Italic
Formatted: Font: Italic, No underline, Font
color: Auto
Formatted: Font: Italic
Formatted: Font: Italic, No underline, Font
color: Auto
Formatted: Font: Italic
Formatted: Font: Italic, No underline, Font
color: Auto
Formatted: Font: Italic
Formatted: Font: Italic, No underline, Font
color: Auto
Hoàng Văn Dũng-CB120666 Trang 40
3.2.2.13.1.2 Kết quả và đánh giá
Thông qua mô giải pháp tối ƣu dữ liệu, hình sau trình bày kết quả so sanh dữ liệu khi chƣa đƣợc tối ƣu (Original), dữ liệu sau khi đã loại bỏ những điểm trùng lặp (Phase 1) và dữ liệu sau khi loại bỏ điểm trên cùng đoạn đƣờng có hƣớng di chuyển không đổi.
Hình 3.2 Dữ liệu đƣợc tối ƣu (phase 1 và phase 2) so với dữ liệu gốc (original) Có thể thấy rõ ràng qua biểu đồ trên, trong lần thử nghiệm với hơn 8000 điểm, sau pha 1 (loại bỏ điểm trùng nhau), số lƣợng điểm bị lƣợc bỏ không đáng kể có thể do phƣơng tiện không dừng, nghỉ mà di chuyển liên tục. Tuy nhiên, sau pha 2, một số lƣợng điểm rất lớn (khoảng 6000 điểm) đã đƣợc loại bỏ, số điểm còn lại chỉ lớn hơn 2000.
Hình vẽ sau trình bày dữ liệu định vị hiển thị trên bản đồ trƣớc (hình a) và sau khi đƣợc tối ƣu (hình b). Kết quả cho thấy không có sự thay đổi về lộ trình di chuyển của phƣơng tiện, tuy nhiên sau khi tối ƣu thì đƣờng biểu thị di chuyển phƣơng tiện sẽ không đƣợc “trơn” so với đƣờng dữ liệu gốc.
Formatted: Level 3, Outline numbered +
Level: 3 + Numbering Style: 1, 2, 3, … + Start at: 1 + Alignment: Left + Aligned at: 0.25" + Indent at: 0.75"
Formatted: Centered
Formatted: Centered, Indent: First line: 0.3" Formatted: Font: Not Bold, No underline, Font
color: Auto
Hoàng Văn Dũng-CB120666 Trang 41
a) Dữ liệu gốc b) Dữ liệu sau tối ƣu
Hình 3.3 Hình 4 - 2. Dữ liệu định vị hiển thị trên bản đồ trƣớc và sau khi tối ƣu Chính đầu ra của thuật toán tối ƣu hóa dữ liệu này lại là đầu vào của các bài toán xử lý trên bản đồ nhằm tăng độ chính xác khi hiển thị thông tin định vị.
3.33.2GIẢI PHÁP TRÊN BẢN ĐỒ SỐ GOOGLE MAPS
3.3.13.2.1Các vấn đề thƣờng gặp khi hiển thị dữ liệu trên bản đồ Google maps
Trong nhiều trƣờng hợp, dữ liệu định vị gửi từ tracker về server, sau khi đã đƣợc xử lý và hiển thị lên bản đồ, vẫn có những sai lệch nhất định với bản đồ.
Nguyên nhân dẫn tới những sai lệch này có thể do: giữ chậm của tầng đối lƣu và tầng ion xảy ra khi tín hiệu vệ tinh bị chậm đi khi xuyên qua tầng khí quyển. Hoặc hiện tƣợng tín hiệu đa đƣờng, xảy ra khi tín hiệu phản xạ từ nhà hay các đối tƣợng khác trƣớc khi tới máy thu.Lỗi đồng hồ máy thu là lỗi do dồng hồ có trong máy thu không chính xác nhƣ đồng hồ nguyên tử trên các vệ tinh GPS. Một nguyên nhân khác có thể là do lỗi quỹ đạo cũng đƣợc biết nhƣ lỗi thiên văn, do vệ tinh thông báo vị trí không chính xác.Nhà cao tầng, địa hình, nhiễu loạn điện tử hoặc đôi khi thậm chí tán lá dầy có thể chặn thu nhận tín hiệu, gây lỗi định vị hoặc không định vị đƣợc. Nói chung máy thu GPS không làm việc trong nhà, dƣới nƣớc hoặc dƣới lòng đất.Che khuất về hình học, điều này liên quan tới vị trí tƣơng đối của các vệ tinh ở thời điểm bất kì. Phân bố
Formatted: Centered
Formatted: Font: No underline, Font color:
Auto
Formatted: No underline, All caps Formatted: Level 2, Indent: Hanging: 0.5",
Space Before: 12 pt
Formatted: No underline, All caps Formatted: No underline, All caps Formatted: No underline, All caps Formatted: All caps
Formatted: Level 3, Outline numbered +
Level: 3 + Numbering Style: 1, 2, 3, … + Start at: 1 + Alignment: Left + Aligned at: 0.25" + Indent at: 0.75"
Formatted: Font: Not Bold, No underline, Font
color: Auto, Condensed by 0.05 pt
Formatted: Font: Not Bold, No underline, Font
Hoàng Văn Dũng-CB120666 Trang 42
vệ tinh lí tƣởng là khi các quả vệ tinh ở vị trí tạo các góc rộng với nhau. Phân bố xấu xảy ra khi các quả vệ tinh ở trên một đƣờng thẳng hoặc cụm thành nhóm.
Với những sai lệch này, khi hiển thị lên bản đồ sẽ gây ra nhiều lỗi thiếu chính xác nhƣ vị trí phƣơng tiện bị lêch khỏi đƣờng,sai thứ tự hiển thị vị trí,lộ trình và hƣớng di chuyển của phƣơng tiện.
Để rõ hơn về điều này, ta xét ví dụ nhƣ sau:
Hình 3.4 Dữ liệu hiển thị trên bản đồ bị lệch khỏi đƣờng
Rõ ràng trong trƣờng hợp trên không thể băng cắt qua đƣờng hoặc chuyển đƣờng một cách đột ngột nhƣ vậy. Trong nhiều trƣờng hợp yêu cầu độ chính xác khi hiển thị trên bản đồ số nhƣ trong các ứng dụng dẫn dƣờng, điều này sẽ làm ảnh hƣởng đáng kể đến độ chính xác của những phƣơng pháp trên.
Vấn đề mất tín hiệu GPS hoặc sự cố trên đƣờng truyền cũng là những vấn đề hay gặp phải trong các hệ thống định vị dành cho mục đích giám sát.
Ví dụ nhƣ trong hình sau:
Formatted: Font: Not Bold Formatted: Centered Formatted: Font: Not Bold
Formatted: Caption, Centered, Line spacing:
single
Formatted: Font: Not Bold, No underline, Font
color: Auto
Hoàng Văn Dũng-CB120666 Trang 43
Hình 3.5 Hình ảnh kết quả hiển thị trên bản đồ khi mất tín hiệu
3.3.23.2.2Mô hình ánh xạ dữ liệu trên bản đồ số
Để khắc phục việc ánh xạ dữ liệu lên bản đồ bị sai lệch, phƣơng pháp map- matching đã đƣợc nghiên cứu và thực hiện trong phạm vi luận văn.
Mô hình đƣợc xây dựng nhƣ sau:
Hình 3.6 Mô hình ánh xạ dữ liệu vị trí lên bản đồ
Mô hình đƣợc xây dựng gồm các bƣớc tiền xử lý dữ liệu, map-matching(ánh xạ dữ liệu lên bản đồ), lƣu cơ sở dữ liệu và hiển thị dữ liệu. Mỗi bƣớc đóng một vai trò quan
Formatted: Centered
Formatted: Font: No underline Formatted: Font: Not Bold, English (U.S.) Formatted: Justified, Level 3, Space After: 6
pt, Outline numbered + Level: 3 + Numbering Style: 1, 2, 3, … + Start at: 1 + Alignment: Left + Aligned at: 0.25" + Indent at: 0.75"
Formatted: Font: No underline, Font color:
Hoàng Văn Dũng-CB120666 Trang 44
trọng trong việc thực hiện đƣa dữ liệu lên bản đồ một cách chính xác và thời gian hiển thị nhanh.
Tại server:
- Bƣớc 1: Dữ liệu đầu vàolà dữ liệu đƣợc gửi về từ thiết bị GPS và lƣu vào cơ sở dữ liệu.
- Bƣớc 2: Tiền xử lý dữ liệu dùng để loại bỏ lƣợng lớn các điểm sai, điểm dƣ thừa để giảm số điểm lƣu trữ không cần thiết đồng thời giảm số lƣợng các request cho bƣớc tiếp theo và qua đó tăng tốc độ xử lý. Điểm sai và những điểm dƣ thừa là những điểm do thiết bị gửi về nhƣng sau khi đƣợc tính toán thì bị loại bỏ do sự phi logic và sự lặp lại của những điểm này.
- Bƣớc 3: Ánh xạ dữ liệu lên bản đồ (Map-matching) là việc gửi dữ liệu định vị thô lên server của Google Maps nhằm ánh xạ những điểm này vào các tuyến đƣờng tƣơng ứng.
- Bƣớc 4: Lƣu vào CSDL những điểm đã đƣợc map-matching ở bƣớc 4. Việc lƣu trữ này sẽ phục vụ cho các yêu cầu hiển thị ở các bƣớc tiếp theo.
Tại client:
- Hiển thị kết quả đƣợc thực hiện bên phía client. Khi ngƣời dùng yêu cầu về hiển thi lộ trình và vị trí, mô hình sẽ truy cập cơ sở dữ liệu chứa các dữ liệu đã đƣợc map-matching và trả về kết quả trên bản đồ.
3.3.2.1 Thực hiện mô hình map-matching
- Bƣớc 1: Lấy dữ liệu gửi về trang khớp dữ liệu bản đồ (map-matching)
Bảng dữ liệu định vị đầu vào đƣợc lƣu trong cơ sở dữ liệu có dạng nhƣ trong hình sau:
Formatted: No underline, Font color: Auto Formatted: No underline, Font color: Auto
Hoàng Văn Dũng-CB120666 Trang 45
Hình 3.7 Dữ liệu đầu vào thuật toán map-matching
Để lấy đƣợc dữ liệu này ta phải thực hiện các câu lệnh Select trên javascript với các thủ tục nhƣ sau:
Hình 3.8 Các bƣớc để truy vấn dữ liệu định vị
Trong bảng dữ liệu lƣu các trƣờng thông tin VehicleID, Time, Lat, Lng…Tuy nhiên để thực hiện khớp dữ liệu lên bản đồ ta chỉ cần lấy ra tọa độ lat,lng từ CSDL qua câu lệnh: SELECT lat,lng FROM tableCSDL
Formatted: Centered
Formatted: Font: Not Bold, No underline, Font
color: Auto
Formatted: Font: No underline, Font color:
Auto