Siphon是一个用于访问大气和海洋数据源的Python库。它提供了易于使用的工具,可以从THREDDS数据服务器中自动获取、解析和检索数据。Siphon库旨在使使用Python进行科学数据分析变得更加容易。
Siphon库主要提供以下功能:
Siphon库广泛应用于气象和海洋学领域,以及其他需要使用大量科学数据的领域。它简化了数据获取和处理的过程,使得用户可以更高效地进行科学研究和分析。
总之,Siphon是一个强大的Python库,为科学家和工程师提供了从THREDDS目录和数据服务器中获取数据的简单方法,并提供了工具来解析、检验和分析这些数据。
下面基于官方示例略作修改,修改主要因过时而报错的代码 进行数据索引与作图
In [20]:
from datetime import datetime
import matplotlib.pyplot as plt
from siphon.catalog import TDSCatalogIn [21]:
best_gfs = TDSCatalog('http://thredds.ucar.edu/thredds/catalog/grib/NCEP/GFS/'
'Global_0p5deg/catalog.xml?dataset=grib/NCEP/GFS/Global_0p5deg/Best')
print(best_gfs.datasets)['Best GFS Half Degree Forecast Time Series']In [22]:
best_ds = best_gfs.datasets[0]
ncss = best_ds.subset()然后,我们可以使用“ncss”对象创建一个新的查询对象,该对象 便于向服务器请求数据。 设置坐标为 115E 40N
In [23]:
query = ncss.query()
query.lonlat_point(115, 40).time(datetime.utcnow())
query.accept('netcdf4')
query.variables('Temperature_isobaric', 'Relative_humidity_isobaric')var=Temperature_isobaric&var=Relative_humidity_isobaric&time=2024-02-11T08%3A39%3A29.333010&longitude=115&latitude=40&accept=netcdf4In [24]:
data = ncss.get_data(query)
list(data.variables)['latitude',
'longitude',
'stationAltitude',
'station_id',
'station_description',
'profileId',
'nobs',
'profileTime',
'stationIndex',
'altitude',
'Temperature_isobaric',
'Relative_humidity_isobaric']我们将提取要使用的变量以及压力值。要获取 压力的正确变量的名称(与温度和 相对湿度,我们看一下“坐标”属性。最后一个变量 “坐标”中列出的是压力维度。
In [25]:
temp = data.variables['Temperature_isobaric']
relh = data.variables['Relative_humidity_isobaric']
press_name = relh.coordinates.split()[-1]
press = data.variables[press_name]
press_vals = press[:].squeeze()