Add solar radiation modeling over DEMs
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 30/100
- Tipo di issue
- Funzionalità
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Tranquilla
- Stack tecnologico
- python
- Ambito
- data, performance
Direzione di ricerca
Start by locating the existing viewshed infrastructure and its xarray DataArray interfaces, then assess whether horizon tracing can be reused. Review the dask map_overlap and GPU requirements before defining the design. Done means direct, diffuse, and terrain-reflected radiation are separately available, with hourly, daily, and annual integration over terrain and configurable atmospheric transmittance.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Sky view factor exists, but there's no actual solar irradiance model. Solar radiation modeling over terrain is a common need in renewable energy siting, ecology, and agriculture.
Scope
Radiation components. Calculate direct beam, diffuse sky, and terrain-reflected radiation separately. The total is the sum of all three.
Terrain effects. Account for slope, aspect, and horizon shadowing derived from the DEM. Cells behind ridgelines should receive reduced or zero direct beam depending on the sun's position.
Atmospheric transmittance. Configurable transmittance parameter (or a simple atmospheric model) to control how much radiation reaches the surface.
Integration periods. Support hourly snapshots, daily totals, or annual sums. Daily/annual modes integrate over sun positions throughout the period.
Sun position calculation. Compute solar declination and hour angle from date/time and latitude. No external ephemeris library should be required for basic operation.
Prior art
Similar in scope to GRASS r.sun or ArcGIS Area Solar Radiation. Both are widely used but not available as lightweight Python functions that work on xarray DataArrays.
Implementation notes
The horizon calculation is the expensive part. For each cell, you need to trace rays in multiple azimuth directions and find the maximum elevation angle. This could reuse or extend the existing viewshed infrastructure if the interface fits.
GPU acceleration would help a lot here since the horizon sweep is embarrassingly parallel across cells. A CUDA kernel that walks each azimuth ray per thread block is a natural fit.
For dask, the horizon calculation requires overlap (the search radius can be large), so map_overlap with sufficient depth is the right approach.
- Lingua principale
- Python
- Stelle
- 972
- Fork
- 92
- Merge medio
- 2g 12h
- PR unite (30g)
- 7
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di xarray-contrib/xarray-spatial
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 68/100
xarray-contrib/xarray-spatial#3726 ·
-
api area:surface bug severity:medium sweep-api-consistency
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
xarray-contrib/xarray-spatial#3712 ·
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 88/100
xarray-contrib/xarray-spatial#3710 ·
-
benchmarks: cupy branch in get_xr_dataarray never raises NotImplementedError on non-GPU hosts Apertabug
Difficoltà 1/5 1-3 ore Idoneità per principianti 88/100
xarray-contrib/xarray-spatial#3707 ·
-
area:surface documentation user-guide-example
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
xarray-contrib/xarray-spatial#3464 ·
Tutte le issue di xarray-contrib/xarray-spatial
Issue simili
-
sponsored
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 86/100
Diaoul/subliminal#1382 ·
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 92/100
-
triage/confirmed
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
agentscope-ai/agentscope#2775 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100