Tôi thực sự đã làm việc trên đó và tôi đã sử dụng thư viện java QGIS, GRASS và geotools + opencarto để đạt được mục tiêu của mình. Tôi có thể cung cấp cho bạn các bước chính:
- Từ tài liệu học thuật, có vẻ như MBR nhỏ nhất là phương pháp tốt nhất để tìm hướng chính của tòa nhà (điều quan trọng cần biết để tính năng suất của tấm pin mặt trời). Trước hết bạn sẽ cần tính toán định hướng chính của mỗi tòa nhà. Các opencarto thư viện có một phương pháp cho lệnh này (đó là lý do tôi đến java và GeoTools để làm điều đó)
- Rasterize dữ liệu của bạn để tính độ dốc và khía cạnh (cần thiết để tính toán bức xạ mặt trời). Để có được bóng với độ chính xác, bạn nên hợp nhất MNT với lớp raster của tòa nhà. Chọn bán kính đệm để làm việc. Bước này là hữu ích nếu bạn làm việc ở khu vực núi chẳng hạn vì chúng là vật cản đối với bức xạ mặt trời.
- Tôi tìm thấy hai cách để có được bức xạ mặt trời hàng năm. Người đầu tiên sử dụng mô-đun GRASS r.sun và quá trình này khá dài vì bạn phải tính toán bức xạ mặt trời cho mùa nắng (xem mã dưới đây - lấy từ wiki GRASS tôi đoán) Phương pháp đầu tiên này nhận được giá trị bức xạ mặt trời hàng năm. Thứ hai là ngắn hơn và ít chính xác hơn, sử dụng gdaldem hillshade tại Equinoxes và solstice vào đúng thời điểm. Nguyên tắc này là để loại trừ các phần của các tòa nhà quá bóng và áp dụng một giá trị bức xạ duy nhất cho tất cả các tòa nhà (có trang web khoa học để có được thông tin này).
Tất nhiên có một số bước nữa để có được giá trị tiềm năng mặt trời, nhưng đây là phần không gian phức tạp hơn. Nếu tôi có thể cho bạn một lời khuyên khác, trước khi bắt đầu bất kỳ dự án nào, chỉ cần đọc một chút về công nghệ pin mặt trời. Bạn sẽ thấy rằng nhiều giả thuyết có thể được thay đổi.
Tôi đã có thể nói rằng phương thức này có một số giới hạn:
- không tính đến bóng thực vật
- không xem xét độ dốc mái
- xây dựng định hướng chính không hoàn hảo
Nhưng tôi nghĩ, ở quy mô lãnh thổ / khu vực, phương pháp này không tệ, đặc biệt là đối với khu vực nông thôn.
Phương pháp này có thể hoàn hảo, (ví dụ tôi muốn có độ dốc mái để có độ chính xác cao hơn về năng suất của bảng điều khiển năng lượng mặt trời, nhưng dữ liệu không gian tôi không cung cấp điều đó) vì vậy nếu bạn có ý tưởng nào để làm như vậy, tôi sẽ hân hạnh đọc về nó
Hy vọng nó giúp!
Kịch bản mặt trời cỏ sử dụng mô-đun r.sun :
#!/bin/sh
echo "Enter elevation map :"
read elev
g.copy rast=$elev,SOLelev
echo "Enter slope map:"
read sl
g.copy rast=$sl,SOLslope
echo "Enter aspect map :"
read asp
g.copy rast=$asp,SOLaspect
i=75
lastday=288
# we fit to the raster input region
g.region rast=SOLelev
#generate an empty map for global radiation:
r.mapcalc "global.rad=0"
while [ $i -le $lastday ]
do
# generate map names convenient for xganim and r.out.mpeg:
DAY=`echo $i | awk '{printf "%03i", $1}'`
echo "Computing radiation for day $DAY..."
r.sun -s elevin=SOLelev aspin=SOLaspect slopein=SOLslope\
day="$i"\
beam_rad=b_rad.$DAY diff_rad=d_rad.$DAY\
refl_rad=r_rad.$DAY
#add to (cell-wise) global energy:
r.mapcalc "global.rad=global.rad + b_rad.$DAY +\
d_rad.$DAY + r_rad.$DAY"
r.timestamp b_rad.$DAY date="$i days"
r.colors b_rad.$DAY col=gyr
r.timestamp d_rad.$DAY date="$i days"
r.colors d_rad.$DAY col=gyr
r.timestamp r_rad.$DAY date="$i days"
r.colors r_rad.$DAY col=gyr
i=`expr $i + 1`
done
#cleanup:
g.remove rast=SOLelev,SOLaspect,SOLslope
g.mremove -f rast="b_rad*"
g.mremove -f rast="d_rad*"
g.mremove -f rast="r_rad*"
echo "Finished."