I have monthly (and sometimes daily) data on temperatures from about 30 Swedish weather stations in the mid-19th century that I want interpolate to the whole country. I'm using ArcGIS and Stata.
For later years, I have data on additional weather stations (around 100), so I've thought of using the later data as to calibrate a model using the old stations to predict weather at the new stations. Since I know the actual weather at the new stations, I could calibrate to model to achieve the best possible fit. But I'm not sure what a good method for going about achieving a suitable fit (don't want to risk overfitting for example).
Answer
You can likely get a reasonable interpolation using a linear regression (assuming your 30 weather stations are a representative sample) using elevation, latitude and distance from the coast as independent variables with the day as a factor. I've done this using ArcGIS and R previously.
Daily 9am and 3pm temperatures over 10 days in 2003 from weather stations in South Eastern Australia
Basic steps:
- Get a digital elevation model of your area.
- Get vector or raster coastline
- Generate a latitude raster (example)
- Generate a distance from coast raster (perhaps with Euclidian Distance)
- For the variables that you don't have data for for each station, use the Sample or Extract Values to Points tool to query the relevant raster. I only needed to do this for distance from coast as my weather station data contained lon, lat and elevation.
- Plug elevation, lat and distance as independent variables, temperature as dependent variable and day as a factor into a linear regression model in r/spss/stata/etc...
- If you get a decent fit, use the model coefficients to create a raster calculator expression (
temp = α + βelev*elev + βlat*lat + βdist*dist
) to estimate temperature from elevation, lat and distance. You may need to script this as you'll get different coefficients for each day.
No comments:
Post a Comment