Na verdade, eu trabalhei nisso e usei a biblioteca java QGIS, GRASS e geotools + opencarto para alcançar meu objetivo. Eu posso lhe dar os principais passos:
- Na literatura acadêmica, parece que o menor MBR é o melhor método para encontrar a orientação principal do edifício (importante saber para calcular o rendimento do painel solar). Antes de tudo, você precisará calcular a orientação principal de cada edifício. A biblioteca opencarto tem um método para isso (é por isso que vim para java e geotools para fazer isso)
- Rasterize seus dados para calcular a inclinação e o aspecto (necessário para calcular a radiação solar). Para obter sombras com precisão, você deve mesclar o MNT à sua camada raster de construção. Escolha o raio do buffer para trabalhar. Este passo é útil se você trabalha na área montanhosa, por exemplo, pois são obstáculos à radiação solar.
- Encontrei duas maneiras de obter radiação solar anual. O primeiro usa o módulo r.sun GRASS e o processo é bastante longo, já que você precisa calcular a radiação solar para a estação ensolarada (veja o código abaixo - entendi no wiki do GRASS, eu acho). Este primeiro método obtém o valor anual da radiação solar. O segundo é mais curto e menos preciso, usando a colina gdaldem em equinócios e solstícios no momento certo. Este princípio é excluir partes de edifícios muito obscuros e aplicar um valor de radiação exclusivo para todos os edifícios (existe um site científico para obter essas informações).
É claro que existem mais algumas etapas para obter um valor potencial solar, mas essa é a parte espacial mais complicada. Se eu puder lhe dar outro conselho, antes de iniciar qualquer projeto, basta ler um pouco sobre a tecnologia de painéis solares. Você verá que muitas hipóteses podem ser alteradas.
Eu já posso dizer que o método tem alguns limites:
- sem levar em conta a sombra da vegetação
- não considere a inclinação do telhado
- a construção da orientação principal não é perfeita
Mas acho que, em escala territorial / regional, o método não é ruim, especialmente para as áreas rurais.
O método provavelmente é perfeito (eu gostaria de ter inclinações no telhado, por exemplo, para obter uma melhor precisão do rendimento do painel solar, mas dados espaciais que eu não forneci) - portanto, se você tiver alguma idéia, eu estarei prazer em ler sobre isso.
Espero que ajude!
Script sun sun usando o módulo 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."