/* Creacion de modelos de insolación potencial /* /* Autor: Angel M. Felicísimo /* Esta rutina puede usarse libremente; si se utiliza en algún trabajo /* sería elegante citar su procedencia &args .mde .latitud .declinacion .intervalo &if %:program% <> GRID &then &return &warning Este programa debe ejecutarse en GRID &if [null %.mde%] &then &return Uso: &r insolacion MDE LATITUD DECLINACION INTERVALO &if not [exists %.mde% -grid] &then &return El MDE no existe: &r insolacion MDE LATITUD DECLINACION INTERVALO &if [null %.intervalo%] &then &do &return Trabajando con intervalo = 30 minutos &s .intervalo = 30 &end &s .pi = 3.1416 /* inicia variables &s .dec = [angrad %.declinacion%] &s .lat = [angrad %.latitud%] &s .int = [angrad [calc %.intervalo% * 0.25]] &s .np = 0 &s .anghor &s .acimut &s .elevac &s .itpos = [round [calc %.pi% / %.int%]] &s .itneg = [calc %.itpos% * -1] &s .sind = [sin %.dec%] &s .cosd = [cos %.dec%] &s .sinl = [sin %.lat%] &s .cosl = [cos %.lat%] /* Proceso de cálculo de los modelos de sombra &format 2 &messages &off &do i = %.itneg% &to %.itpos% &s .np = [calc %.np% + 1] &s .anghor = [calc %i% * %.int%] &s .sinh = [sin %.anghor%] &s .cosh = [cos %.anghor%] &s .elevac = [asin [calc [calc %.sind% * %.sinl%] + [calc %.cosd% * %.cosl% * %.cosh%]]] &s .acimut = [acos [calc [calc [calc %.sind% * %.cosl%] - [calc %.cosd% * %.sinl% * %.cosh%]] / [cos %.elevac%]]] &if %i% > 0 &then &s .acimut = [calc %.pi% + [calc %.pi% - %.acimut%]] &if %.elevac% ge 0 &then &do &s .ac = [radang %.acimut%] &s .el = [radang %.elevac%] &type Calculando posición %.np% ... mds%.np% = hillshade (%.mde% , %.ac% , %.el% , shadow) &end &end /* SUMA LOS MDS* &type \ Sumando los modelos de sombra ... \ &s .lista = [listfile mds* -grid] &s .num = [token %.lista% -count] suma = mean (%.lista%) * %.num% mdi%.declinacion% = focalmedian(int(suma)) kill suma all /* Borra los modelos de sombra &do i = 1 &to %.num% &s grd = [extract %i% %.lista%] kill %grd% all &end &type Borrando temporales ... \ &type Cálculo finalizado ... \ &messages &on &return