Mục đích chính là từ một tọa độ (longtitude, latitude), ta cần hiển thị giá trị dữ liệu khí tượng lên trên bản đồ.
3.7.1.1. Với dữ liệu gió
Phương pháp xử lý ở đây là: sử dụng phép nội suy song tuyến tại từng vị trí tọa độ trên bản đồ để xác định được tốc độ gió và hướng gió. Cụ thể các bước như sau:
Bước 1, ta cần sử dụng phương pháp nội suy song tuyến đã được mô tả trong phần 2.3.2, tại vị trí có tọa độ (longtitude, latitude) để thu được tốc độ của gió từ một vector gồm 3 thành phần [u, v, m] mà phương pháp nội suy trả về.
Bước 2, để xác định hướng gió, ta cần thực hiện các bước sau:
− Xác định góc ϕ từ u, v được mô tả ở mục 1.2.2.2, ta thu được công thức sau: aSinϕ = Math.asin(-1 * u / velocity),
gocϕ = 180 * aSinϕ / PI
− Ở đây, bản thân gocϕ đã là 1 góc khí tượng. Tuy nhiên, do đặc tính đối xứng của trục Oy, nên giá trị gocϕ chỉ cho ta xác định được ở góc phần tư thứ I và IV của hàm lượng giác. Ngoài ra, hướng gió lại tính từ hướng thổi đến chứ không phải tình từ gộc tóc độ O(0 ,0) nên để biết chính xác được gocϕ là bao nhiêu, ta cần tham chiếu đến 2 thành phần nữa của vector gió là [u, v]. Do đó, ta có:
o Nếu (u > 0 && v > 0) gocϕ = 180 + Math.abs(gocϕ)
o Nếu (u < 0 && v > 0) gocϕ = 180 - Math.abs(gocϕ)
o Nếu (u < 0 && v < 0) gocϕ = Math.abs(gocϕ)
o Nếu (u > 0 && v < 0) gocϕ = 360 - Math.abs(gocϕ)
3.7.1.2. Với các loại dữ liệu khí tượng còn lại và dữ liệu PM2.5
Phương pháp xử lý ở đây là: sử dụng phương pháp chuyển đổi tọa độ bản đồ sang tọa độ ảnh được mô tả phần mục 2.4.1. Từ tọa độ ảnh, sử dụng bảng giá trị và bảng chỉ số trong CSDL để xác định chính xác giá trị của dữ liệu. Cụ thể như sau:
Bước 1, xác định được từ tọa độ (longtitude, latitude), sẽ tương ứng với tọa độ (x, y) nào trên ảnh số.
Bước 2, từ tọa độ (x,y), chúng ta đối chiếu vào bảng chỉ số của loại dữ tương ứng: - Từ y, ta biết được thuộc vào hàng nào trong dữ liệu ảnh tiff.
- Kết hơp với x, ta xác định được ô nào – gọi là cellIndex cần lấy dữ liệu. Có một điểm lưu ý ở đây là chúng ta cần phải xác định chính xác giá trị cellIndex từ bảng chỉ mục. Giả sử có các bảng dữ liệu như sau:
Trong bảng đánh chỉ số:
Hàng Cột từ Cột đến Loại
y x11 x12 Nhiệt độ
y x21 x22 Nhiệt độ
y xi1 xi2 Nhiệt độ
y xn1 xn2 Nhiệt độ
Trong bảng dữ liệu sẽ lưu trữ như sau:
y X1 X2 Y1 Y2 x1,x2,x3…..,xk Nhiệt độ Do đó, với giá trị cellIndex cho trước, lúc đó để lấy được chỉ số chính xác, ta cần:
Xác định hàng yi: xi1 <= celIndex <= xi2 (1)
Lấy số lượng các phần tử các hàng trước đó: y0, y1, y2, …, yi-1 – gọi là a (2) Từ (1) và (2), xác định được chính xác chỉ số cần tìm là: b = a + (cellIndex – xi1) (3) Từ b và tập giá trị { x1,x2,x3…..,xk} của hàng y sẽ lấy được chính xác giá trị cần tìm Ta có ví dụ sau: cần tìm giá trị tại ô có tọa độ tương ứng (6,0) cho loại dữ liệu khí tượng là nhiệt độ, ta có:
Với CSDL, ta có lưu trữ trong bảng đánh chỉ số:
Hàng Cột từ Cột đến Loại
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.5,11.9,12 Nhiệt độ Bước 1: xác định cellIndex = 6 thì tương ứng với chỉ số là: (3-2+1) + (6 – 5) = 3
Hàng Cột từ Cột đến Số lượng
0 2 3 2
0 5 6 (cellIndex)
Bước 2: Sau khi xác định được chỉ số là 3, chúng ta sẽ lấy được dữ liệu chính xác từ tập giá trị là: [12,12.2,12.5,11.9,12][3] = 11.9 (do chỉ số đánh số từ 0)