我使用 xarray 从 openDAP 服务器读取单点数据,然后将 xarray 对象转换为数据帧。这很好用。我想在一次调用中读取多个点,但我不知道这是最好的方法。
这是我用于单点的代码:
import pandas as pd
import xarray as xr
url = 'http://nomads.ncep.noaa.gov:9090/dods/gfs_0p25/gfs20161111/gfs_0p25_00z'
lats = [40.1,40.5,42.3]
lons = [1.02,1.24,1.84]
vars = ['dswrfsfc', 'tmp2m', 'pressfc']
ds = xr.open_dataset(url)
data_single = ds.sel(lon=lons[0], lat=lats[0], method='nearest')
ts_dataframe_single = data_single[vars].to_dataframe()
Run Code Online (Sandbox Code Playgroud)
为了阅读多个要点,我这样做:
data = ds.sel(lon=lons, lat=lats, method='nearest')
ts_dataframe = data[vars].to_dataframe()
Run Code Online (Sandbox Code Playgroud)
这是输出data.coords:
data.coords
Out[10]:
Coordinates:
* time (time) datetime64[ns] 2016-11-11 2016-11-11T03:00:00 ...
* lev (lev) float64 1e+03 975.0 950.0 925.0 900.0 850.0 800.0 750.0 ...
* lat (lat) float64 …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用python从netCDF文件(通过Thredds服务器访问)中创建时间序列。我使用的代码似乎正确,但是变量amb读数的值被“屏蔽”。我是python的新手,我对格式不熟悉。关于如何读取数据的任何想法?
这是我使用的代码:
import netCDF4
import pandas as pd
import datetime as dt
import matplotlib.pyplot as plt
from datetime import datetime, timedelta #
dayFile = datetime.now() - timedelta(days=1)
dayFile = dayFile.strftime("%Y%m%d")
url='http://nomads.ncep.noaa.gov:9090/dods/nam/nam%s/nam1hr_00z' %(dayFile)
# NetCDF4-Python can open OPeNDAP dataset just like a local NetCDF file
nc = netCDF4.Dataset(url)
varsInFile = nc.variables.keys()
lat = nc.variables['lat'][:]
lon = nc.variables['lon'][:]
time_var = nc.variables['time']
dtime = netCDF4.num2date(time_var[:],time_var.units)
first = netCDF4.num2date(time_var[0],time_var.units)
last = netCDF4.num2date(time_var[-1],time_var.units)
print first.strftime('%Y-%b-%d %H:%M')
print last.strftime('%Y-%b-%d %H:%M')
# determine what longitude convention is …Run Code Online (Sandbox Code Playgroud)