Phương pháp che hoặc phủ một bản đồ raster để phản ánh thời gian trong ngày và ánh sáng xung quanh


14
  • Tôi có một raster ban ngày của khu vực nghiên cứu của tôi.
  • Tôi có hơn 20 quầy trong khu vực nghiên cứu đếm "công cụ" với dấu thời gian.
  • Sử dụng PyEphem tôi đã xác định loại ánh sáng xung quanh cho mỗi điểm dữ liệu được thu thập.

Những gì tôi muốn làm:

  • Thêm một lớp phủ màu xám / bán trong suốt để phản chiếu ánh sáng xung quanh (Dusk, Sunrise, ngày, hoàng hôn và tối).

  • Mục tiêu cuối cùng: tạo ra một hình ảnh dựa trên thời gian của bộ sưu tập dữ liệu làm nổi bật thời gian trong ngày. Hoặc có thể tạo ảnh chụp nhanh tại một thời điểm nhất định với lớp phủ bóng mờ thích hợp.

  • Hãy nghĩ về điều này như hình ảnh này:

quả cầu ngày / đêm nguồn


2
Các câu trả lời bổ sung (với mã Mathicala đang hoạt động ) xuất hiện tại mathicala.stackexchange.com/questions/3326/ .
whuber

Câu trả lời:


9

Tóm lược

Với vị trí của mặt trời, bạn có thể dễ dàng tạo ra một lưới cường độ ánh sáng bề mặt (bỏ qua các hiệu ứng khí quyển và địa hình) trong các tọa độ lat-lon. Tái định hình lưới đó theo ý muốn và phủ nó trên bản đồ.

Chi tiết

Các công thức là những tiêu chuẩn cho tọa độ hình cầu: vectơ đơn vị tương ứng với tọa độ hình cầu (lon, lat) là

(cos(lon)cos(lat), sin(lon)cos(lat), sin(lat)).

Cường độ phụ thuộc vào cosin giữa đơn vị hướng ra ngoài bình thường ("lên") và hướng về phía mặt trời. Cosin này chỉ là sản phẩm chấm của hai vectơ đơn vị đó. Nghĩa là, hãy (x, y, z) là vectơ đơn vị hướng về mặt trời (theo tọa độ địa tâm), chuyển đổi trắc địa (lat, lon) của điểm trung tâm của mỗi ô lưới thành một vectơ đơn vị (xi, eta, zeta) và tính toán

(x,y,z) . (xi, eta, zeta) = x*xi + y*eta + z*zeta.

Bất kỳ kết quả nào nhỏ hơn 0 tương ứng với một mặt trời vô hình, vì vậy hãy đặt các giá trị này thành 0.

Ghi chú thực hiện

Các tính toán này rất đơn giản để thực hiện với đại số bản đồ, bắt đầu bằng một lưới các giá trị (lat, lon) (đó là cách tôi đã thực hiện) hoặc với một cặp lưới, một cho vĩ độ và một cho kinh độ (đó là cách bạn sẽ có để làm điều đó với phần mềm ESRI chẳng hạn).

(Để tạo lưới vĩ độ hoặc kinh độ, hãy tạo lưới tọa độ y hoặc tọa độ x, tương ứng, theo tọa độ địa lý, sau đó chiếu nó.) Từ thông tin ban đầu này, tính toán một lần và cho tất cả, ba lưới [xi], [eta ] và [zeta] (hoặc một lưới có giá trị véc tơ duy nhất [xi, eta, zeta]) để biểu thị các hướng đi lên tại các ô lưới. Đối với bất kỳ vị trí mặt trời nào, phép tính trở thành tổ hợp tuyến tính đơn giản của [xi], [eta] và [zeta] được đưa ra ở trên; Mặt trời xác định các hệ số x, y và z (tất nhiên chỉ là số).

Thí dụ

Đây là bản đồ thế giới trong phép chiếu mảng Carree của lưới cường độ như vậy (216 x 432 ô).

Cường độ

Kinh tuyến gốc nằm ở trung tâm và phía bắc là trên đỉnh, như thường lệ. Để tính toán này, tôi đặt vectơ mặt trời tỷ lệ với (0,6, -0,8, 0,5), để xấp xỉ một ngày mùa hè vào buổi trưa trên đại dương giữa Đại Tây Dương. (Nhìn lại, giá trị z là 0,4 sẽ thực tế hơn; mặt trời không bao giờ ở xa về phía bắc này.)

Lớp phủ alpha (cũng làm cho các vùng sáng hơn trong suốt hơn một chút) trên bản đồ được tô màu Aster tạo ra hình ảnh này.

Bản đồ thế giới

Khi thời gian thay đổi, vectơ của mặt trời (x, y, z) được tính toán lại, đòi hỏi phải tính toán lại lưới cường độ. Đây là một tính toán nhanh. Bạn cũng không cần độ phân giải cao: Tôi chỉ sử dụng một phần mười độ phân giải của lưới ban đầu (2160 x 4320 ô) cho hình minh họa này. Nội suy được sử dụng để hiển thị lưới cường độ thô hơn chỉ hoạt động tốt để lấp đầy các khoảng trống. Điều này sẽ cho phép bạn sửa đổi màn hình gần như ngay lập tức nếu bạn muốn, tạo ra một hình ảnh động mượt mà.


2
Rất, rất hay
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.