How to use the NOAA API to query past weather data for a given set of coordinates

匿名 (未验证) 提交于 2019-12-03 03:08:02

问题:

I am trying to retrieve past NOAA data using latitudinal and longitudinal coordinates. I am interested both in historical time series and annual summaries for variables such as temperature, wind speed, cloud fraction, and precipitation.

EX: 2008-02-20 13:00 in (25.033972, 121.564493)

I hope to automate a process that achieves this for 900,000+ locations. Any ideas? Ideally this script would be written in R or Python.

回答1:

  1. Figure out the endpoint/dataset that contains the information you want (or multiple ones)
  2. Convert lat/long into zip code
  3. Find the correct station for the zip code here
  4. For each endpoint, pull data for each location.
  5. ???
  6. Profit???

If you're looking for someone to write your code for you, I am (as are many others) available for freelance work.



回答2:

NOAA is now on its second version of the NOAA web API. APIs are useful because you can essentially query a web service, using requests and a python dict of arguments that describe what you want. @Cravden has made a nice class that will get you started on GitHub. NOAA has nice documentation describing what you can get and how (you need to give them and email to get an access token). Other climate data aggregators also do this kind of thing.
Something as simple as this might get you started:

import requests   def get_noaa_data(url, data_type, header):      r = requests.get(url, data_type, headers=header)     print(r)   if __name__ == '__main__':      token = 'gotowebsitetorequesttoken'     creds = dict(token=token)     dtype = 'dataset'     url = 'https://www.ncdc.noaa.gov/cdo-web/api/v2/'      get_noaa_data(url, dtype, creds) 

If you are going for thousands of places, you might consider downloading gridded data, making a shapefile of the points, then extracting raster values to an attribute table as done here.



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!