SEforALL-IEAP / OMG

Quick techno-economic analysis of potential mini-grid sites. The script is based on OnSSET model with modifications to accommodate specifications related to the overall viability of mini-grids.
0 stars 0 forks source link

Solar resource profile per site | renewables.ninja API #2

Open akorkovelos opened 7 months ago

akorkovelos commented 7 months ago

In the current version of the code the ghi_curve is loaded for a random location in the country (see zm-2-pv.csv within input data). Then, the daily solar availability is adjusted to the annual GHI extracted at each location/site from a GHI raster layer (WB Global solar atlas). The task here is to build a function that renders the hourly profile for the latest year available in renewables.ninja, using their API service. We want to test:

  1. If/how this improves the accuracy of solar profile/curve
  2. Impact on computational times for the sample 5000 sites
julcan7 commented 7 months ago

Hi @akorkovelos I worked a bit on this task. I pulled a branch, I am not familiar yet how this works out, let me know if you can see my changes. I created a Jupiter notebook (API_Renewable_Ninja) to evaluate the performance of this task.

Methods:

Limitations

Conclusions:

May be if you have the chance we can discuss today on our meeting with the team on how to proceed and if there are other comparisons you would like to have. Please, let me know.

akorkovelos commented 7 months ago

Excellent work! A go-around to the request limitation is to create bigger sample areas (e.g., 5-10 km2) and associate sites to the nearest extraction point. There are two different approaches we can try:

  1. Split the country into <50 bins, extract the data, and store it as input before the model is even run (pre-processing). We may add this as a prerequisite to the analysis. Then, for each site, we run a simple nearest neighbor and look-up the csv. radiation data to the closest location.
  2. Run a spatial k-means clustering method on the sites we have (k<50), define the areas on a map (polygons), extract the data from renewablesninja and then run (1) in a similar manner.

Let's try both and again test the accuracy of the methods. Let's try to make this optional in the code: one may use the simple fast method with X% discrepancy or the more detailed method, which might require additional computational time/resources.

PS1. Please check if we can download multiyear data (see zm-2-pv.csv within input data) and apply multiyear average hourly curves. This will alleviate (hopefully) issues with random incidents.

PS2. You can also check how we could add some noise/randomness to the hourly data; to cover unpredicted events.

julcan7 commented 6 months ago

Hi Alex,

Coming back to this thread, I wanted to update it, but somehow I forgot about it. Most of the analysis is described in this notebook. In summary, a function will recover GHI and temperature from the administrative region where the minigrid/point belongs to and assign them to it. The data was downloaded from MERRA-2.

Regarding PS1 and then PS2 above, for PS1, we could replicate the data extraction for each centroid for each year and come up with a summary for a period of time (10 years?), what do you think?. Regardint PS2, I understand the nature of the task, but if we want to reduce random incidents in PS1, why would we want to add some randomness with PS2? I would like to understand a bit better what we would like to assess when adding randomness to the data: battery performance?, diesel-generator usage?, sizing of installed capacity?, or some other parameter?

Thanks!