GeoscienceAustralia / tcrm

A statistical-parametric model for assessing wind hazard from tropical cyclones
http://geoscienceaustralia.github.io/tcrm
Other
81 stars 52 forks source link

Example Case: Return Period Map Spatial Interpolation Issues #110

Closed pmclau04 closed 3 years ago

pmclau04 commented 3 years ago

Hi - I've started running the tool (I've included the .ini file below) but I'm finding the return period maps are quite "blotchy", simliar to another user. I'm seeing this with the example case .ini file for Port Hedland. A few notes on edits that were made during install to allow the conda -yml file to install properly: tcrmenv.yml edits: removed line 32 "-mpi4py". This was not installing via conda.

Once the environment was installed and activated, i ran the example case using python tcrm.py -c example/port_hedland.ini

Example Output from port_hedland.ini image

Based on guidance on issue #105, I altered the PlotInterface/maps.py code as shown below. The output looks better, but still quite blotchy. Wondering if there is any work arounds or potential steps I missed during the install process? Thanks in advance for any help here.

PlotInterface/maps.py Edits `class HazardMap(FilledContourMapFigure): """ A map for presenting return level data. Ocean areas are masked, and the data is smoothed using a Gaussian kernel.

"""
def plot(self, data, xgrid, ygrid, title, lvls, cbarlab, map_kwargs):
    # Smooth the data to reduce 'lines-on-a-map' inferences:
    #these lines were altered by PWM on 12/11.  Uncomment if you want original code
    #dx = np.mean(np.diff(xgrid))
    #dmask = data.mask
    #data = smooth(data, int(1/dx))
    #data = ma.array(data, mask=dmask)
    self.add(data, xgrid, ygrid, title, lvls, cbarlab, map_kwargs)
    self.cmap = sns.light_palette("orange", as_cmap=True)
    super(HazardMap, self).plot()`

Example Output from port_hedland.ini with image

port_hedland.ini setup [Actions] ; TCRM modules to execute DataProcess=True ExecuteStat=True ExecuteTrackGenerator=True ExecuteWindfield=True ExecuteHazard=True CreateDatabase=True PlotHazard=True

PlotData=False

ExecuteEvaluate=False DownloadData=True

[DataProcess] InputFile=ibtracs.since1980.list.v04r00.csv Source=IBTRACS StartSeason=1981 FilterSeasons=True

[Region] ; Domain for windfield and hazard calculation gridLimit={'xMin':113.0,'xMax':124.0,'yMin':-26.0,'yMax':-15.0} gridSpace={'x':1.0,'y':1.0} gridInc={'x':1.0,'y':0.5} LocalityID=250913860 LocalityName=Port Hedland, Western Australia, Australia.

[StatInterface] kdeType=gau kde2DType=Gaussian kdeStep=0.2

[TrackGenerator] NumSimulations=1000 YearsPerSimulation=1 SeasonSeed=403943 TrackSeed=89333

[WindfieldInterface] ;TrackPath=./output/port_hedland/tracks Margin=2.0 Resolution=0.05 Source=TCRM profileType=powell windFieldType=kepert

[Hazard] ; Years to calculate return period wind speeds ;InputPath=./output/port_hedland/windfield ;Resolution=0.05 Years=5,10,20,25,50,100,200,250,500,1000,2000,2500 MinimumRecords=10 CalculateCI=False

[Input] LocationFile = input/stationlist.shp landmask = input/landmask.nc mslpfile = MSLP/slp.day.ltm.nc datasets = IBTRACS,LTMSLP MSLPGrid=1,2,3,4,12

[Output] Path=./output/port_hedland

[Logging] LogFile=./output/port_hedland/log/port_hedland.log LogLevel=INFO Verbose=False

[Process] ExcludePastProcessed=True DatFile=./output/port_hedland/process/dat/port_hedland.dat

[RMW] GetRMWDistFromInputData=False mean=50.0 sigma=0.6

[TCRM] ; Output track files settings Columns=index,age,lon,lat,speed,bearing,pressure,penv,rmax FieldDelimiter=, NumberOfHeadingLines=1 SpeedUnits=kph PressureUnits=hPa

[IBTRACS] ; Input data file settings url = https://www.ncei.noaa.gov/data/international-best-track-archive-for-climate-stewardship-ibtracs/v04r00/access/csv/ibtracs.since1980.list.v04r00.csv path = input filename = ibtracs.since1980.list.v04r00.csv columns = tcserialno,season,num,skip,skip,skip,date,skip,lat,lon,skip,pressure fielddelimiter = , numberofheadinglines = 3 pressureunits = hPa lengthunits = km dateformat = %Y-%m-%d %H:%M:%S speedunits = kph

[LTMSLP] ; MSLP climatology file settings URL = ftp://ftp.cdc.noaa.gov/Datasets/ncep.reanalysis.derived/surface/slp.day.1981-2010.ltm.nc path = MSLP filename = slp.day.ltm.nc

Thanks again for any help on this issue!

wcarthur commented 3 years ago

Hi @pmclau04 - the missing gaps are where there are grid points where there are insufficient synthetic wind speeds to fit the generalised pareto distribution. By default, the code requires a minimum of 50 records before fitting the GPD at a grid point.

This can be overridden with the MinimumRecords configuration option below. Note also, there are GEV, GPD, emp and power options for the ExtremeValueDistribution setting. The MinimumRecords is ignored for emp and power distributions (empirical ARI values, and power distribution fitting respectively)

[Hazard]
Years=5,10,20,25,50,100,200,250,500,1000,2000,2500
MinimumRecords=50
CalculateCI=False
PercentileRange=90
SampleSize=50
PlotSpeedUnits=mps
ExtremeValueDistribution=GPD