52
VIETBANDO DATAWAREHOUSE TOTAL SOLUTIONS – VDTS OUTLINE PHẦN MỀM HỆ THỐNG TRUNG TÂM THÔNG TIN CHỈ HUY -VBD T4CH-

VIETBANDO DATAWAREHOUSE PHẦN MỀM HỆ THỐNG · PHẦN MỀM HỆ THỐNG TRUNG TÂM THÔNG TIN CHỈ HUY -VBD T4CH-2 MỤC LỤC ... CHIA SẺ THÔNG TIN HIỆU QUẢ ... (thường

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: VIETBANDO DATAWAREHOUSE PHẦN MỀM HỆ THỐNG · PHẦN MỀM HỆ THỐNG TRUNG TÂM THÔNG TIN CHỈ HUY -VBD T4CH-2 MỤC LỤC ... CHIA SẺ THÔNG TIN HIỆU QUẢ ... (thường

1

VIETBANDO DATAWAREHOUSE TOTAL SOLUTIONS – VDTS

OUTLINE

PHẦN MỀM HỆ THỐNG TRUNG TÂM THÔNG TIN CHỈ HUY

-VBD T4CH-

Page 2: VIETBANDO DATAWAREHOUSE PHẦN MỀM HỆ THỐNG · PHẦN MỀM HỆ THỐNG TRUNG TÂM THÔNG TIN CHỈ HUY -VBD T4CH-2 MỤC LỤC ... CHIA SẺ THÔNG TIN HIỆU QUẢ ... (thường

2

MỤC LỤC

PHẦN I. GIỚI THIỆU.......................................................................................................................... 4

PHẦN II. KIẾN TRÚC HỆ THỐNG ..................................................................................................... 4

1. LỚP CƠ SỞ HẠ TẦNG ................................................................................................................ 5

2. LỚP DỮ LIỆU ........................................................................................................................... 6

3. LỚP ỨNG DỤNG ....................................................................................................................... 6

4. LỚP LIÊN LẠC .......................................................................................................................... 6

5. LỚP NGƯỜI DÙNG ..................................................................................................................... 6

PHẦN III. BỐ TRÍ VÀ THIẾT KẾ MẠNG LƯỚI ................................................................................. 7

PHẦN IV. CẤU TRÚC CHỨC NĂNG VBD T4CH................................................................................ 8

PHẦN V. CÁC CHỨC NĂNG CHÍNH................................................................................................ 11

1. DỄ DÀNG TRIỂN KHAI VÀ BẢO TRÌ .............................................................................................. 11

2. TÍCH HỢP VỚI TRUNG TÂM TIẾP NHẬN SỰ CỐ QUA ĐIỆN THOẠI ................................................... 11

3. CHIA SẺ THÔNG TIN HIỆU QUẢ ................................................................................................... 12

4. ĐỊNH VỊ TỰ ĐỘNG ................................................................................................................... 12

5. ĐIỀU PHỐI THÔNG MINH VÀ NHANH CHÓNG ................................................................................. 12

6. ĐIỀU HƯỚNG NHANH CHÓNG .................................................................................................... 12

7. TÍCH HỢP VỚI GPS ................................................................................................................. 13

8. TÍCH HỢP VỚI SMS ................................................................................................................. 13

9. TÍCH HỢP VỚI CCTV ............................................................................................................... 13

10. CÁC CHỨC NĂNG CẢNH BÁO TỰ ĐỘNG .................................................................................... 14

11. HIỂN THỊ TRỰC QUAN TRẠNG THÁI VÀ LỊCH SỬ CỦA VIỆC QUẢN LÍ SỰ CỐ QUA BẢN ĐỒ VÀ ĐỒ THỊ ..... 14

12. CÁC THỦ TỤC XỬ LÍ TÍNH HUỐNG KHẨN CẤP DỰA TRÊN QUY TRÌNH LUỒNG CÔNG VIỆC ................... 15

PHẦN VI. CHƯƠNG TRÌNH MINH HỌA ........................................................................................ 16

PHẦN VII. PHỤ LỤC MÃ NGUỒN CHƯƠNG TRÌNH: .................................................................... 33

1. CHỨC NĂNG GIẢI QUYẾT CÁC BÀI TOÁN VỀ ĐƯỜNG ĐI VÀ K ĐIỂM GẦN NHẤT ...................................... 33

2. HIỂN THỊ CÁC ĐỐI TƯỢNG TRACKING ......................................................................................... 37

3. TƯƠNG TÁC TRÊN CÁC ĐỐI TƯỢNG TRACKING ............................................................................. 40

4. TÌM LỘ TRÌNH TỐI ƯU .............................................................................................................. 43

Page 3: VIETBANDO DATAWAREHOUSE PHẦN MỀM HỆ THỐNG · PHẦN MỀM HỆ THỐNG TRUNG TÂM THÔNG TIN CHỈ HUY -VBD T4CH-2 MỤC LỤC ... CHIA SẺ THÔNG TIN HIỆU QUẢ ... (thường

3

DANH SÁCH HÌNH ẢNH

HÌNH 1. KIẾN TRÚC VBD T4CH ...................................................................................................................................................... 5

HÌNH 2. THIẾT KẾ VIỆC BỐ TRÍ ......................................................................................................................................................... 7

HÌNH 3. MÀN HÌNH ĐĂNG NHẬP ....................................................................................................................................................... 8

HÌNH 4. MÀN HÌNH NHẬN VÀ XỬ LÝ SỰ CỐ ...................................................................................................................................... 9

HÌNH 5. MÀN HÌNH THEO DÕI, GIÁM SÁT ...................................................................................................................................... 10

HÌNH 6. MÀN HÌNH THỐNG KÊ....................................................................................................................................................... 11

HÌNH 7. MÀN HÌNH TÍCH HỢP VỚI CCTV ..................................................................................................................................... 14

HÌNH 9. MÀN HÌNH BẢN ĐỒ THEO CHỦ ĐỀ .................................................................................................................................... 15

HÌNH 10. THỦ TỤC XỬ LÍ TÌNH HUỐNG KHẨN CẤP ....................................................................................................................... 16

HÌNH 11. MÀN HÌNH ĐĂNG NHẬP CHƯƠNG TRÌNH ...................................................................................................................... 16

HÌNH 12. MÀN HÌNH KHỞI ĐỘNG CÔNG CỤ PHẢN ỨNG NHANH .................................................................................................. 17

HÌNH 13. CHỌN NGUỒN TIN........................................................................................................................................................... 17

HÌNH 14. MÀN HÌNH NHẬN XỬ LÍ SỰ CỐ ....................................................................................................................................... 18

HÌNH 15. MÀN HÌNH CHỌN LỰC LƯƠNG THAM GIA GIẢI QUYẾT SỰ CỐ ....................................................................................... 18

HÌNH 16. CẬP NHẬT THÔNG TIN HÌNH ẢNH/VIDEO VỀ HIỆN TRƯỜNG ...................................................................................... 19

HÌNH 17. CHỌN CÁC BỘ LỌC THEO LOẠI ĐỐI TƯỢNG ĐƯỢC ĐỊNH NGHĨA BẰNG HỆ QUẢN LÝ TÀI NGUYÊN .............................. 19

HÌNH 18. GEOCODING TỪ CHUỖI ĐỊA CHỈ TÌM KIẾM .................................................................................................................... 20

HÌNH 19. BẬT TẮT CÁC LỚP THÔNG TIN BẢN ĐỒ NỀN ................................................................................................................. 20

HÌNH 20. CÔNG CỤ TÌM K ĐỐI TƯỢNG GẦN NHẤT ....................................................................................................................... 21

HÌNH 21. XEM THÔNG TIN CHI TIẾT ĐỐI TƯỢNG TRÊN BẢN ĐỒ .................................................................................................. 21

HÌNH 22. TÌM ĐƯỜNG .................................................................................................................................................................... 22

HÌNH 23. TÌM ĐƯỜNG TRÁNH VÙNG CẤM ..................................................................................................................................... 22

HÌNH 24. KẾT QUẢ TÌM ĐƯỜNG TRÁNH VÙNG CẤM ..................................................................................................................... 23

HÌNH 25. MÀN HÌNH THEO DÕI CÁC TÀI NGUYÊN (ĐỐI TƯỢNG DI ĐỘNG) .................................................................................. 23

HÌNH 26. MÀN HÌNH TRUY VẤN CÁC ĐỐI TƯỢNG DI CHUYỂN THEO BÁN KÍNH .......................................................................... 24

HÌNH 27. MÀN HÌNH TRUY VẤN CÁC ĐỐI TƯỢNG DI CHUYỂN THEO VÙNG BẤT KỲ ..................................................................... 24

HÌNH 28. MÀN HÌNH ĐIỀU PHỐI CÁC PHƯƠNG TIỆN VẬN CHUYỂN THEO TUYẾN ....................................................................... 25

HÌNH 29. MÀN HÌNH QUẢN LÍ NGUỒN NHÂN LỰC KHI GIẢI QUYẾT SỰ CỐ ................................................................................... 25

HÌNH 30. MÀN HÌNH ĐỐI THOẠI KHI GIẢI QUYẾT SỰ VỤ .............................................................................................................. 26

HÌNH 31. BỘ BIỂU TƯỢNG SỬ DỤNG TRONG KHI GIẢI QUYẾT SỰ VỤ ........................................................................................... 26

HÌNH 32. MÀN HÌNH THEO CÁC CAMERA VÀ CHỨC NĂNG TỰ ĐỘNG NHẬN DIỆN CHÁY.............................................................. 27

HÌNH 33. MÀN HÌNH NHẬN DIỆN KHUÔN MẶT ............................................................................................................................. 27

HÌNH 34. MÀN HÌNH CHỌN KỊCH BẢN GIẢI QUYẾT SỰ VỤ ............................................................................................................ 28

HÌNH 35. MÀN HÌNH LUỒNG XỬ LÝ SỰ VỤ .................................................................................................................................... 28

HÌNH 36. MÀN HÌNH TÌM KIẾM DỰA VÀO KHUÔN MẶT TỪ FILE ẢNH .......................................................................................... 29

HÌNH 37. MÀN HÌNH THEO DÕI CẤU TRÚC TÒA NHÀ 3D ............................................................................................................. 29

HÌNH 38. MÀN HÌNH DANH MỤC CÁC TÍNH NĂNG TRONG ỨNG DỤNG TRÊN MOBILE ................................................................. 30

HÌNH 39. MÀN HÌNH CHÍNH TRONG ỨNG DỤNG TRÊN MOBILE ................................................................................................... 30

HÌNH 40. BIỂU MẪU NHẬP MỘT SỰ VỤ MỚI TRÊN ỨNG DỤNG MOBILE ....................................................................................... 31

HÌNH 41. MÀN HÌNH DANH SÁCH CÁC SỰ VỤ ĐÃ NHẬP ............................................................................................................... 31

HÌNH 42. MÀN HÌNH THIẾT LẬP CÁC LỚP DỮ LIỆU ...................................................................................................................... 32

HÌNH 43. MÀN HÌNH CHỌN LỚP DỮ LIỆU ĐỂ LÀM VIỆC ............................................................................................................... 32

Page 4: VIETBANDO DATAWAREHOUSE PHẦN MỀM HỆ THỐNG · PHẦN MỀM HỆ THỐNG TRUNG TÂM THÔNG TIN CHỈ HUY -VBD T4CH-2 MỤC LỤC ... CHIA SẺ THÔNG TIN HIỆU QUẢ ... (thường

VBD T4CH TRANG 4

PHẦN I. GIỚI THIỆU

Các HỆ THỐNG TRUNG TÂM THÔNG TIN CHỈ HUY - VBD T4CH hiện đại

nhắm đến việc nâng cao khả năng của chính phủ trong việc bảo vệ mạng sống

và tài sản của công dân; an ninh quốc gia và bình ổn xã hội cũng như thúc đẩy

phát triển kinh tế và xã hội toàn diện, có tổ chức và bền vững.

VBD T4CH là sự tích hợp của các công nghệ hiện đại như hệ thống định

vị toàn cầu (GPS), hệ thống Camera giám sát (CCTV), hội thảo trực tuyến, hệ

thống quản lý tài nguyên (DMS) và hệ thống thông Tin địa lý (GIS), v.v. VBD

T4CH cung cấp một giải pháp tổng thể cho tất cả tình huống khấn cấp công

cộng của các cơ quan chính phủ. Các sản phẩm về VBD T4CH nâng cao khả

năng chỉ huy tập trung của chính phủ, ứng phó kịp thời, và phối hợp giữa các

cơ quan ban ngành. Điều này sẽ cải thiện tính hiệu quả trong việc tiếp nhận,

xử lý tình huống khẩn cấp, giám sát và bảo đảm tuyệt mật, lưu giữ các hồ sơ

an toàn của tất cả hoạt động.

PHẦN II. KIẾN TRÚC HỆ THỐNG

Kiến trúc VBD T4CH bao gồm 5 lớp, bắt đầu từ dưới lên: Lớp Cơ Sở Hạ

Tầng, Lớp Dữ Liệu, Lớp Các Ứng Dụng, Lớp Liên Lạc và Lớp Người Dùng (xem

hình 1). Mô tả ngắn ngọn như sau:

Page 5: VIETBANDO DATAWAREHOUSE PHẦN MỀM HỆ THỐNG · PHẦN MỀM HỆ THỐNG TRUNG TÂM THÔNG TIN CHỈ HUY -VBD T4CH-2 MỤC LỤC ... CHIA SẺ THÔNG TIN HIỆU QUẢ ... (thường

VBD T4CH TRANG 5

Hình 1. Kiến trúc VBD T4CH

1. Lớp Cơ Sở Hạ Tầng

Bao gồm các thiết bị phần cứng máy tính (Máy chủ, máy tính để bàn,

thiết bị ngoại vi, UPS,..); cơ sở vật chất chuyên biệt cho VBD T4CH (các phòng

đặt máy chủ, trung tâm điều khiển,…) và hệ thống mạng (thiết kế đường dẫn

cáp theo cấu trúc, bộ chuyển mạch - switch, bộ định tuyến - rounter, các ống

dẫn cáp quang,… )

Page 6: VIETBANDO DATAWAREHOUSE PHẦN MỀM HỆ THỐNG · PHẦN MỀM HỆ THỐNG TRUNG TÂM THÔNG TIN CHỈ HUY -VBD T4CH-2 MỤC LỤC ... CHIA SẺ THÔNG TIN HIỆU QUẢ ... (thường

VBD T4CH TRANG 6

2. Lớp Dữ Liệu

Được thiết kế bởi cơ sở dữ liệu (CSDL) theo yêu cầu giống như CSDL

GIS ( gồm bản đồ tham chiếu, bản đồ đường xá, ảnh độ phân giải cao); CSDL

phải lưu trữ được nhật kí và hồ sơ của những tình huống khẩn cấp đã và đang

xảy ra; Các CSDL liên quan khác và CSDL hệ thống để quản lý cấu hình của

VBD T4CH.

3. Lớp Ứng Dụng

Là 1 trong những nến tảng phát triển tích hợp tất cả các môđun chức

năng của VBD T4CH và các giao diện tích hợp đến hệ thống bên ngoài hiện

hữu (ví dụ như gói GSM/GPRS, hệ thống CCTV, GPS,… ).

4. Lớp Liên Lạc

Được định nghĩa bởi các giao thức liên lạc sẵn có. Bao gồm dịch vụ công

cộng và mạng lưới điện thoại (điện thoại di động, điện thoại cố định, Hệ thống

VoIP) và mạng lưới gói/điện thoại/radio được tích hợp trong lớp này.

5. Lớp người dùng

Tất cả người dùng khi truy cập đến hệ thống sẽ được liệt kê trong lớp

này. Được phân loại thành 5 nhóm với các quyền sau: Quyền Công Khai (gọi

báo cần giúp đỡ và sự cố), Quyền Điều Hành (tiếp nhận các cuộc gọi đến và

xử lí cuộc gọi đó), Quyền Giám Sát (điều khiển hệ thống VBD T4CH và can

thiệp để điều chỉnh các sai lệch nếu cần ), Quyền Điều Phối (phân công cho

bộ phận ứng phó xử lí tình huống và kiểm soát quá trình), và bộ phận Ứng

Phó (nhóm này phải đối phó với tình trạng khẩn cấp và cung cấp thông tin

Page 7: VIETBANDO DATAWAREHOUSE PHẦN MỀM HỆ THỐNG · PHẦN MỀM HỆ THỐNG TRUNG TÂM THÔNG TIN CHỈ HUY -VBD T4CH-2 MỤC LỤC ... CHIA SẺ THÔNG TIN HIỆU QUẢ ... (thường

VBD T4CH TRANG 7

phản hồi).

PHẦN III. BỐ TRÍ VÀ THIẾT KẾ MẠNG LƯỚI

Biểu đồ dưới đây thể hiện dạng bố trí điển hình của VBD T4CH. Nó sử

dụng chỉ một Trung Tâm Tiếp Nhận Cuộc Gọi duy nhất và một Trung Tâm

Giám Sát nhưng lại nhiều Trung Tâm Điều Phối. Nếu cần thiết, VBD T4CH có

thể mở rộng nhiều Trung Tâm Tiếp Nhận Cuộc Gọi đa cấp, Trung Tâm Giám

Sát và Trung Tâm Điều Phối với điều chỉnh tối thiểu.

Hình 2. Thiết kế việc bố trí

Page 8: VIETBANDO DATAWAREHOUSE PHẦN MỀM HỆ THỐNG · PHẦN MỀM HỆ THỐNG TRUNG TÂM THÔNG TIN CHỈ HUY -VBD T4CH-2 MỤC LỤC ... CHIA SẺ THÔNG TIN HIỆU QUẢ ... (thường

VBD T4CH TRANG 8

PHẦN IV. CẤU TRÚC CHỨC NĂNG VBD T4CH

Hệ thống VBD T4CH là dạng cấu trúc bao gồm 7 môđun chức năng:

Nhận tình huống khẩn cấp

Giám sát tình huống khẩn cấp

Điều phối tình huống khẩn cấp

Phản hổi tình huống khẩn cấp

Thống kê tình huống khẩn cấp

Môđun quản trị hệ thống

Tất cả các môđun chức năng chạy trên các máy chủ trung tâm. Những

người dùng có thể đăng nhập và sử dụng hệ thống bằng phần mềm kết nối

mạng thông qua giao thức IP bảo mật. Để truy cập vào các chức năng của VBD

T4CH còn phụ thuộc vào quyền hạn của người dùng. Nhà quản trị của hệ

thống được phép chỉ định hoặc điều chỉnh nhóm quyền bất kể lúc nào. Tuy

nhiên, tất cả người dùng chia sẻ cùng mẫu các giao diện sử dụng (cụ thể họ

chỉ sử dụng được các chức năng trong quyền hạn của mình) do đó giảm thiểu

được công sức huấn luyện và chi phí bảo trì.

Hình 3. Màn hình đăng nhập

Phương pháp thông thường để báo cáo một tình huống khẩn cấp đang

xảy ra là gọi về trung tâm tiếp nhận khẩn cấp thông qua một số điện thoại

Page 9: VIETBANDO DATAWAREHOUSE PHẦN MỀM HỆ THỐNG · PHẦN MỀM HỆ THỐNG TRUNG TÂM THÔNG TIN CHỈ HUY -VBD T4CH-2 MỤC LỤC ... CHIA SẺ THÔNG TIN HIỆU QUẢ ... (thường

VBD T4CH TRANG 9

khẩn cấp (thường ngắn và dễ nhớ ví dụ như 113, 114, ...) Cũng có thể gửi tin

nhắn (SMS) đến các số điện thoại khẩn cấp đó, hữu dụng trong một số tình

huống nhất định. Nhóm điều hành của hệ thống VBD T4CH sẽ dùng mô đun

Nhận Tình Huống Khẩn Cấp để xử lí sự cố gọi đến từ bất kì nguồn thông tin

nào.

Hình 4. Màn hình nhận và xử lý sự cố

Nhóm Giám Sát có thể xem lại các tình huống đang diễn ra và điều

chỉnh những việc sai lệch không mong muốn bằng sử dụng các chức năng có

trong môđun chức năng giám sát và thống kê. Nhóm Điều Phối dùng mô đun

Điều Phối Tình Huống Khẩn Cấp để hướng dẫn bộ phận ứng phó khẩn cấp và

nhận phản hồi từ bộ phận này. Sau khi sự cố kết thúc phiên làm việc, thì các

chức năng của mô đun Phản Hồi Tình Huống Khẩn Cấp phải lưu giữ hồ sơ và

xuất báo cáo. Hồ sơ bao gồm những phản hồi từ nhóm ứng phó. Nhóm Giám

sát và nhóm điều phối có thể có chức năng của mô đun Thống Kê để tạo hoặc

xem qua báo cáo, đồ thị, và các bảng về các sự cố đã và đang xảy ra. Môđun

Page 10: VIETBANDO DATAWAREHOUSE PHẦN MỀM HỆ THỐNG · PHẦN MỀM HỆ THỐNG TRUNG TÂM THÔNG TIN CHỈ HUY -VBD T4CH-2 MỤC LỤC ... CHIA SẺ THÔNG TIN HIỆU QUẢ ... (thường

VBD T4CH TRANG 10

Quản Trị của hệ thống VBD T4CH cho phép các quản trị viên cấu hình toàn

bộ hệ thống, xác định phiên làm việc của các lệnh xử lí tình huống khẩn cấp

và thực thi các lệnh bảo trì.

Hình 5. Màn hình theo dõi, giám sát

Các môđun chức năng của hệ thống VBD T4CH có tích hợp liền mạch

với GIS. Việc định vị cơ bản và xem bản đồ, các chức năng truy vấn được cung

cấp từ GIS nhằm giúp các cơ quan điều hành định vị những sự cố, và giúp

những cơ quan điều phối xác định vị trí các tài nguyên ứng phó khẩn cấp.

Nhờ vào chức năng GIS về việc lên phương án và điều phối của hệ thống VBD

T4CH sẽ giúp các cơ quan điều phối nhanh chóng xác định đúng nhóm ứng

phó và gửi nhóm này đến nơi xảy ra tình trạng khẩn cấp. Môđun thống kê còn

tích hợp các hàm dịch vụ GIS nhằm hiển thị bản đồ theo chủ đề thể hiện mức

độ hiệu quả, cho phép đánh giá ngay hiệu năng cũng như cải thiện quá trình

ứng phó khẩn cấp.

Page 11: VIETBANDO DATAWAREHOUSE PHẦN MỀM HỆ THỐNG · PHẦN MỀM HỆ THỐNG TRUNG TÂM THÔNG TIN CHỈ HUY -VBD T4CH-2 MỤC LỤC ... CHIA SẺ THÔNG TIN HIỆU QUẢ ... (thường

VBD T4CH TRANG 11

Hình 6. Màn hình thống kê

PHẦN V. CÁC CHỨC NĂNG CHÍNH

1. Dễ dàng triển khai và bảo trì

Kiến trúc dịch vụ là một trong những tiêu chuẩn công nghê dễ dàng

triển khai và duy trì. VBD T4CH sử dụng các công nghệ mạng chuẩn để truy

cập vào dữ liệu tập trung và các dịch vụ.

2. Tích hợp với Trung Tâm Tiếp Nhận Sự Cố

Qua Điện Thoại

VBD T4CH sẽ tích hợp rất tốt với các hệ thống trung tâm cuộc gọi. Bất

cứ khi nào có một cuộc gọi, số của người gọi, tên, địa chỉ, và tọa độ (phụ thuộc

Page 12: VIETBANDO DATAWAREHOUSE PHẦN MỀM HỆ THỐNG · PHẦN MỀM HỆ THỐNG TRUNG TÂM THÔNG TIN CHỈ HUY -VBD T4CH-2 MỤC LỤC ... CHIA SẺ THÔNG TIN HIỆU QUẢ ... (thường

VBD T4CH TRANG 12

vào tính sẵn có) xuất hiện trong hồ sơ khẩn cấp và một bảng lịch sử của các

cuộc gọi liên quan đã sẵn sàng để tham khảo dễ dàng

3. Chia sẻ thông tin hiệu quả

VBD T4CH sử dụng một chiến lược chia sẻ thông tin có hệ thống, cả

trong thu thập , xử lý, giao tiếp, lưu trữ, hiển thị, và phân tích. Điều này có thể

làm tăng hiệu quả công việc của các phòng ban có liên quan và cải thiện việc

ra quyết định cho người giám sát, điều phối viên và các đơn vị phản ứng.

4. Định vị tự động

Mô-đun định vị thông minh của hệ thống VBD T4CH có thể nhanh

chóng chuyển đổi địa chỉ văn bản, số điện thoại, cột mốc đường, giao lộ sang

tọa độ địa lý và hiển thị vị trí trên bản đồ tham chiếu trong thời gian thực.

5. Điều phối thông minh và nhanh chóng

Hệ thống VBD T4CH hỗ trợ đầy đủ các chức năng lên phuơng án cho

các tình huống khẩn cấp. Những người dùng có thẩm quyền sẽ lên phương

án cho các tình huống khẩn cấp khác nhau và sau đó, hệ thống này tự động

phối hợp các tình huống khẩn cấp với 1 sơ đồ dự đoán tình huống thông qua

vị trí, kiểu loại, cấp độ và sẽ đề nghị các đơn vị ứng phó và hành động. Với

cách này thì tiết kiệm thời gian cho các nhóm giám sát và điều phối, khiến họ

chú ý nhiều hơn đối với các tình huống khẩn cấp phức tạp và bất ngờ.

6. Điều hướng nhanh chóng

Hệ thống VBD T4CH đặc cách hỗ trợ trong việc tìm kiếm tuyến ngắn

Page 13: VIETBANDO DATAWAREHOUSE PHẦN MỀM HỆ THỐNG · PHẦN MỀM HỆ THỐNG TRUNG TÂM THÔNG TIN CHỈ HUY -VBD T4CH-2 MỤC LỤC ... CHIA SẺ THÔNG TIN HIỆU QUẢ ... (thường

VBD T4CH TRANG 13

nhất/nhanh nhất trên các mạng lưới đường bộ chi tiết để giảm thiểu sự chậm

trễ của các đơn vị ứng phó đến nơi xảy ra sự cố. Việc định tuyến và danh sách

chặng đường luôn có sẵn cho các thiết bị điều hướng phương tiện hoặc cho

gửi tin nhắn đến thiết bị có khả năng nhận hướng dẫn văn bản.

7. Tích hợp với GPS

Với việc tích hợp công nghệ GPS trong hệ thống VBD T4CH, các giám

sát và điều phối có thể nhìn thấy các vị trí thực của các xe cảnh sát hoặc cơ

quan chính phủ, xe cứu thương và xe chữa cháy đang xử lí dữ liệu từ các tín

hiệu GPS gửi tới. Các nhóm giám sát , điều phối và thành viên VIP có thể quan

sát việc ứng phó khẩn cấp từ hệ thống VBD T4CH để chắc rằng mọi thứ điều

thực hiện đúng kịch bản.

8. Tích hợp với SMS

Hệ thống VBD T4CH hỗ trợ cổng SMS để bất kì thông tin điều phối sẵn

sàng gửi đến các đơn vị ứng phó qua dịch vụ tích hợp SMS.

9. Tích hợp với CCTV

Hệ thống VBD T4CH cũng tích hợp với hệ thống CCTV. Các giám sát

viên và điều phối viên có thể tìm thấy các thiết bị máy quay CCTV gần nhất

tại nơi xảy ra sự cố bằng cách thực hiện truy vấn địa lý trực tiếp trên bản đồ

và có thể chuyển đổi qua lại các thiết bị quay để truy xuất những hình ảnh

thực. Điều này giúp các giám sát và điều phối có được thông tin trực quan về

toàn cảnh sự cố và môi trường xung quanh. Từ đó thiết lập nhữg quyết định

đúng đắn với phản hồi thực tế.

Page 14: VIETBANDO DATAWAREHOUSE PHẦN MỀM HỆ THỐNG · PHẦN MỀM HỆ THỐNG TRUNG TÂM THÔNG TIN CHỈ HUY -VBD T4CH-2 MỤC LỤC ... CHIA SẺ THÔNG TIN HIỆU QUẢ ... (thường

VBD T4CH TRANG 14

Hình 7. Màn hình tích hợp với CCTV

10. Các chức năng cảnh báo tự động

Khi một sự cố xảy ra, hệ thống VBD T4CH cảnh báo các điều phối viên

tương ứng bằng việc sử dụng giao diện phần mềm riêng biệt và các tín hiệu

khác (như còi báo động, đèn) theo các cấp độ khẩn cấp định nghĩa trước đó.

Hệ thống VBD T4CH sẽ liên tục gửi tín hiệu khẩn cấp đều đặn đến khi các điều

phối viên phản hồi hợp lí với sự cố.

11. Hiển thị trực quan trạng thái và lịch sử của

việc quản lí sự cố qua bản đồ và đồ thị

Hệ thống VBD T4CH có hỗ trợ riêng trong việc hiển thị trực quan các

thông tin báo cáo và thống kê bằng bản đồ và đồ thị theo chủ đề tùy chọn.

Việc đánh giá về tình hình tổng thể và hiệu suất phản ứng của đơn vị là trực

quan, với nỗ lực tối thiểu.

Page 15: VIETBANDO DATAWAREHOUSE PHẦN MỀM HỆ THỐNG · PHẦN MỀM HỆ THỐNG TRUNG TÂM THÔNG TIN CHỈ HUY -VBD T4CH-2 MỤC LỤC ... CHIA SẺ THÔNG TIN HIỆU QUẢ ... (thường

VBD T4CH TRANG 15

Hình 8. Màn hình bản đồ theo chủ đề

12. Các thủ tục xử lí tính huống khẩn cấp dựa

trên quy trình luồng công việc

Bên trong VBD T4CH, các thủ tục xử lí tình huống khẩn cấp được định

nghĩa và quản lí bằng cách sử dụng công nghệ quy trình luồng công việc, giúp

người dùng có thể linh hoạt hơn để thích nghi hệ thống làm việc theo cơ cầu

tổ chức và quản lý sự cố trên khuôn khổ văn hóa và pháp lí.

Page 16: VIETBANDO DATAWAREHOUSE PHẦN MỀM HỆ THỐNG · PHẦN MỀM HỆ THỐNG TRUNG TÂM THÔNG TIN CHỈ HUY -VBD T4CH-2 MỤC LỤC ... CHIA SẺ THÔNG TIN HIỆU QUẢ ... (thường

VBD T4CH TRANG 16

Hình 9. Thủ tục xử lí tình huống khẩn cấp

PHẦN VI. CHƯƠNG TRÌNH MINH HỌA

Đăng nhập hệ thống

Hình 10. Màn hình đăng nhập chương trình

Page 17: VIETBANDO DATAWAREHOUSE PHẦN MỀM HỆ THỐNG · PHẦN MỀM HỆ THỐNG TRUNG TÂM THÔNG TIN CHỈ HUY -VBD T4CH-2 MỤC LỤC ... CHIA SẺ THÔNG TIN HIỆU QUẢ ... (thường

VBD T4CH TRANG 17

Vào phiên làm việc

Hình 11. Màn hình khởi động Công cụ phản ứng nhanh

Chọn nguồn tin để xem

Hình 12. Chọn nguồn tin

Page 18: VIETBANDO DATAWAREHOUSE PHẦN MỀM HỆ THỐNG · PHẦN MỀM HỆ THỐNG TRUNG TÂM THÔNG TIN CHỈ HUY -VBD T4CH-2 MỤC LỤC ... CHIA SẺ THÔNG TIN HIỆU QUẢ ... (thường

VBD T4CH TRANG 18

Màn hình nhận xử lý sự cố

Hình 13. Màn hình nhận xử lí sự cố

Màn hình chọn lực lượng tham gia giải quyết sự cố

Hình 14. Màn hình chọn lực lương tham gia giải quyết sự cố

Page 19: VIETBANDO DATAWAREHOUSE PHẦN MỀM HỆ THỐNG · PHẦN MỀM HỆ THỐNG TRUNG TÂM THÔNG TIN CHỈ HUY -VBD T4CH-2 MỤC LỤC ... CHIA SẺ THÔNG TIN HIỆU QUẢ ... (thường

VBD T4CH TRANG 19

Cập nhật thông tin hình ảnh/video về hiện trường

Hình 15. Cập nhật thông tin hình ảnh/video về hiện trường

Chọn các bộ lọc theo loại đối tượng được định nghĩa bằng hệ quản

lý tài nguyên

Hình 16. Chọn các bộ lọc theo loại đối tượng được định nghĩa bằng hệ quản lý tài nguyên

Page 20: VIETBANDO DATAWAREHOUSE PHẦN MỀM HỆ THỐNG · PHẦN MỀM HỆ THỐNG TRUNG TÂM THÔNG TIN CHỈ HUY -VBD T4CH-2 MỤC LỤC ... CHIA SẺ THÔNG TIN HIỆU QUẢ ... (thường

VBD T4CH TRANG 20

Geocoding từ chuỗi địa chỉ tìm kiếm

Hình 17. Geocoding từ chuỗi địa chỉ tìm kiếm

Bật tắt các lớp thông tin bản đồ nền

Hình 18. Bật tắt các lớp thông tin bản đồ nền

Page 21: VIETBANDO DATAWAREHOUSE PHẦN MỀM HỆ THỐNG · PHẦN MỀM HỆ THỐNG TRUNG TÂM THÔNG TIN CHỈ HUY -VBD T4CH-2 MỤC LỤC ... CHIA SẺ THÔNG TIN HIỆU QUẢ ... (thường

VBD T4CH TRANG 21

Công cụ tìm K đối tượng gần nhất

Hình 19. Công cụ tìm K đối tượng gần nhất

Xem thông tin chi tiết đối tượng trên bản đồ

Hình 20. Xem thông tin chi tiết đối tượng trên bản đồ

Page 22: VIETBANDO DATAWAREHOUSE PHẦN MỀM HỆ THỐNG · PHẦN MỀM HỆ THỐNG TRUNG TÂM THÔNG TIN CHỈ HUY -VBD T4CH-2 MỤC LỤC ... CHIA SẺ THÔNG TIN HIỆU QUẢ ... (thường

VBD T4CH TRANG 22

Tìm đường

Hình 21. Tìm đường

Tìm đường tránh vùng cấm

Hình 22. Tìm đường tránh vùng cấm

Page 23: VIETBANDO DATAWAREHOUSE PHẦN MỀM HỆ THỐNG · PHẦN MỀM HỆ THỐNG TRUNG TÂM THÔNG TIN CHỈ HUY -VBD T4CH-2 MỤC LỤC ... CHIA SẺ THÔNG TIN HIỆU QUẢ ... (thường

VBD T4CH TRANG 23

Kết quả tìm đường tránh vùng cấm

Hình 23. Kết quả tìm đường tránh vùng cấm

Màn hình theo dõi các tài nguyên (đối tượng di động)

Hình 24. Màn hình theo dõi các tài nguyên (đối tượng di động)

Page 24: VIETBANDO DATAWAREHOUSE PHẦN MỀM HỆ THỐNG · PHẦN MỀM HỆ THỐNG TRUNG TÂM THÔNG TIN CHỈ HUY -VBD T4CH-2 MỤC LỤC ... CHIA SẺ THÔNG TIN HIỆU QUẢ ... (thường

VBD T4CH TRANG 24

Màn hình truy vấn các đối tượng di chuyển theo bán kính (dọc

theo tuyến)

Hình 25. Màn hình truy vấn các đối tượng di chuyển theo bán kính

Màn hình truy vấn các đối tượng di chuyển theo vùng bất kỳ

Hình 26. Màn hình truy vấn các đối tượng di chuyển theo vùng bất kỳ

Page 25: VIETBANDO DATAWAREHOUSE PHẦN MỀM HỆ THỐNG · PHẦN MỀM HỆ THỐNG TRUNG TÂM THÔNG TIN CHỈ HUY -VBD T4CH-2 MỤC LỤC ... CHIA SẺ THÔNG TIN HIỆU QUẢ ... (thường

VBD T4CH TRANG 25

Màn hình điều phối các phương tiện vận chuyển theo tuyến

Hình 27. Màn hình điều phối các phương tiện vận chuyển theo tuyến

Màn hình quản lí nguồn nhân lực khi giải quyết sự cố

Hình 28. Màn hình quản lí nguồn nhân lực khi giải quyết sự cố

Page 26: VIETBANDO DATAWAREHOUSE PHẦN MỀM HỆ THỐNG · PHẦN MỀM HỆ THỐNG TRUNG TÂM THÔNG TIN CHỈ HUY -VBD T4CH-2 MỤC LỤC ... CHIA SẺ THÔNG TIN HIỆU QUẢ ... (thường

VBD T4CH TRANG 26

Màn hình đối thoại khi giải quyết sự vụ

Hình 29. Màn hình đối thoại khi giải quyết sự vụ

Bộ biểu tượng sử dụng trong khi giải quyết sự vụ

Hình 30. Bộ biểu tượng sử dụng trong khi giải quyết sự vụ

Page 27: VIETBANDO DATAWAREHOUSE PHẦN MỀM HỆ THỐNG · PHẦN MỀM HỆ THỐNG TRUNG TÂM THÔNG TIN CHỈ HUY -VBD T4CH-2 MỤC LỤC ... CHIA SẺ THÔNG TIN HIỆU QUẢ ... (thường

VBD T4CH TRANG 27

Màn hình theo các camera và chức năng tự động nhận diện cháy

Hình 31. Màn hình theo các camera và chức năng tự động nhận diện cháy

Màn hình nhận diện khuôn mặt

Hình 32. Màn hình nhận diện khuôn mặt

Page 28: VIETBANDO DATAWAREHOUSE PHẦN MỀM HỆ THỐNG · PHẦN MỀM HỆ THỐNG TRUNG TÂM THÔNG TIN CHỈ HUY -VBD T4CH-2 MỤC LỤC ... CHIA SẺ THÔNG TIN HIỆU QUẢ ... (thường

VBD T4CH TRANG 28

Màn hình chọn kịch bản giải quyết sự vụ

Hình 33. Màn hình chọn kịch bản giải quyết sự vụ

Màn hình luồng xử lý sự vụ (workflow)

Hình 34. Màn hình luồng xử lý sự vụ

Page 29: VIETBANDO DATAWAREHOUSE PHẦN MỀM HỆ THỐNG · PHẦN MỀM HỆ THỐNG TRUNG TÂM THÔNG TIN CHỈ HUY -VBD T4CH-2 MỤC LỤC ... CHIA SẺ THÔNG TIN HIỆU QUẢ ... (thường

VBD T4CH TRANG 29

Màn hình tìm kiếm dựa vào khuôn mặt từ file ảnh

Hình 35. Màn hình tìm kiếm dựa vào khuôn mặt từ file ảnh

Màn hình theo dõi cấu trúc tòa nhà 3D

Hình 36. Màn hình theo dõi cấu trúc tòa nhà 3D

Page 30: VIETBANDO DATAWAREHOUSE PHẦN MỀM HỆ THỐNG · PHẦN MỀM HỆ THỐNG TRUNG TÂM THÔNG TIN CHỈ HUY -VBD T4CH-2 MỤC LỤC ... CHIA SẺ THÔNG TIN HIỆU QUẢ ... (thường

VBD T4CH TRANG 30

Màn hình danh mục các tính năng trong ứng dụng trên mobile

Hình 37. Màn hình danh mục các tính năng trong ứng dụng trên mobile

Màn hình chính trong ứng dụng trên mobile

Hình 38. Màn hình chính trong ứng dụng trên mobile

Page 31: VIETBANDO DATAWAREHOUSE PHẦN MỀM HỆ THỐNG · PHẦN MỀM HỆ THỐNG TRUNG TÂM THÔNG TIN CHỈ HUY -VBD T4CH-2 MỤC LỤC ... CHIA SẺ THÔNG TIN HIỆU QUẢ ... (thường

VBD T4CH TRANG 31

Biểu mẫu nhập một sự vụ mới trên ứng dụng mobile

Hình 39. Biểu mẫu nhập một sự vụ mới trên ứng dụng mobile

Màn hình danh sách các sự vụ đã nhập

Hình 40. Màn hình danh sách các sự vụ đã nhập

Page 32: VIETBANDO DATAWAREHOUSE PHẦN MỀM HỆ THỐNG · PHẦN MỀM HỆ THỐNG TRUNG TÂM THÔNG TIN CHỈ HUY -VBD T4CH-2 MỤC LỤC ... CHIA SẺ THÔNG TIN HIỆU QUẢ ... (thường

VBD T4CH TRANG 32

Màn hình thiết lập các lớp dữ liệu

Hình 41. Màn hình thiết lập các lớp dữ liệu

Màn hình chọn lớp dữ liệu để làm việc

Hình 42. Màn hình chọn lớp dữ liệu để làm việc

Page 33: VIETBANDO DATAWAREHOUSE PHẦN MỀM HỆ THỐNG · PHẦN MỀM HỆ THỐNG TRUNG TÂM THÔNG TIN CHỈ HUY -VBD T4CH-2 MỤC LỤC ... CHIA SẺ THÔNG TIN HIỆU QUẢ ... (thường

VBD T4CH TRANG 33

PHẦN VII. PHỤ LỤC MÃ NGUỒN CHƯƠNG

TRÌNH:

1. Chức năng giải quyết các bài toán về

đường đi và K điểm gần nhất

int Solve()

{

const int num_coordinates =

_waypoint_cmd.coordinates.GetSize();

ASSERT(num_coordinates ==

_waypoint_cmd.is_source.GetSize());

ASSERT(num_coordinates ==

_waypoint_cmd.is_target.GetSize());

ASSERT(num_coordinates ==

_waypoint_cmd.uturns.GetSize());

StatusCode status = StatusCode::Error;

if (_neighbor_gif_timer)

{

_neighbor_gif_timer->stop();

delete _neighbor_gif_timer;

_neighbor_gif_timer = NULL;

}

if (_route_response)

{

delete _route_response;

_route_response = NULL;

}

switch (_routing_type)

{

case RoutingType::SHORTEST_PATH:

{

_viaroute_request.Clear();

_viaroute_request.geometries = true;

_viaroute_request.steps = true;

Page 34: VIETBANDO DATAWAREHOUSE PHẦN MỀM HỆ THỐNG · PHẦN MỀM HỆ THỐNG TRUNG TÂM THÔNG TIN CHỈ HUY -VBD T4CH-2 MỤC LỤC ... CHIA SẺ THÔNG TIN HIỆU QUẢ ... (thường

VBD T4CH TRANG 34

_viaroute_request.distances = true;

_viaroute_request.durations = true;

_viaroute_request.alternatives = 2;

for (int i = 0; i < num_coordinates; ++i)

{

const Point2D &pt =

_waypoint_cmd.coordinates[i];

_viaroute_request.AddCoordinate(pt.y,

pt.x);

}

const int num_uturns =

_waypoint_cmd.uturns.GetSize();

for (int u = 0; u < num_uturns; ++u)

{

_waypoint_cmd.uturns[u]

? _viaroute_request.AddUTurn()

: _viaroute_request.AddStraight();

}

_viaroute_request.barriers =

!_barrier_shapes.empty();

_route_request = &_viaroute_request;

status = Request(_route_request,

_route_response);

break;

}

case RoutingType::ROUND_TRIP:

{

_trip_request.Clear();

_trip_request.geometries = true;

_trip_request.steps = true;

_trip_request.distances = true;

_trip_request.durations = true;

for (int i = 0; i < num_coordinates; ++i)

{

const Point2D &pt =

_waypoint_cmd.coordinates[i];

_trip_request.AddCoordinate(pt.y, pt.x);

}

const int num_uturns =

Page 35: VIETBANDO DATAWAREHOUSE PHẦN MỀM HỆ THỐNG · PHẦN MỀM HỆ THỐNG TRUNG TÂM THÔNG TIN CHỈ HUY -VBD T4CH-2 MỤC LỤC ... CHIA SẺ THÔNG TIN HIỆU QUẢ ... (thường

VBD T4CH TRANG 35

_waypoint_cmd.uturns.GetSize();

for (int u = 0; u < num_uturns; ++u)

{

_waypoint_cmd.uturns[u]

? _trip_request.AddUTurn()

: _trip_request.AddStraight();

}

_route_request = &_trip_request;

status = Request(_route_request,

_route_response);

break;

}

case RoutingType::K_NEAREST_NEIGHBORS:

{

if (VDMS_GetVisibleLayers(_vdms_layer_names))

{

std::vector<std::string> guids;

std::vector<unsigned> layer_indices;

std::vector<FloatPointCoordinate>

coordinates;

const Point2D &pt =

_waypoint_cmd.coordinates[0];

const bool reverse =

_waypoint_cmd.is_target[0];

double degree_radius = (50. *

_num_k_nearest) / DEGREE_APPROXIMATION;

unsigned trials = 0;

GERect2D rect;

do {

rect.left = pt.x - degree_radius;

rect.top = pt.y - degree_radius;

rect.right = pt.x + degree_radius;

rect.bottom = pt.y + degree_radius;

VDMS_RangeQuery(_vdms_layer_names,

rect, guids, layer_indices, coordinates);

degree_radius *= 1.5;

++trials;

} while ((guids.size() < _num_k_nearest) &&

(trials < _num_k_nearest));

Page 36: VIETBANDO DATAWAREHOUSE PHẦN MỀM HỆ THỐNG · PHẦN MỀM HỆ THỐNG TRUNG TÂM THÔNG TIN CHỈ HUY -VBD T4CH-2 MỤC LỤC ... CHIA SẺ THÔNG TIN HIỆU QUẢ ... (thường

VBD T4CH TRANG 36

const unsigned num_targets = guids.size();

ASSERT(num_targets == coordinates.size());

ASSERT(num_targets ==

layer_indices.size());

if (0 < num_targets)

{

RoutingModel::Response::BaseResponse*

route_res = NULL;

_location_request.Clear();

_location_request.clear_all = true;

for (size_t t = 0; t < num_targets;

++t)

{

_location_request.AddCoordinate(coordinates[t]);

_location_request.AddIdentifier(guids[t]);

}

if (StatusCode::Ok ==

Request(&_location_request, route_res))

{

_neighbor_request.Clear();

_neighbor_request.neighbor_criteria =

NeighborCriteria::ITEMS;

_neighbor_request.items_per_page

= _num_k_nearest;

_neighbor_request.page_index = 0;

_neighbor_request.geometries =

true;

_neighbor_request.steps = true;

_neighbor_request.distances =

true;

_neighbor_request.durations =

true;

_neighbor_request.barriers =

!_barrier_shapes.empty();

_neighbor_request.reverse_direction = reverse;

_neighbor_request.AddCoordinate(pt.y, pt.x);

Page 37: VIETBANDO DATAWAREHOUSE PHẦN MỀM HỆ THỐNG · PHẦN MỀM HỆ THỐNG TRUNG TÂM THÔNG TIN CHỈ HUY -VBD T4CH-2 MỤC LỤC ... CHIA SẺ THÔNG TIN HIỆU QUẢ ... (thường

VBD T4CH TRANG 37

_route_request =

&_neighbor_request;

status = Request(_route_request,

_route_response);

if (StatusCode::Ok == status)

{

std::chrono::milliseconds

time_between_frames(_round(1000. / _neighbor_gif_fps));

_neighbor_gif_timer = new

Timer([]() {

_doc->Redraw(false,

true);

_app->GetViewPort()-

>GetWindow()->Invalidate(FALSE);

}, time_between_frames,

false);

_neighbor_gif_timer-

>start(true);

}

}

if (route_res)

{

delete route_res;

route_res = NULL;

}

}

}

break;

}

}

_route_result_wnd.FillResult(_route_request,

_route_response);

return status;

}

2. Hiển thị các đối tượng Tracking

void CTrackerVehicleLayer::Draw(CTileZoomManager

*tile_manager, CDC *pDC)

Page 38: VIETBANDO DATAWAREHOUSE PHẦN MỀM HỆ THỐNG · PHẦN MỀM HỆ THỐNG TRUNG TÂM THÔNG TIN CHỈ HUY -VBD T4CH-2 MỤC LỤC ... CHIA SẺ THÔNG TIN HIỆU QUẢ ... (thường

VBD T4CH TRANG 38

{

GERect2D real_rect;

tile_manager->TileSystem.PixelXYToLatLong(

tile_manager->WindowMinX, tile_manager-

>WindowMinY,

tile_manager->View.LevelOfDetail,

real_rect.top, real_rect.left);

tile_manager->TileSystem.PixelXYToLatLong(

tile_manager->WindowMaxX, tile_manager-

>WindowMaxY,

tile_manager->View.LevelOfDetail,

real_rect.bottom, real_rect.right);

if (real_rect.right < real_rect.left)

{

const auto tmp = real_rect.right;

real_rect.right = real_rect.left;

real_rect.left = tmp;

}

if (real_rect.bottom < real_rect.top)

{

const auto tmp = real_rect.bottom;

real_rect.bottom = real_rect.top;

real_rect.top = tmp;

}

TrackingModel::Response::BaseResponse *response =

NULL;

TrackingModel::Request::BlobRequest blob_req;

CMessage msg;

uint8_t *buffer;

size_t length;

blob_req.min_lat = real_rect.top *

COORDINATE_PRECISION;

blob_req.min_lng = real_rect.left *

COORDINATE_PRECISION;

blob_req.max_lat = std::ceil(real_rect.bottom *

COORDINATE_PRECISION);

blob_req.max_lng = std::ceil(real_rect.right *

COORDINATE_PRECISION);

blob_req.zoom_level = tile_manager-

Page 39: VIETBANDO DATAWAREHOUSE PHẦN MỀM HỆ THỐNG · PHẦN MỀM HỆ THỐNG TRUNG TÂM THÔNG TIN CHỈ HUY -VBD T4CH-2 MỤC LỤC ... CHIA SẺ THÔNG TIN HIỆU QUẢ ... (thường

VBD T4CH TRANG 39

>View.LevelOfDetail;

blob_req.vehicle_layer = true;

blob_req.vehicle_coords = true;

blob_req.vehicle_statuses = true;

blob_req.vehicle_types = true;

blob_req.vehicle_type_filter = m_tracker_grid_ctrl-

>GetVehTypeFilter();

blob_req.vehicle_status_filter =

m_tracker_grid_ctrl->GetStatusFilter();

blob_req.Serialize(buffer, length);

const auto req_key = m_request.NextRequestKey();

msg.SetCommand(MC_BLOB_QUERY);

msg.SetData(buffer, length);

msg.SetLPARAM(req_key);

m_request.Push(&msg);

delete[]buffer;

if (m_request.WaitForResponse(req_key, m_timeout,

response))

{

assert(TrackingModel::Response::Type::Blob ==

response->GetResponseType());

auto blob_res = static_cast<const

TrackingModel::Response::BlobResponse*>(response);

if (StatusCode::Ok == blob_res->status)

{

HDC hDC = pDC->GetSafeHdc();

Gdiplus::Graphics g(hDC);

double vx, vy;

const size_t num_blobs = blob_res-

>vehicle_ids.size();

assert(num_blobs == blob_res-

>vehicle_coords.size());

for (size_t b = 0; b < num_blobs; ++b)

{

const FixedPointCoordinate &coord =

blob_res->vehicle_coords[b];

tile_manager-

>TileSystem.LatLongToPixelXYDouble(

coord.lat / GEOHASH_PRECISION,

coord.lon / GEOHASH_PRECISION,

Page 40: VIETBANDO DATAWAREHOUSE PHẦN MỀM HỆ THỐNG · PHẦN MỀM HỆ THỐNG TRUNG TÂM THÔNG TIN CHỈ HUY -VBD T4CH-2 MỤC LỤC ... CHIA SẺ THÔNG TIN HIỆU QUẢ ... (thường

VBD T4CH TRANG 40

tile_manager->View.LevelOfDetail,

vx, vy);

vx -= tile_manager->WindowMinX;

vy -= tile_manager->WindowMinY;

if (VehicleStatus::Disconnected &

blob_res->vehicle_statuses[b])

{

g.DrawImage(m_veh_stat_imgs[0],

(int)vx -

m_veh_stat_img_width, (int)vy - m_veh_stat_img_height);

}

else

{

g.DrawImage(m_veh_type_imgs[_VehicleType2Index(blob

_res->vehicle_types[b])],

(int)vx -

m_veh_type_img_width, (int)vy - m_veh_type_img_height);

}

}

}

delete blob_res;

}

}

3. Tương tác trên các đối tượng Tracking

int CTrackerVehicleLayer::Selection(const GERect2D &rR,

const UINT &nMode, void**& pReParam)

{

int nSize = 0;

if (!Visible())

return nSize;

TrackingModel::Response::BaseResponse *response =

NULL;

TrackingModel::Request::RangeRequest range_req;

CMessage msg;

uint8_t *buffer;

size_t length;

Page 41: VIETBANDO DATAWAREHOUSE PHẦN MỀM HỆ THỐNG · PHẦN MỀM HỆ THỐNG TRUNG TÂM THÔNG TIN CHỈ HUY -VBD T4CH-2 MỤC LỤC ... CHIA SẺ THÔNG TIN HIỆU QUẢ ... (thường

VBD T4CH TRANG 41

range_req.min_lat = rR.top * COORDINATE_PRECISION;

range_req.min_lng = rR.left * COORDINATE_PRECISION;

range_req.max_lat = std::ceil(rR.bottom *

COORDINATE_PRECISION);

range_req.max_lng = std::ceil(rR.right *

COORDINATE_PRECISION);

range_req.vehicle_type_filter = m_tracker_grid_ctrl-

>GetVehTypeFilter();

range_req.vehicle_status_filter =

m_tracker_grid_ctrl->GetStatusFilter();

range_req.vehicle_layer = true;

range_req.vehicle_plates = true;

range_req.vehicle_company_ids = true;

range_req.vehicle_dept_ids = true;

range_req.vehicle_types = true;

range_req.vehicle_coords = true;

range_req.vehicle_times = true;

range_req.vehicle_speeds = true;

range_req.vehicle_statuses = true;

range_req.vehicle_headings = true;

range_req.Serialize(buffer, length);

const auto req_key = m_request.NextRequestKey();

msg.SetCommand(MC_RANGE_QUERY);

msg.SetData(buffer, length);

msg.SetLPARAM(req_key);

m_request.Push(&msg);

delete[]buffer;

std::vector<int> vtObjSel;

if (m_request.WaitForResponse(req_key, m_timeout,

response))

{

assert(TrackingModel::Response::Type::Range ==

response->GetResponseType());

auto range_res =

static_cast<TrackingModel::Response::RangeResponse*>(res

ponse);

bool up_to_date = true;

if ((m_departments.Version() < range_res-

>dept_version) ||

(m_companies.Version() < range_res-

>company_version))

{

Page 42: VIETBANDO DATAWAREHOUSE PHẦN MỀM HỆ THỐNG · PHẦN MỀM HỆ THỐNG TRUNG TÂM THÔNG TIN CHỈ HUY -VBD T4CH-2 MỤC LỤC ... CHIA SẺ THÔNG TIN HIỆU QUẢ ... (thường

VBD T4CH TRANG 42

up_to_date = PullRequest();

}

if (up_to_date)

{

if (StatusCode::Ok == range_res->status)

{

m_vehicles.Swap(*range_res);

uint32_t closest_index = 0;

const size_t num_trackers =

m_vehicles.Size();

if (num_trackers > 1)

{

const FloatPointCoordinate

center(rR.CenterY(), rR.CenterX());

double closest_dist =

(std::numeric_limits<double>::max)();

for (size_t v = 0; v <

num_trackers; ++v)

{

const FloatPointCoordinate

coord(

m_vehicles.GetCoordinate(v).lat / GEOHASH_PRECISION,

m_vehicles.GetCoordinate(v).lon /

GEOHASH_PRECISION);

const double dist =

Coordinate::haversine_distance(center, coord);

if (closest_dist > dist)

{

closest_dist = dist;

closest_index = v;

}

}

}

vtObjSel.push_back(m_vehicles.At(closest_index));

}

}

Page 43: VIETBANDO DATAWAREHOUSE PHẦN MỀM HỆ THỐNG · PHẦN MỀM HỆ THỐNG TRUNG TÂM THÔNG TIN CHỈ HUY -VBD T4CH-2 MỤC LỤC ... CHIA SẺ THÔNG TIN HIỆU QUẢ ... (thường

VBD T4CH TRANG 43

else

{

//AfxMessageBox(_T("Data is out-of-date"));

}

delete range_res;

nSize = vtObjSel.size();

if (nSize > 0)

{

pReParam = new void*[3];

int nVal = param_INT;

int i = 0;

pReParam[i] = malloc(sizeof(int));

memcpy(pReParam[i], &nVal, sizeof(int));

i++;

pReParam[i] = malloc(sizeof(int));

memcpy(pReParam[i], &nSize, sizeof(int));

i++;

for (int nIdx : vtObjSel)

{

pReParam[i] = malloc(sizeof(int));

memcpy(pReParam[i], &nIdx,

sizeof(int));

i++;

}

}

}

return nSize;

}

4. Tìm lộ trình tối ưu

bool Dispatch(FD_PROFILE &profile)

{

profile.solution.Clear();

profile.solved = false;

Page 44: VIETBANDO DATAWAREHOUSE PHẦN MỀM HỆ THỐNG · PHẦN MỀM HỆ THỐNG TRUNG TÂM THÔNG TIN CHỈ HUY -VBD T4CH-2 MỤC LỤC ... CHIA SẺ THÔNG TIN HIỆU QUẢ ... (thường

VBD T4CH TRANG 44

rapidjson::Document json_doc;

rapidjson::Document::AllocatorType& allocator =

json_doc.GetAllocator();

rapidjson::Value

json_body_obj(rapidjson::Type::kObjectType);

rapidjson::Value

json_veh_types(rapidjson::Type::kArrayType);

for (auto it = _veh_types.cbegin(), end =

_veh_types.cend(); it != end; ++it)

{

const auto &type_id = it->first;

const auto &veh_type = it->second;

rapidjson::Value

json_veh_type(rapidjson::Type::kObjectType);

json_veh_type.AddMember("type_id", type_id,

allocator);

json_veh_type.AddMember("capacity",

veh_type.capacity, allocator);

json_veh_types.PushBack(json_veh_type,

allocator);

}

json_body_obj.AddMember("vehicle_types",

json_veh_types, allocator);

rapidjson::Value

json_vehicles(rapidjson::Type::kArrayType);

for (auto it = profile.drivers.cbegin(), end =

profile.drivers.cend(); it != end; ++it)

{

const auto &driver_id = *it;

const auto &driver = _drivers.at(driver_id);

const std::string driver_name =

CW2A(driver.name.c_str(), CP_UTF8);

const std::string driver_address_name =

CW2A(driver.address.name.c_str(), CP_UTF8);

rapidjson::Value

json_vehicle(rapidjson::Type::kObjectType);

json_vehicle.AddMember("vehicle_id", driver_id,

allocator);

json_vehicle.AddMember("name", driver_name,

allocator);

json_vehicle.AddMember("type_id",

driver.vehicle, allocator);

Page 45: VIETBANDO DATAWAREHOUSE PHẦN MỀM HỆ THỐNG · PHẦN MỀM HỆ THỐNG TRUNG TÂM THÔNG TIN CHỈ HUY -VBD T4CH-2 MỤC LỤC ... CHIA SẺ THÔNG TIN HIỆU QUẢ ... (thường

VBD T4CH TRANG 45

rapidjson::Value

json_address(rapidjson::Type::kObjectType);

json_address.AddMember("location_id",

driver_address_name, allocator);

json_address.AddMember("lon",

driver.address.lon, allocator);

json_address.AddMember("lat",

driver.address.lat, allocator);

json_vehicle.AddMember("start_address",

json_address, allocator);

json_vehicles.PushBack(json_vehicle,

allocator);

}

json_body_obj.AddMember("vehicles", json_vehicles,

allocator);

rapidjson::Value

json_services(rapidjson::Type::kArrayType);

for (auto it = profile.stops.cbegin(), end =

profile.stops.cend(); it != end; ++it)

{

const auto &stop_id = *it;

const auto &stop = _stops.at(stop_id);

const std::string stop_name =

CW2A(stop.name.c_str(), CP_UTF8);

const std::string stop_address_name =

CW2A(stop.address.name.c_str(), CP_UTF8);

rapidjson::Value

json_service(rapidjson::Type::kObjectType);

json_service.AddMember("id", stop_id,

allocator);

json_service.AddMember("name", stop_name,

allocator);

json_service.AddMember("size", stop.load,

allocator);

rapidjson::Value

json_address(rapidjson::Type::kObjectType);

json_address.AddMember("location_id",

stop_address_name, allocator);

json_address.AddMember("lon", stop.address.lon,

allocator);

json_address.AddMember("lat", stop.address.lat,

allocator);

json_service.AddMember("address", json_address,

Page 46: VIETBANDO DATAWAREHOUSE PHẦN MỀM HỆ THỐNG · PHẦN MỀM HỆ THỐNG TRUNG TÂM THÔNG TIN CHỈ HUY -VBD T4CH-2 MỤC LỤC ... CHIA SẺ THÔNG TIN HIỆU QUẢ ... (thường

VBD T4CH TRANG 46

allocator);

json_services.PushBack(json_service,

allocator);

}

json_body_obj.AddMember("services", json_services,

allocator);

rapidjson::StringBuffer json_ss;

rapidjson::Writer<rapidjson::StringBuffer>

json_writer(json_ss);

json_body_obj.Accept(json_writer);

wchar_t szSize[50] = L"";

swprintf_s(szSize, L"%d", json_ss.GetSize());

wstring headers = L"Content-Length: ";

headers += szSize;

headers += L"\r\nContent-Type:

application/json\r\n";

_vrp_http_client-

>SetAdditionalDataToSend((BYTE*)json_ss.GetString(),

json_ss.GetSize());

_vrp_http_client-

>SetAdditionalRequestHeaders(headers);

if (!_vrp_http_client->SendHttpRequest(_T("POST"),

false))

{

return false;

}

const BYTE *buffer = _vrp_http_client-

>GetRawResponseContent();

if (!buffer)

{

return false;

}

if (json_doc.Parse((const

char*)buffer).HasParseError())

{

return false;

}

RoutingModel::Request::ViaRouteRequest

Page 47: VIETBANDO DATAWAREHOUSE PHẦN MỀM HỆ THỐNG · PHẦN MỀM HỆ THỐNG TRUNG TÂM THÔNG TIN CHỈ HUY -VBD T4CH-2 MỤC LỤC ... CHIA SẺ THÔNG TIN HIỆU QUẢ ... (thường

VBD T4CH TRANG 47

viaroute_request;

auto viaroute_status = StatusCode::Ok;

viaroute_request.vehicle = VehicleType::motorcar;

viaroute_request.geometries = true;

viaroute_request.steps = false;

viaroute_request.distances = false;

viaroute_request.durations = false;

const std::string url = _routing_http_url +

viaroute_request.GetDescriptor();

const std::wstring wide_url = CA2W(url.c_str(),

CP_UTF8);

ASSERT(json_doc.HasMember("routes"));

ASSERT(json_doc["routes"].IsArray());

const rapidjson::Value &json_routes =

json_doc["routes"];

const rapidjson::SizeType num_routes =

json_routes.Size();

profile.solution.ids.resize(num_routes);

profile.solution.lts.resize(num_routes);

profile.solution.via_points.resize(num_routes);

profile.solution.routes.resize(num_routes);

for (rapidjson::SizeType r = 0; r < num_routes; ++r)

{

const rapidjson::Value &json_route =

json_routes[r];

ASSERT(json_route.IsObject());

ASSERT(json_route.HasMember("vehicle_id"));

ASSERT(json_route["vehicle_id"].IsString());

const auto driver_id =

std::stoul(json_route["vehicle_id"].GetString());

const auto &driver = _drivers.at(driver_id);

viaroute_request.Clear();

ASSERT(json_route.HasMember("paths"));

ASSERT(json_route["paths"].IsArray());

const rapidjson::Value &json_paths =

json_route["paths"];

Page 48: VIETBANDO DATAWAREHOUSE PHẦN MỀM HỆ THỐNG · PHẦN MỀM HỆ THỐNG TRUNG TÂM THÔNG TIN CHỈ HUY -VBD T4CH-2 MỤC LỤC ... CHIA SẺ THÔNG TIN HIỆU QUẢ ... (thường

VBD T4CH TRANG 48

const rapidjson::SizeType num_paths =

json_paths.Size();

for (rapidjson::SizeType p = 0; p < num_paths;

++p)

{

const rapidjson::Value &json_path =

json_paths[p];

ASSERT(json_path.IsObject());

ASSERT(json_path.HasMember("activity"));

ASSERT(json_path["activity"].IsString());

const std::string activity =

json_path["activity"].GetString();

ASSERT(json_path.HasMember("job"));

ASSERT(json_path["job"].IsString());

if ("start" == activity)

{

profile.solution.ids[r].push_back(driver_id);

profile.solution.lts[r].push_back(FD_LT_DRIVER);

viaroute_request.AddCoordinate(driver.address.lat,

driver.address.lon);

}

else if ("end" == activity)

{

profile.solution.ids[r].push_back(driver_id);

profile.solution.lts[r].push_back(FD_LT_DRIVER);

viaroute_request.AddCoordinate(driver.address.lat,

driver.address.lon);

}

else if ("service" == activity)

{

const auto stop_id =

std::stoul(json_path["job"].GetString());

const auto &stop = _stops.at(stop_id);

profile.solution.ids[r].push_back(stop_id);

Page 49: VIETBANDO DATAWAREHOUSE PHẦN MỀM HỆ THỐNG · PHẦN MỀM HỆ THỐNG TRUNG TÂM THÔNG TIN CHỈ HUY -VBD T4CH-2 MỤC LỤC ... CHIA SẺ THÔNG TIN HIỆU QUẢ ... (thường

VBD T4CH TRANG 49

profile.solution.lts[r].push_back(FD_LT_STOP);

viaroute_request.AddCoordinate(stop.address.lat,

stop.address.lon);

}

}

viaroute_request.SetAllStraights();

std::string data;

data.reserve(128);

viaroute_request.MakeData(data);

wchar_t szSize[50] = L"";

swprintf_s(szSize, L"%d", data.size());

wstring headers = L"Content-Length: ";

headers += szSize;

headers += L"\r\nContent-Type:

application/json\r\n";

_routing_http_client->UpdateUrl(wide_url);

_routing_http_client-

>SetAdditionalRequestHeaders(headers);

_routing_http_client-

>SetAdditionalDataToSend((BYTE*)data.c_str(),

data.size());

if (!_routing_http_client-

>SendHttpRequest(_T("POST"), false))

{

viaroute_status = StatusCode::Error;

break;

}

const BYTE *buffer = _routing_http_client-

>GetRawResponseContent();

if (!buffer)

{

viaroute_status = StatusCode::Error;

break;

}

rapidjson::Document json_routing_doc;

if (json_routing_doc.Parse((const

Page 50: VIETBANDO DATAWAREHOUSE PHẦN MỀM HỆ THỐNG · PHẦN MỀM HỆ THỐNG TRUNG TÂM THÔNG TIN CHỈ HUY -VBD T4CH-2 MỤC LỤC ... CHIA SẺ THÔNG TIN HIỆU QUẢ ... (thường

VBD T4CH TRANG 50

char*)buffer).HasParseError())

{

viaroute_status = StatusCode::Error;

break;

}

RoutingModel::Response::ViaRouteResponse

viaroute_response(json_routing_doc);

viaroute_status = viaroute_response.status;

if (StatusCode::Ok != viaroute_status)

{

break;

}

profile.solution.via_points[r] =

std::move(viaroute_response.via_points);

profile.solution.routes[r] =

std::move(viaroute_response.routes.at(0));

}

if (StatusCode::Ok != viaroute_status)

{

profile.solution.Clear();

return false;

}

// group routes by driver

for (auto r1 = 0; r1 < num_routes - 1; ++r1)

{

const auto &ids1 = profile.solution.ids[r1];

const auto driver_id1 = ids1.at(0);

auto d = driver_id1;

auto r = r1;

for (auto r2 = r1 + 1; r2 < num_routes; ++r2)

{

const auto &ids2 =

profile.solution.ids[r2];

const auto driver_id2 = ids2.at(0);

if (driver_id2 < d)

{

d = driver_id2;

r = r2;

Page 51: VIETBANDO DATAWAREHOUSE PHẦN MỀM HỆ THỐNG · PHẦN MỀM HỆ THỐNG TRUNG TÂM THÔNG TIN CHỈ HUY -VBD T4CH-2 MỤC LỤC ... CHIA SẺ THÔNG TIN HIỆU QUẢ ... (thường

VBD T4CH TRANG 51

}

}

if (r == r1)

{

continue;

}

auto ids = std::move(profile.solution.ids[r1]);

profile.solution.ids[r1] =

std::move(profile.solution.ids[r]);

profile.solution.ids[r] = std::move(ids);

auto lts = std::move(profile.solution.lts[r1]);

profile.solution.lts[r1] =

std::move(profile.solution.lts[r]);

profile.solution.lts[r] = std::move(lts);

auto via_points =

std::move(profile.solution.via_points[r1]);

profile.solution.via_points[r1] =

std::move(profile.solution.via_points[r]);

profile.solution.via_points[r] =

std::move(via_points);

auto route =

std::move(profile.solution.routes[r1]);

profile.solution.routes[r1] =

std::move(profile.solution.routes[r]);

profile.solution.routes[r] = std::move(route);

}

const auto &ids1 = profile.solution.ids[0];

auto driver_id1 = ids1.at(0);

const auto color_index = (_number_of_colors /

num_routes) * 0;

profile.solution.colors.push_back(_route_colors.at(

color_index));

profile.solution.ranges.push_back(0);

for (auto r = 1; r < num_routes; ++r)

{

const auto &ids2 = profile.solution.ids[r];

Page 52: VIETBANDO DATAWAREHOUSE PHẦN MỀM HỆ THỐNG · PHẦN MỀM HỆ THỐNG TRUNG TÂM THÔNG TIN CHỈ HUY -VBD T4CH-2 MỤC LỤC ... CHIA SẺ THÔNG TIN HIỆU QUẢ ... (thường

VBD T4CH TRANG 52

const auto driver_id2 = ids2.at(0);

const auto color_index = (_number_of_colors /

num_routes) * r;

profile.solution.colors.push_back(_route_colors.at(

color_index));

if (driver_id1 != driver_id2)

{

profile.solution.ranges.push_back(r);

driver_id1 = driver_id2;

}

}

profile.solution.ranges.push_back(num_routes);

profile.solution.visible.assign(num_routes, true);

profile.solved = true;

return true;

}