Công cụ xây dựng hệ thống trực quan hoá dữ liệu trạng thái giao thông

Một phần của tài liệu Mô hình và trực quan hóa dữ liệu trạng thái giao thông trên nền web (Trang 54 - 61)

thông[2,6,9,11,12,13,14,15,16,17]

Hệ thống thử nghiệm dự kiến xây dựng trên cơ sở mã nguồn mở, dưới đây phân tích cụ thể các công cụ có khả năng đáp ứng các mô hình và kỹ thuật đã trình bày ở mục 2.2.

2.3.1. PostgreSQL/PostGIS

Hệ thống dự kiến triển khai cài đặt DB Server sử dụng hệ quản trị cơ sở dữ liệu PostgreSQL.

PostgreSQL là hệ thống quản trị cơ sở dữ liệu quan hệ đối tượng dựa trên POSTGRES bản 4.2, được phát triển tại trường đại học California tại phòng nghiên cứu máy tính Berkeley. Nó là một chương trình mã nguồn mở xây dựng trên mã nguồn ban đầu của đại học Berkeley. Nó hỗ trợ một phần rất lớn cho SQL chuẩn và cung cấp nhiều tính năng hiện đại như :

- Câu truy vấn phức hợp (complex query) - Khóa ngoại (foreign key)

- Thủ tục sự kiện (trigger) - Các khung nhìn (view)

- Tính toàn vẹn của các giao dịch (integrity transactions)

- Việc kiểm tra truy cập đồng thời đa phiên bản (multiversion concurrency control)

Ngoài ra, PostgreSQL có thể được mở rộng bởi nhiều người dùng bằng nhiều cách. Ví dụ, người dùng có thể thêm kiểu dữ liệu, hàm, toán tử, hàm tập hợp, phương thức đánh chỉ mục và ngôn ngữ thủ tục.

So sánh giữa 3 hệ quản trị cơ sở dữ liệu MySQL, Oracle và PostgreSQL thì thấy rằng, hệ quản trị cơ sở dữ liệu PostgreSQL rất mạnh, nó hoạt động được trên hầu hết các hệ điều hành, hỗ trợ rất nhiều tính năng cơ bản, và hỗ trợ rất nhiều kiểu đánh chỉ mục.

Ngày nay, PostgreSQL là một trong những hệ quản trị cơ sở lớn nhất hiện có. Với những tính năng được chỉ ra dưới đây, chúng ta có cái nhìn tổng quan về PostgreSQL :

- Trong quan hệ đối tượng PostgreSQL, mọi bảng định nghĩa như một lớp. PostgreSQL thực thi kế thừa giữa các bảng, hàm và toán tử là đa hình.

- Cú pháp chuẩn của PostgreSQL tuân thủ theo chuẩn của SQL92 và nhiều tính năng của SQL99.

- PostgreSQL cung cấp nhiều kiểu dữ liệu. Bên cạnh kiểu dữ liệu numeric, string thông thường, nó còn cung cấp kiểu dữ liệu geometry, boolean và kiểu dữ liệu được thiết kết đặc biệt để dùng cho các địa chỉ mạng.

- Khả năng mở rộng là một trong những tính năng của PostgreSQL. Nếu với những gì mà PostgreSQL cung cấp mà ta vẫn chưa hài lòng, ta có thể thêm vào PostgreSQL. Ví dụ, ta có thể thêm vào kiểu dữ liệu mới, hàm và toán tử mới và các thủ tục mới.

Ngoài nhu cầu lưu trữ các kiểu dữ liệu thông thường như kiểu chuỗi, kiểu số, kiểu ngày tháng, người sử dụng còn có thêm nhu cầu lưu trữ các kiểu dữ liệu không gian để lưu trữ các đối tượng như Point, Line, Polygon. Do đó, PostgreSQL còn hỗ trợ kiểu dữ liệu hình học (geometry) như Point, Line, Polygon…Và PostGIS chính là công cụ được bổ sung cho PostgreSQL để hỗ trợ hiện thị đối tượng địa lý.

PostGIS là một mã nguồn mở, mở rộng không gian cho PostgreSQL. CSDL không gian trong PostGIS được sử dụng cho hiệu suất sử dụng cao đa người dùng truy cần đến tập dữ liệu có tính liền mạch. PostGIS đã được chứng nhận là “Simple Features for SQL”, tuân thủ theo Open Geospatial Consortium. PostGIS được phát hành lần đầu tiên vào năm 2001, và hiện đang được sử dụng trên khắp thế giới như một máy chủ hoạt động với hiệu suất cao cho các đối tượng không gian.

Đặc điểm của PostGIS:

Do PostGIS được sử dụng như một CSDL không gian, nên nó bao gồm tất cả các đặc điểm của CSDL không gian. Ngoài ra, nó còn có những đặc trưng như:

- Các kiểu dữ hình học như Point, Linestring, Polygon, Multipoint, multilinestring, Multipolygons và Geometrycollection.

- Các toán tử không gian cho phép xác định các phép đo không gian địa lý như tính diện tích, tính khoảng cách, tính độ dài, và tính chu vi. PostGIS hỗ trợ các hàm như : ST_Area(), ST_Length(), ST_Perimeter(), ST_Distance()…các hàm này thường thực hiện chức năng kiểu phép đo.

- Các toán tử không gian cho phép xác định không gian địa lý. Các thao tác như phép hợp, so sánh sự khác nhau giữa các đối tượng hình học. Các toán tử được PostGIS hỗ trợ để làm việc này có thể là : ST_Difference() : trả về phần khác nhau giữa 2 đối tượng hình học hay hàm ST_Buffer()…

- PostGIS cung cấp việc đánh chỉ mục không gian tốc độ cao sử dụng GisT hoặc R-tree. Công cụ đánh chỉ mục không gian mà PostGIS hỗ trợ làm tăng tốc cho truy vấn không gian đặc biệt là trên bảng dữ liệu lớn.

- Chỉ mục hỗ trợ chọn lọc, cung cấp việc thực hiện truy vấn bản đồ pha trộn truy vấn không gian hoặc truy vấn không có không gian.

2.3.2. Apache

Apache hay là chương trình máy chủ HTTP là một chương trình dành cho máy chủ đối thoại qua giao thức HTTP. Apache chạy trên các hệ điều hành tương tự như Unix, Microsoft Windows, Novell Netware và các hệ điều hành khác. Apache đóng một vai trò quan trọng trong quá trình phát triển của mạng web thế giới (World Wide Web).

Apache được phát triển và duy trì bởi một cộng đồng mã nguồn mở dưới sự bảo trợ của Apache Software Foundation. Apache được phát hành với giấy phép Apache License và là một phần mềm tự do và miễn phí.

2.3.3. Map Server

Mapserver là một môi trường mã nguồn mở cho phép việc xây dựng những ứng dụng xử lý dữ liệu không gian trên internet. Nó có thể được chạy như 1 chương trình CGI hoặc thông qua Mapscript (hổ trợ nhiều ngôn ngữ lập trình như Perl, Python …).

Đơn giản nhất có thể hiểu MapServer như là một chương trình CGI được đặt (inactive) trong webserver (MapServer đóng vai trò là ứng dụng GIS được đặt trên web server). Khi mà có 1 request gửi đến MapServer, nó sử dụng thông tin được truyền ở request URL và trong mapfile để tạo hình ảnh của bản đồ được yêu cầu. Request cũng có thể trả về hình ảnh cho ghi chú, thanh co dãn, bản đồ tham chiếu và giá trị được truyền như là những biến CGI.

Ngoài việc giúp định vị dữ liệu không gian, tạo bản đồ địa hình, MapServer có thể định hướng người dùng đến nội dung.

MapServer hỗ trợ các chuẩn của tổ chức OGC ( tổ chức phát triển các chuẩn WebGIS): WMS, WFS, WCS, WMC,SLD, GML v.v.. Mapserver kết nối với PostgresSQL và mở rộng PostGIS (hỗ trợ dữ liệu GIS), MySQL và mở rộng MyGIS, …

Để giao tiếp với các thành phần khác trên môi trường web, MapServer sử dụng chuẩn giao tiếp CGI (Common Gateway Interface).

MapServer không hẳn là một ứng dụng WebGIS hoàn chỉnh tuy nhiên MapServer cung cấp những chức năng cốt lõi đủ mạnh để đáp ứng cho các ứng dụng web khác nhau. Ngoài việc tương tác với các dữ liệu GIS, MapServer còn cho phép người dùng điều khiển và tùy biến việc tạo ra ảnh bản đồ, có thể dưới dạng trang web, file ảnh,report…Nói cách khác MapServer đóng vai trò như “map engine” được cung cấp nội dung để tạo ảnh bản đồ khi cần đến.

Đặc tính của MapServer:

Sinh hình ảnh bản đồ phức tạp: - Hình ảnh phụ thuộc vào tỉ lệ. - Tên các hình ảnh.

- Xuất định dạng có thể sửa đổi hoặc theo khuôn mẫu. - Phong chữ kiểu thực (TrueType).

- Tự động sinh các thành phần của bản đồ (tỉ lệ, bản đồ tham khảo, chú thích).

Hệ thống MapServer bao gồm cả MapScript, cho phép các ngôn ngữ kịch bản khác như PHP, Perl, Python và Java có thể truy xuất các hàm API của MapServer. MapScript cung cấp môi trường thuận lợi cho việc phát triển các ứng dụng tích hợp các dữ liệu phân tán. Ta có thể lấy dữ liệu không gian thông qua các các ngôn ngữ kịch bản kể trên và dựa vào MapScript ta có thể tạo được một ảnh bản đồ.

Hỗ trợ nhiều dạng raster và vector:

- TIFF/ Geo TIFF, EPPL7 và nhiều định dạng khác thông qua GDAL. - ESRI shapefiles, PostGis, ESRI ArcSDE, Oracle Spatial, My SQL… thông qua ORG.

- Theo đặc tả web Open GeoSpatial Consortium (OGC): WMS (client/server), WFS (client/server), WMC, WCS, Filter Encoding, SLD, GML, SOS.

- Hỗ trợ phép chiếu bản đồ: hơn 1000 hệ chiếu thông qua thư viện proj.4

2.3.4. Công cụ lập trình

2.3.4.1. JavaScript

JavaScript, theo phiên bản hiện hành, là một ngôn ngữ lập trình kịch bản dựa trên đối tượng được phát triển từ các ý niệm nguyên mẫu. Ngôn ngữ này được dùng rộng rãi cho các trang web, nhưng cũng được dùng để tạo khả năng viết script sử dụng các đối tượng nằm sẵn trong các ứng dụng. Nó vốn được phát triển bởi Brendan Eich tại Hãng truyền thông Netscape với cái tên đầu tiên Mocha, rồi sau đó đổi tên thành LiveScript, và cuối cùng thành JavaScript.

*Ưu điểm của Javascript:

- Hoàn toàn miễn phí và dễ học.

- JavaScript được thiết kế độc lập với hệ điều hành. Nó có thể chạy trên bất kỳ hệ điều hành nào có trình duyệt hỗ trợ JavaScript.

- Dễ dàng tương tác, điều khiển và tránh bớt việc xử lý từ phía server - Nắm vững kiến thức JavaScript bây giờ rất hữu dụng cho các bạn sau này để có thê tiếp thu những công nghệ mới mà nó được gói gọn vào những ngôn ngữ như : Ajax , Atlas ….

*Nhược điểm của Javascript:

- Javascript không có trình biên dịch riêng mà được diễn dịch và chạy bởi trình duyệt hỗ trợ nó. Chính vì thế, nếu trình duyệt không hỗ trợ, hoặc không bật JavaScript, nó sẽ không chạy được.

- JavaScript có thể làm ứng dụng web của bạn trở nên nặng nề hơn. - Bảo mật kém. Không có khả năng giấu mã.

2.3.4.2. Leaflet

Leaflet là một thư viện Javascript mã nguồn mở cho việc tương tác với bản đồ. Nó được phát triển bởi Vladimir Agafonkin. Leaflet thì được thiết kế đơn giản, nhanh chóng và dễ sử dụng. Nó sử dụng được trên môi trường Desktop,Mobile vì nó sử dụng HTML5, CSS3.

2.3.4.3. D3

D3 viết tắt của Data-Driven Documents là một thư viện JavaScript dùng để tạo trực quan hóa dự liệu tương tác. Ý tưởng hỉnh thành D3 bắt đầu từ năm 2009 là Protovis, được tạo bởi Mike Bostock, Vadim Ogievetsky, và Jeff Heer thuộc nhóm Stamford Visualization Group.

D3 là thư viện Javascript được ứng dụng vào việc thao tác với các tài liệu (documents) dựa trên 1 tập hợp các dữ liệu. D3 thể hiện dữ liệu lên web bằng cách sinh ra các code HTML, SVG và được format bằng CSS. Việc D3 chú trọng vào các chuẩn website giúp vận dụng được đầy đủ các chức năng của các trình duyệt mới mà ko cần phải dùng thêm 1 framework nào khác nữa, đồng thời kết hợp được các thành phần hiển thị và phương thức tiếp cận hướng dữ liệu với thao tác trên DOM.

D3 không phải là 1 thư viện đồ họa, cũng ko phải là thư viện về xử lý dữ liệu. D3 không giống như những biểu đồ, hay components được dựng sẵn bị giới hạn bằng các thông số cấu hình; người phát triển sẽ tự do viết từ những API do D3 cung cấp. D3 không phải là 1 framework toàn vẹn cung cấp mọi chức năng, hàm thuận tiện. Thay vào đó, D3 giải quyết sự then chốt của vấn đề: thao tác có hiệu quả với các tài liệu (documents) dựa trên dữ liệu. Thư viện D3 khi được nén sẽ có dung lượng nhẹ, được load rất nhanh, hỗ trợ xử lý tập hợp dữ liệu lớn và những trạng thái động như tương tác hay chuyển động.

- D3 khá giống với jQuery ở nhiều quy tắc như: selector, method-chaining pardigm, …

- D3 thể hiện các tài liệu (documents) bằng HTML, SVG vì thế có thể format dễ dàng với CSS, cũng như là debug bằng Firebug hay các tool về DOM mặc định của trình duyệt (the browser’s built-in element inspector).

- D3 hỗ trợ sẵn nhiều component hay plugin cho những yêu cầu thông thường về thể hiện dữ liệu.

Nhược điểm của D3:

- Thao tác với DOM có thể rất chậm đối với 1 lượng lớn dữ liệu đầu vào. - SVG cũng có những giới hạn về thực thi đối với dữ liệu lớn.

Một project ứng dụng D3 cần lưu ý 4 phần chính sau:

- Selection: khá giống với selecting DOM của jQuery.

- Enter: sự kiện xảy ra khi các điểm dữ liệu mới được thêm vào hình đang vẽ.

- Transition: các điểm dữ liệu chuyển động như nào khi diễn ra sự thay đổi về giá trị.

- Exit: sự kiện xảy ra khi xóa bỏ các điểm dữ liệu hiện tại

SVG

SVG là viết tắt của Scalable Vector Graphics – Đồ họa vecto mở rộng. SVG là cách chuẩn để tạo một đồ họa vector ở trình duyệt, đó chính là cách D3 sử dụng để tạo trực quan hóa dữ liệu. Chức năng chính có liên quan trong SVG là khả năng vẽ hình khối và chức tích hơn vào DOM theo kịch bản thông qua JavaScript.

(DOM viết tắt của Document Object Model – Mô hình đối tượng tài liệu và là một giao diện lập trình ứng (API) cho phép JavaScript tương tác với các phần tử HTML trên trang web)

2.3.4.4. Heatmap

Giới thiệu về Heatmap:

Heatmap là công cụ trực quan hóa cho dữ liệu 3 chiều, trong đó 2 chiểu thể hiện tọa độ Đề-các (x,y) và chiều thứ 3 thể hiện cường độ của điểm dữ liệu

so với giá trị lớn nhất trong tập dữ liệu. Cường độ của điểm được thể hiện bằng màu sắc, thường là màu đỏ cho giá trị lớn nhất và màu xanh cho giá trị nhỏ nhất. Heatmap.js là thư viện JavaScript cho phép tạo các trang web với các phần tử html5 canvas như Firefox, Chrome, Opere, IE9…dựa trên bộ dữ liệu được cung cấp. Heatmap hoàn toàn tùy biến, do đó ta có thể gradient màu, độ trong suốt, bán kính điểm dữ liệu….

Heatmap đưa ra một kho chứa để pha màu các điểm liên hệ với dữ liệu, nghĩa là khi đưa vào một điểm thì nó sẽ là điểm nóng nhất (màu đỏ), sau khi thêm điểm khác có giá trị cao hơn thì sẽ tự động tính toán lại.

Khi thêm heatmap.js vào trang web, nó sẽ tạo ra một đối tượng tổng thể gọi là heatmapFactory cho phép ta có thể truy cập là h337. Đối tượng tổng thể này có chức năng tạo đối số config (Object) và trả về heatmap instance. Cấu hình đối tượng cho phép chỉ rõ các tính chất có thể tùy biến heatmap instance:

 radius (optional) Number: Bán kính của điểm đơn tính theo pixel.

Mặc định là 40.

 element (required) String|HTMLelement: Tùy biến cả id của phần

tử và chính phần tử đó trong heatmap.

 visible (optional) Boolean: Cho phép nhìn thấy hay không. Mặc

định là có.

 gradient (optional) Object: Thay đổi gradient của heatmap (từ 0 đến

1). Mặc định theo chuẩn gradient của heatmap.

Chƣơng 3. Xây dựng và thử nghiệm ứng dụng trực quan hóa dữ liệu trạng thái giao thông Hà Nội

Trong phần Mở đầu đã trình bày nhu cầu xây dựng hệ thống trực quan hóa dữ liệu trạng thái giao thông của Hà Nội. Dựa trên những lý thuyết đã tìm hiểu về trực quan hóa tại chương 1 và các mô hình, giải pháp kỹ thuật trình bày tại chương 2, chương này sẽ giới thiệu chương trình thử nghiệm thể hiện trực quan hóa dữ liệu trạng thái giao thông tại thành phố Hà Nội.

Một phần của tài liệu Mô hình và trực quan hóa dữ liệu trạng thái giao thông trên nền web (Trang 54 - 61)

Tải bản đầy đủ (PDF)

(77 trang)