Biểu đồ ở hình 17 mô tả khung nhìn logic của hệ thống theo các lớp: Presentation, service, data access, database. Mỗi lớp thực hiện các nhiệm vụ đặc thù riêng biệt.
- Lớp người dùng: chứa các hoạt động của người sử dụng tương tác với hệ thống. Các hoạt động yêu cầu hiển thị bản đồ, chạy ảnh theo chuỗi thời gian, hoạt động trích xuất metadata, tải ảnh, lựa chọn thông tin ngày tháng, loại vệ tinh để xuất thống kê báo cáo.
- Lớp Rich Internet Presentation: chứa giao các giao diện đồ họa của hệ thống. Lớp Presentation được thiết kế sử dụng mẫu thiết kế MVC (Model – View – Controller), và phát triển sử dụng Flex ActionScript 3.
o Model: đưa ra dữ liệu ngày tháng chụp ảnh, địa điểm, tọa độ, dữ liệu AQI, AOT, PM, và các thông số về metadata cho ứng dụng bằng việc giao tiếp với cơ sở dữ liệu, đầu ra là danh sách các đối tượng lập trình thuận tiện cho việc trình diễn.
o View: hiển thị và mô hình hóa dữ liệu bản đồ AQI, AOT, PM với màu sắc tương ứng với thang màu chất lượng không khí, dữ liệu text để người sử dụng có thể đọc/nhìn thấy được từ phía giao diện. Flex SDK4 cho phép chúng ta tạo nhanh chóng các thành phần GUI sử dụng MXML kết hợp với ActionScrip 3.
o Controller: cung cấp các nghiệp vụ logic thực hiện việc xử lý các tương tác xem bản đồ, chọn vùng, chọn điểm để hiển thị dữ liệu chất lượng không khí theo thời điểm-khoảng thời gian, dữ liệu metadata của người sử dụng tác động lên view, tính toán dữ liệu, điều hướng các màn hình để trả về kết quả người dùng mong muốn.
- Lớp Service: Chứa các thành phần dịch vụ của hệ thống. Hệ thống chia sẻ thông tin cảnh báo ô nhiễm không khí có 2 thành phần dịch vụ chính được sử dụng là:
o Dịch vụ bản đồ: được Arcgis Server cung cấp, biểu diễn các bản đồ chất lượng không khí được tính toán và nội suy trên toàn lãnh thổ Việt Nam đã cắt theo mức tỉnh, địa giới hành chính của Việt Nam.
o Dịch vụ dữ liệu: được xây dựng bằng php, cung cấp dữ liệu text và số liệu như thông tin về vùng, metadata của ảnh, các chỉ số, thang màu sắc theo tiêu chuẩn Việt Nam và Quốc Tế, các số liệu chất lượng không khí theo vùng, theo thời gian. Chuẩn đầu ra của dữ liệu là json/xml.
- Lớp Data Access: Truy cập trực tiếp đến cơ sở dữ liệu không gian. Lớp Data Access sử dụng Active Record để truy vấn dữ liệu và trả về một Active Data Provider. Tư đây, dữ liệu sẽ được chuyển đổi thành các đối tượng json gửi qua dịch vụ web.
- Database: Lớp lưu trữ dữ liệu không gian của toàn bộ hệ thống chia sẻ thông tin cảnh báo ô nhiễm không khí.
3.4.2. Nền tảng công nghệ
3.4.2.1. Lựa chọn công nghệ chủ chốt xây dựng hệ thống
Với mô tả tổng quan hệ thống, mô hình kiến trúc và các công nghệ đã tìm hiểu. Hệ thống chia sẻ thông tin cảnh báo ô nhiễm không khí được thiết kế dựa trên các nển tảng công nghệ mã nguồn mở và các sản phẩm thương mại để kết hợp ưu điểm của mỗi thành phần. Mỗi công nghệ trong từng thành phần được nghiên cứu và thử nghiệm trước khi triển khai thực tế. Mục tiêu chính lựa chọn các công nghệ để phát triển hệ thống là có
khả năng cung cấp và hỗ trợ đầy đủ, đa dạng, nhiều đối tượng sử dụng và luôn được cập nhật đầy đủ.
Căn cứ vào việc tìm hiểu các đặc tính kỹ thuật, khả năng hỗ trợ và cung cấp các giải pháp xây dựng web GIS nhanh chóng, tiện lợi, giàu tính năng. Với việc hiển thị bản đồ và tương tác với dữ liệu bản đồ, tôi chọn công nghệ Arcgis API vì đây là một API miễn phí, hỗ trợ lập trình các chức năng tương tác, truy vấn bản đồ một cách dễ dàng với các phương thức đã xây dựng sẵn. Sử dụng ArcgisAPI, ta không cần phải xây dựng các từ đầu hệ thống bản đồ nền (phát triển trên các map server) vì nó tương đối phức tạp, thay vào đó, ta có thể sử dụng hệ thống dịch vụ bản đồ phong phú đã được xây dựng sẵn và công bố bởi ERSI.
Đối với giao diện phía người dùng, tôi lựa chọn Flex dể xây dựng. Với Flex, hiệu suất xây dựng các chức năng và giao diện phía client nhanh hơn hẳn so với HTML5/CSS/JS. Khi làm việc với Flex, các IDE hỗ trợ tự động kiểm tra mã nguồn để tránh lỗi cú pháp, tự động gợi ý và sinh mã nguồn, giúp cho tốc độ xây dựng chương trình phần mềm tăng cao. Trong khi đó đối với Javascript, để xây dựng các chức năng tương tự mất nhiều thời gian hơn Flex, mã nguồn dài và khó quản lý và đặc biệt hiện nay chưa có IDE nào hỗ trợ tự động sinh mã nguồn, kiểm tra cú pháp mã nguồn. Nếu có lỗi cú pháp hay gọi một hàm không có sẵn, việc tìm và sửa lỗi trong Javascipt rất khó khăn và vất vả. Chỉ với ActionScrip/Mxml của Flex, ta có thể xây dựng ra các ứng dụng giàu tương tác với các hiệu ứng không thua kém HTML/CSS/JS.
Đối với giao diện phía người dùng, tôi lựa chọn Flex dể xây dựng. Với Flex, hiệu suất xây dựng các chức năng và giao diện phía client nhanh hơn hẳn so với HTML5/CSS/JS. Khi làm việc với Flex, các IDE hỗ trợ tự động kiểm tra mã nguồn để tránh lỗi cú pháp, tự động gợi ý và sinh mã nguồn, giúp cho tốc độ xây dựng chương trình phần mềm tăng cao. Trong khi đó đối với Javascript, để xây dựng các chức năng tương tự mất nhiều thời gian hơn Flex, mã nguồn dài và khó quản lý và đặc biệt hiện nay chưa có IDE nào hỗ trợ tự động sinh mã nguồn, kiểm tra cú pháp mã nguồn. Nếu có lỗi cú pháp hay gọi một hàm không có sẵn, việc tìm và sửa lỗi trong Javascipt rất khó khăn và vất vả. Chỉ với ActionScrip/Mxml của Flex, ta có thể xây dựng ra các ứng dụng giàu tương tác với các hiệu ứng không thua kém HTML/CSS/JS.
Đối với phía server và API giao tiếp dữ liệu, tôi lựa chọn ngôn ngữ PHP, sử dụng framework Yii2. Yii2 hỗ trợ xây dựng nhanh các dịch vụ web theo chuẩn RESTful với đầu ra dữ liệu là json hoặc xml, kết nối với client viết bằng Flash/Flex để hiển thị/truy vấn/tương tác bản đồ, dữ liệu bản đồ. Việc sử dụng RESTful để tạo luồng lưu thông dữ liệu giúp ích cho việc mở rộng cung cấp thông tin trên nền tảng di động hoặc desktop application. Viết một lần, sử dụng nhiều lần, tiết kiệm thời gian phát triển phía server. Các ứng dụng android/ios chỉ cần có dịch vụ bản đồ và dịch vụ web cung cấp dữ liệu là có thể xử lý và tương tác với server.
Về cơ sở dữ liệu không gian, tôi chọn PostgreSQL, đây là hệ quản trị cơ sở dữ liệu miễn phí và nguồn mở, hỗ trợ lưu trữ và truy vấn dữ liệu không gian. PostgreSQL hỗ
trợ lưu trữ dữ liệu Vector và Raster, phù hợp để lưu trữ các ảnh vệ tinh có trường dữ liệu kiểu polygon, point. Ngoài ra, PostgreSQL có cộng đồng hỗ trợ khá đông và mạnh mẽ.
Cuối cùng, với máy chủ biên tập bản đồ chất lượng không khí AQI, PM, AOT và bản đồ địa giới hành chính các mức tỉnh/quốc gia, tôi lựa chọn sử dụng Arcgis Server.
Như vậy, việc lựa chọn công nghệ và ngôn ngữ lập trình để phát triển hệ thống WebGis dựa trên bài toán và nhu cầu thực tế là phù hợp khi cần một hệ thống với nhiều tính năng phú, đa dạng, tiện ích nhưng cũng cần đảm bảo khải năng tùy biến cao, dễ bảo trì, nâng cấp, dễ mở rộng trong tương lai.
3.4.2.2. Thành phần phần mềm trong hệ thống R IA L aye r Twitter Bootstrap Controls HTML5 RIA - Flex Framework - F-project Flex RIA W eb /A P I L aye r Yii2 PHP Web Server WEB API Yii2 RESTful API Arcgis REST API D B L aye r PostgreSQL Hình 18: Sơ đồ phần mềm của hệ thống
Sơ đồ trên mô tả các thành phần phần mềm, các công nghệ, các dịch vụ web được sử dụng trong hệ thống chia sẻ thông tin cảnh báo ô nhiễm không khí. Phía client và server sử dụng một vài công nghệ riêng biệt tùy theo mục đích và chức năng.
Database Layer sử dụng hệ quản trị cơ sở dữ liệu mã nguồn mở PostgreSQL với extension Postgis để quản lý dữ liệu không gian. Đây là hệ quản trị cơ sở dữ liệu được sử dụng rộng rãi trong lĩnh vực GIS.
Webserver sử dụng công nghệ Yii2 để xây dựng các module quản trị dữ liệu, quản trị hệ thống. Đây là một công nghệ mã nguồn mở với nền tảng PHP.
Tầng API: Tầng trung gian giữa Database và tầng client. Nó cung cấp dữ liệu cho phía người dùng, nhận các yêu cầu truy xuất dữ liệu và trả về kết quả. Có hai loại API:
o Arcgis API: cung cấp các thành phần giúp tạo bản đồ, các thành phần bản đồ, giúp tương tác với dịch vụ bản đồ. Việc tương tác dữ liệu
thông qua dịch vụ của Arcgis API diễn ra mỗi khi có dữ liệu ảnh mới được xử lý và đưa vào cơ sở dữ liệu. Arcgis server sẽ truy xuất dữ liệu mới nhất được cập nhật và gửi ra client thông qua Arcgis API. Ở đây Arcgis API kết hợp với Flex, trình diễn bản đồ chất lượng không khí toàn quốc. Arcgis Api cũng cung cấp bản đồ vị trí các trạm quan trắc PM, AOT toàn quốc.
o Yii2 RESTful API: Cung cấp dữ liệu chi tiết về các chỉ số chất lượng không khí, các thông tin của ảnh vệ tinh như thời gian, không gian, tọa độ. Nó sẽ kết hợp với các đối tượng đã được mô hình hóa trên bản đồ nền để đưa ra các thông tin phù hợp. Yii2 Restful API kết hợp song song với Arcgis API dựa vào tọa độ của vùng, điểm để đưa ra dữ liệu cho vùng/điểm đó khi người dùng lựa chọn.
Tầng RIA (Rich Internet Application): tầng này sử dụng HTML5/CSS3/JS và Flex để xây dựng giao diện web giàu tương tác. HTML5/CSS3/JS sử dụng xây dựng giao diện phía quản lý dữ liệu, Flex được sử dụng để xây dựng giao diện phía người dùng. Flex được nhúng trong một trang html sử dụng Flash để trình diễn.
3.5. Process view
Khung nhìn Process (xử lý) mô tả các quy trình tương tác giữa người dùng và hệ thống, luồng dữ liệu của các dịch vụ web, dịch vụ bản đồ. Khung nhìn xử lý cũng bao gồm các luồng, các xử lý của hệ thống. Sơ đồ dưới đây sẽ mô tả Process view của hệ thống chia sẻ thông tin cảnh báo ô nhiễm không khí.
<<process>> Browser/Flash Player <<thread>> Hiển thị ảnh AQI/PM/AOT <<thread>> Trình diễn danh sách ảnh <<thread>> Trích xuất dữ liệu phi không gian của ảnh
<<thread>> Thống kê báo cáo
Yêu cầu dữ liệu
<<process>> PostgreSQL <<process>>
Web Service <<thread>> APOM WEB API
<<process>> APOM Web Server
<<process>> Arcgis Server <<process>> Map Service
<<thread>> APOM MAP API Yêu cầu dữ liệu
Yêu cầu dữ liệu Yêu cầu dữ liệu Yêu cầu dữ liệu
Yêu cầu dữ liệu
Yêu cầu dữ liệu
Yêu cầu dữ liệu
Yêu cầu dữ liệu
Yêu cầu dữ liệu Yêu cầu dữ liệu
Hình 19: Các luồng xử lý của các thành phần hệ thống
Browser/Flash Layers: Phần này chứa các luồng phía client, quản lý toàn bộ các nghiệp vụ bao gồm: Mô hình hóa dữ liệu, trực quan bản đồ/biểu đồ/ảnh chất lượng không khí. Lớp này gồm các thành phần hiển thị ảnh AQI, PM, AOT, trình diễn danh sách ảnh, trích xuất dữ liệu metadata, dữ liệu phi không gian của ảnh vệ tinh, thống kê số liệu theo ngày tháng. Client sẽ yêu cầu dữ liệu các thông tin về vùng ô nhiễm, các mức ô nhiễm theo tiêu chuẩn của Việt Nam và Quốc tế, top các vùng có mức ô nhiễm cao, dữ liệu thống kê báo cáo tùy theo thao tác lựa chọn phía người dùng. Thông qua client người sử dụng cũng có thể xem thông tin về AQI tại một điểm trong 1 pixel của ảnh trên bản đồ tương đương với 6km vuông ngoài thực địa. Các thành phần của client sẽ yêu cầu dữ liệu từ dịch vụ dữ liệu của hệ thống và dịch vụ bản đồ của Arcgis Server, sau đó kết hợp hai lại dữ liệu này để tạo ra bản đồ số.
WebService: Khi có request từ phía client, hệ thống sẽ xác định request đó yêu cầu dịch vụ nào và gọi dịch vụ đó để xử lý.
- Nếu client yêu cầu dữ liệu dạng text, web service của hệ thống sẽ được sử dụng để truy xuất và gửi dữ liệu.
- Nếu client yêu cầu dữ liệu dạng bản đồ, map service của arcgis sẽ được gọi và trả về bản đồ tương ứng để hiển thị.
- Dữ liệu trả về sẽ được chuyển đổi sang mảng các đối tượng json hoặc xml
ArcgisServer: Được sử dụng để biên tập bản đồ số, quản lý bản đồ và xuất dữ liệu bản đồ thành các dịch vụ web. Khi nhận được request hiển thị bản đồ từ map service, Arcgis Server lấy dữ liệu ảnh trong các thư mục đã quy định trước và xuất ra dịch vụ bản đồ. Nếu request yêu cầu thao tác xử lý, phân tích bản đồ, Arcgis Server sẽ gọi các hàm để xử lý các thao tác mà người sử dụng yêu cầu và gửi trả về kết quả đã xử lý thông qua dịch vụ bản đồ. Với dịch vụ bản đồ này, người dùng cũng có thể thực hiện các thao tác chọn điểm, chọn vùng, vẽ, chọn các đối tượng, trực quan hóa dữ liệu không gian…
PostgreSQL: Lưu trữ và xử lý các truy vấn liên quan đến dữ liệu không gian và phi không gian được request từ dịch vụ web. Đa số các truy vấn này liên quan đến dữ liệu phi không gian như các chỉ số AQI, PM, AOT, thời gian chụp ảnh, tọa độ của ảnh…web api sử dụng active record để truy vấn dữ liệu không gian qua các hàm truy vấn không gian của Postgis. Dữ liệu thường là tọa độ bốn góc của ảnh, một vùng, tọa độ và số liệu AQI, AOT, PM max, min, avg của từng bản ghi.
3.6. Deployment View
Theo khung nhìn triển khai, hệ thống chia sẻ thông tin cảnh báo ô nhiễm không khí chia làm hai phần chính là Client và Server. Toàn bộ máy chủ đặt trong mạng LAN của Trung tâm Tích hợp liên ngành và giám sát hiện trường – Đại Học Công Nghệ, bao gồm máy chủ cơ sở dữ liệu, máy chủ lưu trữ mã nguồn của hệ thống và máy chủ chạy ArcGIS Server.
Với người dùng là các đối tượng quản trị hệ thống, người dùng thông thường, người quản lý, người lãnh đạo truy cập tới ứng dụng thông qua giao diện Web trên trình duyệt như Firefox, Chrome, Internet Explorer, Safari, … Hình … thể thể hiện chi tiết mối liên hệ giữa các thành phần theo nhóm chức năng của hệ thống, chuyển từ mức logic được thiết kế so với trên mức vật lý khi được triển khai thực tế.
Internet
Arcgis Server
PostgreSQL APOM Server
Hệ thống giám sát và cảnh báo mức độ ô nhiễm không khí được triển khai trên các thành phần sau:
- Máy chủ Cơ sở dữ liệu: cài đặt hệ điều hành Centos 7, cơ sở dữ liệu PostgreSQL 9.4. Đây là máy chủ chạy các dịch vụ của Postgre, máy chủ Web cần kết nối với máy này để truy vấn dữ liệu.
- Máy chủ Web: cài đặt hệ điều hành Centos 7, PHP 5.5, Apache, Framework Yii2, các tập tin flash(.swf) và tích hợp vào trang php được chạy trên máy chủ này.
- Máy chủ ArcGIS Server: cài đặt Windows Server 2012, Map Service.
Yêu cầu về hạ tầng phần cứng
Dựa trên các thử nghiệm về số lượng người dùng, các thao tác thực hiện trong cùng 1 khoảng thời gian dựa trên các thiết bị phần cứng và các thành phần tham gia vào triển khai nền tảng thực thi, hệ thống chia sẻ thông tin cảnh báo ô nhiễm không khí có các yêu cầu về các phần cứng như trong bảng 9: