Incorporating SSP5-8.5 Wind Projections into InVEST Coastal Model (WW3 Structure)

Hi everyone!

I’m using the InVEST Coastal Vulnerability Model to run two different scenarios: one for the present and another for a future projection. I’d like to incorporate future-projected wind and wave data instead of relying solely on the default WaveWatch III (WW3) dataset. Although I wasn’t able to find projected wave data, I decided to at least include projected wind speed to make the future scenario more realistic.

To do this, I downloaded monthly near-surface wind speed data from the HadGEM3-GC31-MM (UK) model for the SSP5-8.5 scenario in the year 2070. I used monthly northward and eastward near-surface wind components from the same model, scenario, and year.

I’m now trying to figure out how to convert this data into a format compatible with the WW3 structure used in InVEST — specifically, how to distribute it into the 16 directional sectors.

Has anyone tried doing something similar? Any advice or guidance would be greatly appreciated!

Thank you in advance!

Hi @marianamendesm,

The InVEST User’s Guide provides instruction about this: Coastal Vulnerability Model — InVEST® documentation

Let me know if you have any specific questions!

Hello,

I’ve carefully reviewed the entire guide to ensure the file was calculated and formatted correctly. I used Python to automate the process and compute the REI_VX values. However, most of the results are unfortunately returning zero.

I’m not sure whether this indicates an error in my code or a misunderstanding on my part, but I assume this is not the expected outcome for a climate change scenario.

I’m attaching my script in case someone is able to take a look and provide some guidance. I would really appreciate any help.

Thank you in advance!
wind2.txt (4.6 KB)

Hi @marianamendesm,

Would you be able to share your data so I can take a look?

Thanks!

Hi @csimpson,

Here is the link to the files: wind - Google Drive
Thank you very much in advance!

I keep wondering whether I should be considering only the ocean points… Since the wind data comes from WaveWatch III, maybe including land points is artificially raising the threshold? Let me know what you think!

Hi @marianamendesm,

Yes, I believe you’re correct and the data you’re creating to mimic WaveWatchIII should only include points in the ocean. Please let me know if this solves your problem!

Hi @csimpson

It still hasn’t worked… Something I’ve been thinking about is that, since I’m using monthly data over a 10-year period, there might be a high heterogeneity in the values, which could affect the top 10% selection and cause the points to cluster in certain regions of the globe.

The user guide suggests considering the top 10% of all available values, which in my case would be 120 values (monthly data from 2070 to 2079) for each point in the shapefile.

However, do you think it would be reasonable — in order to avoid this heterogeneity and clustering — to first calculate the mean wind speed for each point over the entire time period, and then select the top 10% of those mean values for the calculations?

This might help avoid spatial clustering of the points (for example, ending up with points mostly concentrated off the east coast of Africa, where the highest wind speeds seem to occur).

I’d really appreciate hearing your thoughts on this.
Thank you in advance!

Hi @marianamendesm,

Sorry to hear you’re still having trouble! I believe I have identified your issue - are you currently calculating the top 10% of wind speeds globally across all grid points and times steps? If so, this will result in only the windiest parts of the globe contributing values to the REI calculation (and everything else being 0). Instead, the top 10% of wind speeds should actually be calculated from the timeseries for each location, as a measure of the local wind conditions. In other words, the 90th percentile threshold should be calculated and applied locally, not globally

The user guide suggests considering the top 10% of all available values , which in my case would be 120 values (monthly data from 2070 to 2079) for each point in the shapefile.

Exactly, so if you have 120 total values for each point/pixel, you’d take the highest 12 values for each point’s timeseries, assign each value to its associated directional sector, and then compute the average wind speed per directional sector to get REI_VX.

Please let me know if this helps!

Hi @csimpson ,

Thank you very much for your help! I was indeed calculating the top 10% from all available values globally… So just to confirm: the top 10% calculation is done individually for each point, right? I take the highest 10% of the time series for each point, and from these I calculate the REI_VX for that point.

Yes, that is correct!

Hi @csimpson,

I’m still in the process of building my own WW3 (Wind and Wave) dataset for InVEST, and I would be very grateful if you could help me confirm my understanding of the calculation steps for some variables, in addition to clarifying some doubts regarding other columns in the table that are not explicitly detailed in the user guide.

Calculation of REI_VX: for each point I select the top 10% highest values of wind speed from the entire time series (for example, 12 values if I have 120 observations). To calculate REI_VX, at angle X, the average is calculated using only the values that are part of the top 10%.

Calculation REI_PCTX: After identifying the top 10% strongest winds for a point, I then determine how much comes from each angle. For example: at angle 22 I have 3 out of 12 values, REI_PCT22 will be 0.25, because 3/12 = 0.25. Indicating that 25% of the strongest winds come from angle 22.

Calculation V10PCT_X: For this calculation, I am taking all available wind speed values for a specific angle X, then selecting the top 10% highest values within the data for that angle, and calculating the average of those top 10% values for that particular angle.

I also have some questions regarding other columns that appear in the data but are not explicitly described in the InVEST user guide:

V25PCT_X follows the same reasoning as V10PCT_X but would it be the top 25%?

V_MAX_X is simply the maximum wind speed observed for that particular angle? In this case, should I change?

What exactly does V_10YR represent? It’s important in my case?

The guide states that to build my own WW3 it would be necessary to modify only the calculations described there, but the existence of V25PCT_X, V_MAX_X, and V_10YR brought me some doubts about their necessity or not to be calculated.

One other and last doubt: When it says angular sector 0°, 22°… is it referring to the sector that goes from 0° to 21°, while the sector 22° would be from 22° to 44°? Is that it?

Finally, as I do not have access to projected wave power data, I intend to keep the original WW3 values for the columns related to wave power. Are there any considerations or recommendations regarding this approach?

Thank you very much for your help so far! It has been very useful!

Hi @marianamendesm,

Yes I think your understanding is correct.

V25PCT_X follows the same reasoning as V10PCT_X but would it be the top 25%?

I would imagine so, though I don’t think this attribute is used by the model. If you’d like to use a different threshold, the Users Guide has this tidbit:

If users would like to provide their own wind and wave statistics, instead of relying on WW3 data, you must create a point vector with the columns described below. You may choose thresholds other than the 90th percentile (top 10%) at your discretion.

V_MAX_X is simply the maximum wind speed observed for that particular angle? In this case, should I change?

What exactly does V_10YR represent? It’s important in my case?

The guide states that to build my own WW3 it would be necessary to modify only the calculations described there, but the existence of V25PCT_X, V_MAX_X, and V_10YR brought me some doubts about their necessity or not to be calculated.

I believe these are all attributes in WaveWatch III that are not required by the model. According to the UG, you just need to create the 80 columns listed (16 angular sectors * 5 variables).

One other and last doubt: When it says angular sector 0°, 22°… is it referring to the sector that goes from 0° to 21°, while the sector 22° would be from 22° to 44°? Is that it?

The sector would go to 22.5 degrees, as each sector is 1/16th of 360.

Finally, as I do not have access to projected wave power data, I intend to keep the original WW3 values for the columns related to wave power. Are there any considerations or recommendations regarding this approach?

Sorry, I’m not exactly sure how to help with this!

Hope this helps!

One small correction, as noted from the User’s Guide:

for each of the 16 equiangular sectors (centered on 0 degrees, 22.5 degrees, etc.) representing the direction winds and waves are coming FROM.

For example, a 22.5° degree sector centered on 0° would span from 348.75° to 11.25°

1 Like