Tổ chức dữ liệu

Một phần của tài liệu Nghiên cứu và xây dựng hệ thống WebGIS trực quan hóa và phân tích bản đồ chất lượng không khí và khí tượng ở việt nam (Trang 70 - 79)

3.6.1.1. Dữ liệu thuộc tính

Từ dữ liệu khí tượng và chất lượng không khí PM2.5 thu được hàng ngày, hệ thống sẽ phân tích, đọc và lưu vào CSDL thông qua bộ thư viện GDAL, là một thư viện dịch mã nguồn mở và tập hợp các tiện ích dòng lệnh để xử lý các định dạng dữ liệu không

gian raster. Dữ liệu là dạng ảnh tiff, theo dạng ma trận m hàng và n cột (mhàng x ncột), như vậy để lưu vào cơ sở dữ liệu, theo truyền thống sẽ có 2 phương pháp sau:

- Phương pháp 1: lưu toàn bộ giá trị thuộc tính (kể cả giá trị NoData) vào bảng dữ liệu, tức là lưu giá trị thuộc tính toàn bộ các ô của ảnh GeoTiff vào CSDL.

- Phương pháp 2: không lưu toàn bộ giá trị thuộc tính mà chỉ lưu những giá trị khác NoData của ảnh GeoTiff vào CSDL.

Với phương pháp 1, nếu lưu toàn bộ vào CSDL ta sẽ cần m x n bản ghi, điều này gây nên sự lãng phí bộ nhớ do có rất nhiều giá trị NoData.

Với phương pháp 2, đã giảm thiểu đáng kể do loại bỏ giá trị NoData, tuy nhiên, số lượng bản ghi vẫn khá lớn sẽ gây nên vấn đề truy vấn bị chậm theo thời gian do toàn bộ dữ liệu chỉ được lưu vào 1 địa chỉ

Cấu trúc của bảng của 2 phương pháp là giống nhau:

Bảng 3.3 Cấu trúc bảng dữ liệu của Phương pháp 1 & 2

Từ những lý do trên, cần phải có một giải pháp vừa chỉ lưu những dữ liệu có ý nghĩa và vừa không bị chậm khi truy vấn. Ở đây, hệ thống sẽ chia làm 2 loại dữ liệu để xử lý: dữ liệu gió và các loại dữ liệu còn lại.

Dữ liệu gió

Để biểu diễn được các luồng gió động lên trên bản đồ, chúng ta sẽ cần phải đọc đồng thời dữ liệu của hướng và tốc độ gió, sau đó lưu trữ chúng dưới dạng tệp được kết xuất ra các thành phần [u,v], được lưu trên FTP server nhằm mục đích chia sẻ trên môi trường

Internet. Dữ liệu gió sẽ không cần phải trích xuất thành các dịch vụ bản đồ tĩnh vì sẽ không có khả năng biểu diễn được các luồng gió động trên bản đồ.

Cấu trúc tệp sẽ được lưu trữ sao cho vừa đảm bảo toàn vẹn dữ liệu, vừa phải có dung lượng nhỏ. Do đó, chúng ta không thể lưu trữ dữ liệu dạng tuần tự như cách lưu trữ thông thường, ví dụ thành phần u: [-1, -1, -1, -1, -1, 3.4, 3.5, 5.6, -1, -1, 4.5, 6.5, ….] vì dung lượng sẽ lớn, mỗi tệp như vậy sẽ tầm khoảng 10MB mà ta cần một cách thức lưu trữ mới. Để ý thấy số lượng giá trị -1 liên tiếp nhau là rất lớn, nên chúng ta sẽ không cần liệt kê toàn bộ mà sẽ thực hiện đếm số lần xuất hiện liên tiếp của -1 và lưu trữ vào, làm vậy sẽ làm giảm đáng kể được dung lượng (xuống còn khoảng 1MB) mà vẫn đảm bảo tính toàn vẹn của dữ liệu. Ví dụ thành phần u như trên giờ sẽ như sau: [-1, 5, 3.4, 3.5, 5.6, -1, 2, 4.5, 6.5,…]

Các bước tinh giảm được thực hiện tóm tắt như sau:

− Đọc ảnh TIFF lấy 2 thành phần của gió: [hướng, tốc độ], trong đó: hướng trong khoảng [0, 360] độ và tốc độ gió >= 0

− Tính toán 2 thành phần [u, v] từ [hướng, tốc độ]: áp dụng bài toán thuận từ góc phương vị

− Giảm dung lượng tệp json áp dụng cho cả 2 thành phần u,v theo định dạng:

o header: lưu trữ thông tin về loại thành phần, thời gian dữ liệu, thông số chiều dài – rộng của ảnh tiff, resolution, extent của ảnh tiff trên bản đồ, …

o data: [-1, số lần -1 xuất hiện, a1, b1, c1, -một số lần -1 xuất hiện, …]

o meta: lưu trữ ngày của dữ liệu

− Lưu ngược từ dưới lên trên của ảnh TIFF nhằm thuận tiện khi hiển thị trên bản đồ do bản đồ có tọa độ trục Y ngược với ảnh tiff

Hình 3.4. Ví dụ về định dạng tệp json cho dữ liệu gió

Các loại dữ liệu khí tượng còn lại và dữ liệu PM2.5

Với mỗi loại dữ liệu và năm khác nhau, CSDL của hệ thống sẽ được tổ chức sẽ được lưu vào 2 loại bảng dữ liệu:

- Bảng giá trị: lưu trữ toàn bộ giá trị ngoại trừ giá trị NoData vào 1 chuỗi - Bảng chỉ số: lưu trữ các chỉ số tương ứng của những ô có giá trị. Ví dụ: với loại khí tượng là nhiệt độ, năm 2020, chúng ta sẽ có 2 bảng là val_tmp_2020 và index_tmp_2020.

Trong bảng giá trị, mỗi một bản ghi cho chúng ta biết các thông tin về: - Hàng nào của ảnh tiff

- Extent của hàng đó trên bản đồ, bao gồm 4 giá trị: (xMin, yMin, xMax, yMax) - Tập giá trị sẽ được lưu vào trong một chuỗi, phân cách nhau bởi dấu phẩy (,) - Loại dữ liệu khí tượng nào được lưu trữ

Hình 3.5 Thông tin các cột trong bảng giá trị

Trong bảng chỉ số, mỗi một bản ghi cho chúng ta biết các thông tin về: - Hàng nào của ảnh tiff

- Chỉ số các ô mà chứa các giá trị có ý nghĩa, bao gồm 2 cột:

o from_cell_index: bắt đầu từ ô nào

o to_cell_index: kết thúc đến ô nào - Loại dữ liệu khí tượng nào được lưu trữ

Hình 3.6 Thông tin các cột trong bảng chỉ số

Ta có ví dụ về một hàng có 10 cột trong ảnh geotiff như hình dưới:

Giả sử đây là hàng đầu tiên của ảnh – hàng bắt đầu từ 0 Trong bảng đánh chỉ số sẽ lưu trữ thành 3 bản ghi như sau:

0 2 3 Nhiệt độ

0 5 6 Nhiệt độ

0 9 9 Nhiệt độ

Trong bảng dữ liệu sẽ lưu trữ thành 1 bản ghi như sau:

Hàng minX maxX minY maxY Giá trị Loại

0 100.1 111.8 20.25 20.5 12,12.2,12.511.9,12 Nhiệt độ

3.6.1.2. Dữ liệu không gian

Ở bước trên, hệ thống đã lưu được dữ liệu thuộc tính vào CSDL, tuy nhiên để hiển thị được lên bản đồ dữ liệu theo không gian và thời gian, chúng ta cần có dữ liệu không gian để đưa các dịch vụ bản đồ mà hệ thống gọi đến lên đối tượng map trong bộ thư viện ArcGIS API JavaSCript.

File Geodatabase

Đầu tiên chúng ta cần phải có 1 geodatabase nhằm lưu trữ dữ liệu không gian. Có 3 loại geodatabase chúng ta có thể sử dụng: personal geodatabase, file geodatabase, enterprise geodatabase và loại được lựa chọn ở đây là file geodatabase.

Điểm chung của cả 3 loại này đều có thể lưu trữ được các định dạng dữ liệu không gian như: raster dataset, mosaic dataset, feature class, feature dataset, table….

Tuy nhiên, với personal geodatabase do được lưu trữ bộ dữ liệu trong tệp Microsoft Access (.mdb) trên đĩa, kích thước lưu trữ của personal geodatabase được giới hạn hiệu quả chỉ trong khoảng 250 đến 500 MB cho toàn bộ CSDL địa lý nên không đảm bảo được dung lượng lưu trữ của hệ thống. Ngoài ra, personal geodatabase chỉ được hỗ trợ trên hệ điều hành Windows, chỉ có thể được một ứng dụng khách truy cập tại một thời điểm và không thể xuất bản các dịch vụ web từ dữ liệu trong personal geodatabase, do đó chúng ta không thể chọn cách thức lưu trữ từ personal geodatabase.

Với enterprise geodatabase, được lưu trữ trong một trong số các hệ thống quản lý CSDL được hỗ trợ, như DB2, SQL Server, Oracle, PostgreSQL. Điều này cho phép chúng ta tận dụng một số tùy chọn lưu trữ, tính toàn vẹn, bảo mật và bảo trì CSDL có sẵn cho hệ thống quản lý CSDL, đảm bảo việc truy cập và cập nhật dữ liệu thường xuyên. Tuy nhiên, điều này cũng có nghĩa là chúng ta cần có một quản trị viên CSDL có thể định cấu hình và duy trì hệ thống quản lý CSDL đúng cách. Với hệ thống WebGIS chúng ta xây dựng, sẽ không cần tới việc cập nhật và chỉ quan tâm tới vấn đề dung lượng

đủ lớn, truy cập và kết xuất dịch vụ bản đồ nên việc chọn enterprise geodatabase sẽ không hợp lý về mặt tài nguyên lẫn chi phí xây dựng,

Với những điều trên, việc chọn file geodatabase là hợp lý, vì chúng được lưu giữ dưới dạng tệp và có thể có kích thước lớn lên đến 1 TB (có thể tùy chọn cấu hình file geodatabase để lưu trữ các tập dữ liệu lớn hơn nếu phần cứng cho phép), được lưu trữ trên cả nền tảng Microsoft Windows và Linux. Đặc biệt chúng ta hoàn toàn có thể xuất bản các dịch vụ web lên ArcGIS Server từ bản đồ chứa dữ liệu trong file geodatabase.

Từ file geodatabase, chúng ta cần các định dạng phù hợp cho dữ liệu không gian lưu trữ ảnh tiff và xuất thành các dịch vụ bản đồ theo không gian và thời gian. Hệ thống sẽ không tổ chức theo dạng vector do tốc độ xử lý chậm khi chuyển những ảnh GeoTiff có độ phân giải cao sang sạng vector để hiển thị mà sử dụng theo định dạng raster được lưu vào trong file geodatabase. Mặc dù việc hiển thị theo dạng raster sẽ gặp phải vấn đề về mặt hiển thị khi chúng ta phóng lớn bản đồ nhưng với quy mô bài toán thì không nhất thiết phải phóng lớn đến từng nhà, con đường, ngoài ra hiệu năng khi hiển thị sẽ rất nhanh, không có cảm giác bị giật, chờ xử lý như khi biểu diễn dưới dạng vector. Trong đinh dạng raster, raster dataset và mosaic dataset chính là 2 đối tượng phù hợp nhất để lưu trữ.

Raster dataset

Như chúng ta đã biết, raster bao gồm một ma trận các ô (hoặc pixel) được tổ chức thành các hàng và cột để tạo thành một lưới trong đó mỗi ô chứa một giá trị đại diện cho thông tin, chẳng hạn như nhiệt độ, độ ẩm... nên hoàn toàn phù hợp lưu trữ ảnh tiff.

Trong quá trình tạo raster dataset, cần đặc biệt quan tâm đến việc xây dựng các pyramids. Pyramids là tổng quan về giảm độ phân giải của dữ liệu ở các tỷ lệ khác nhau. Pyramids rất hữu ích vì chúng cải thiện tốc độ vẽ cho các tập dữ liệu raster dataset được hiển thị ở độ phân giải thấp hơn độ phân giải đầy đủ của chúng. Mỗi lớp kế tiếp của pyramids được lấy mẫu xuống theo tỷ lệ 2: 1. Dưới đây là ví dụ về hai mức kim tự tháp được tạo cho tập dữ liệu raster:

Hình 3.7. Hiển thị dữ liệu raster với các tỷ lệ khác nhau theo pyramids

Pyramids có thể tăng tốc độ hiển thị dữ liệu raster bằng cách chỉ truy xuất dữ liệu ở độ phân giải được chỉ định cần thiết cho màn hình. Với pyramids, bản sao dữ liệu có độ phân giải thấp hơn sẽ hiển thị nhanh chóng khi vẽ toàn bộ tập dữ liệu. Khi phóng to hoặc thu nhỏ bản đồ, máy chủ CSDL tự động chọn mức pyramids thích hợp nhất dựa trên tỷ lệ hiển thị của người dùng. Nếu không có pyramids, toàn bộ tập dữ liệu phải được đọc từ đĩa và được lấy mẫu lại thành kích thước nhỏ hơn. Pyramids chỉ cần được xây dựng một lần trên mỗi tập dữ liệu raster. Sau đó, chúng được truy cập mỗi khi xem tập dữ liệu raster. Tập dữ liệu raster càng lớn, việc tạo tập hợp các pyramids càng mất nhiều thời gian và bộ nhớ lưu trữ, nhưng về lâu dài, việc hiển thị sẽ nhanh hơn và bạn sẽ tiết kiệm thời gian hơn.

Với bộ dữ liệu mosaic dataset, mặc dù không thể xây dựng các pyramids trên đó, tuy nhiên bạn có thể xây dựng pyramids cho mỗi tập dữ liệu raster trong tập mosaic dataset và sau đó bạn có thể xây dựng tổng quan (overview) cho tập dữ liệu mosaic dataset. Khi xây dựng pyramids cho raster dataset, giá trị của pyramids được xác định như sau:

- Giá trị mặc định là -1, tức là sẽ xậy dựng pyramids ở tất cả các mức zoom, độ phân giải tương ứng

- Nếu thiết lập là 0, tức là sẽ không xây dựng pyramids

- Hiện tại, trong ArcGIS hỗ trợ xây dựng 29 mức, nếu lớn hơn, hệ thống tự động thiết lập là -1 [21]

Mosaic dataset

Mosaic dataset là một tập hợp các tập dữ liệu raster dataset (hình ảnh) được lưu trữ dưới dạng danh mục và được xem hoặc truy cập dưới dạng một hình ảnh ghép đơn lẻ hoặc các hình ảnh riêng lẻ. Các bộ sưu tập này có thể cực kỳ lớn, cả về tổng kích thước tệp và số lượng bộ dữ liệu raster. Các bộ dữ liệu raster trong một mosaic dataset có thể vẫn ở định dạng gốc của chúng trên đĩa hoặc, nếu được yêu cầu, được tải vào CSDL địa lý. Dữ liệu thậm chí có thể chồng chéo hoàn toàn hoặc một phần nhưng được thu thập qua các ngày khác nhau.

Tập mosaic dataset là một tập dữ liệu lý tưởng để lưu trữ dữ liệu thời gian. Bạn có thể truy vấn tập mosaic dataset cho các hình ảnh bạn cần dựa trên thời gian hoặc ngày tháng và sử dụng phương pháp ghép để hiển thị hình ảnh ghép theo thuộc tính thời gian hoặc ngày tháng. Một mosaic dataset bao gồm 3 lớp chính:

- Boundary: lớp polygon hiển thị ranh giới của tập dữ liệu mosaic dataset, là phạm vi của tất cả các tập dữ liệu raster dataset trong tập dữ liệu mosaic dataset. - Footprint: hiển thị các đường viền cho mỗi raster trong tập dữ liệu mosaic dataset. Tại đây, chúng ta có thể mở bảng thuộc tính cho tập dữ liệu mosaic dataset. Bảng này hiển thị danh sách tất cả các raster trong tập dữ liệu mosaic dataset và nhiều thuộc tính của chúng, bao gồm cả các trường bổ sung, mà cụ thể và quan trọng nhất ở đây chính là trường thời gian. Bổ sung trường thời gian cụ thể cho từng raster dataset giúp chúng ta có thể dễ dàng hiển thị được dữ liệu không gian và thời gian trên bản đồ

- Image: kiểm soát việc hiển thị hình ảnh được ghép động trong tập dữ liệu mosaic dataset [21]

Hình 3.8 Các lớp trong 1 mosaic dataset

Hình 3.9. Bảng dữ liệu thuộc tính trong 1 mosaic dataset có bổ sung trường thời gian

3.6.1.3. Thiết kế cơ sở dữ liệu

Với việc tổ chức dữ liệu như trên thì cơ sở dữ liệu của hệ thống bao gồm 2 phần: cơ sở dữ liệu thuộc tính và cơ sở dữ liệu không gian

Cơ sở dữ liệu thuộc tính

Hệ thống sử dụng chất lượng không khí và dữ liệu khí tượng được thu thập hàng ngày kết hợp với dữ liệu shapefile được đưa vào CSDL của các vùng địa lý và tỉnh thành Việt Nam để hỗ trợ truy vấn, tìm kiếm, phân tích và thống kê các giá trị dữ liệu khí tượng và

chất lượng không khí PM2.5. CSDL PostGIS hỗ trợ mạnh mẽ về dữ liệu địa lý và là dạng quan hệ giữa các bảng lưu trữ thông tin về dữ liệu không gian và dữ liệu thuộc tính. Trong CSDL, ngoài các bảng về đơn vị hành chính, hệ thống sẽ có các bảng sau:

Bảng 3.4 Danh mục các bảng dữ liệu

Tên bảng Mô tả

type_category lưu trữ danh mục các loại dữ liệu chất lượng không khí và khí tượng

statistic_administrative_avg lưu trữ giá trị trung bình của dữ liệu theo đơn vị hành chính, phục vụ cho mục đích thống kê

gis_geotiff_pixel_category lưu trữ thông tin về danh mục dữ liệu được thu thập hàng ngày

gis_geotiff_pixel_val_{loại_dữ_liệu}_{năm} Bảng giá trị của dữ liệu: bảng được tự sinh theo thời gian, đơn vị là hàng năm, lưu trữ tất cả các giá trị có ý nghĩa (không phải là dữ liệu NoData trong ảnh tiff) của từng loại dữ liệu theo năm. Ví dụ, với loại dữ liệu PM2.5, năm 2020, ta có bảng giá trị là:

gis_geotiff_pixel_val_pm25_2020

gis_geotiff_pixel_index_{loại_dữ_liệu}_{năm} Bảng chỉ số của dữ liệu: bảng được tự sinh theo thời gian, đơn vị là hàng năm, lưu trữ tất cả các cột chứa giá trị có ý nghĩa (không phải là dữ liệu NoData trong ảnh tiff) của từng loại dữ liệu theo năm. Ví dụ, với loại dữ liệu PM2.5, năm 2020, ta có bảng chỉ số là: gis_geotiff_pixel_index_pm25_2020

Bảng 3.5 Lược đồ quan hệ cơ ở dữ liệu thuộc tính

Cơ sở dữ liệu không gian

Theo mục 3.6.1.2, tổ chức dữ liệu không gian sẽ sử dụng FileGeodatabase, trong FileGeodatabase sẽ bao gồm các raster dataset và mosaicdataset tương ứng với các ảnh GeoTiff được thu thập hàng ngày.

Một phần của tài liệu Nghiên cứu và xây dựng hệ thống WebGIS trực quan hóa và phân tích bản đồ chất lượng không khí và khí tượng ở việt nam (Trang 70 - 79)

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

(116 trang)