标签: python-iris

从文件对象或netCDF4数据集创建虹膜多维数据集

有没有一种方法可以使用文件对象(二进制流)或者通过netCDF4数据集对象创建(打开/加载)虹膜多维数据集?

具体来说,我有一个通过URL提供的文件,但不是由OpenDAP服务器提供的;iris.load_cube()和朋友对此失败。

我意识到Iris更喜欢延迟加载,因此使用URI而不是内存数据,但这并不总是可行的。

对于普通的netCDF4 Dataset对象,我可以执行以下操作:

from urllib.request import urlopen
import netCDF4 as nc

url = 'https://crudata.uea.ac.uk/cru/data/temperature/HadCRUT.4.6.0.0.median.nc'
with urlopen(url) as stream:
    ds = nc.Dataset('HadCRUT', memory=stream.read())
Run Code Online (Sandbox Code Playgroud)

因此,我正在寻找对Iris进行类似操作的方法Cube,或者将netCDF4数据集读入多维数据集,而无需通过磁盘上的临时文件。我曾希望Iris功能中可以存在一些东西,但是我(尚未)无法在参考文档中找到它。

python python-iris

10
推荐指数
1
解决办法
103
查看次数

使用 matplotlib 在垂直截面上绘制风向量

我搜索了高低,但找不到这个问题的另一个答案。

我正在尝试将南极半岛上气象局统一模型的输出可视化。目前,我有一个纵向横截面,潜在温度绘制为填充轮廓。我想在此之上绘制风向量,使它们看起来更像:

Elvidge et al.s' (2014) 图 3

我试图调整 matplotlib 示例中给出的纬度/经度坐标示例(例如 quiver_demo),但没有运气(可能是因为我做错了一些显而易见的错误)。

我有风的 u、v 和 w 分量(虽然我不需要 v,因为我已经在一条纬度线上切了一片)。

我目前正在使用一个名为 iris (v1.7) 的模块,它允许我处理我拥有的文件(例如从旋转的极点投影转换并将纬度/经度转换为合理的坐标),所以请原谅我不熟悉的行我的代码。

我的代码如下:

import iris
import iris.plot as iplt
import matplotlib.pyplot as plt
import numpy as np

# Load variables from file
fname = ['/pathname/filename.pp']
theta= iris.load_cube(fname,'air_potential_temperature') #all data are 3D 'cubes' of dimensions [x,y,z] = [40,800,800]
U = iris.load_cube(fname, 'eastward_wind')
W = iris.load_cube(fname, 'upward_air_velocity')
lev_ht = theta.coord('level_height').points # for extracting z coordinate only - shape = (40,)

##SPATIAL COORDINATES
## rotate projection to account for …
Run Code Online (Sandbox Code Playgroud)

python matplotlib python-iris

5
推荐指数
1
解决办法
4897
查看次数

Python:使用多边形在给定的2d网格上创建蒙版

我有一些多边形(加拿大省份),读入GeoPandas,并希望使用这些来创建一个掩码,以应用于二维纬度 - 经度网格上的网格化数据(使用netcdf文件读取iris).最终目标是仅保留给定省份的数据,其余数据被掩盖.因此,对于省内的网格框,掩码为1,对于省外的网格框,为0或NaN.


可以从shapefile中获取多边形:https://www.dropbox.com/s/o5elu01fetwnobx/CAN_adm1.shp? dl = 0

我正在使用的netcdf文件可以在这里下载:https://www.dropbox.com/s/kxb2v2rq17m7lp7/t2m.20090815.nc?dl =0


我想这里有两种方法,但我在两个方面都在努力:

1)使用多边形在纬度 - 经度网格上创建一个蒙版,以便这可以应用于python之外的许多数据文件(首选)

2)使用多边形来屏蔽已读入的数据并仅提取感兴趣的省内的数据,以交互方式工作.

我的代码到目前为止:

import iris
import geopandas as gpd

#read the shapefile and extract the polygon for a single province
#(province names stored as variable 'NAME_1')
Canada=gpd.read_file('CAN_adm1.shp')
BritishColumbia=Canada[Canada['NAME_1'] == 'British Columbia']

#get the latitude-longitude grid from netcdf file
cubelist=iris.load('t2m.20090815.nc')
cube=cubelist[0]
lats=cube.coord('latitude').points
lons=cube.coord('longitude').points

#create 2d grid from lats and lons (may not be necessary?) …
Run Code Online (Sandbox Code Playgroud)

python gis cartopy python-iris geopandas

5
推荐指数
2
解决办法
2618
查看次数

掩盖立方体的功能

我想绘制来自全局多维数据集的数据,但仅用于国家列表.所以我根据国家的"边界框"选择一个子立方体.

到现在为止还挺好.我正在寻找的是一种简单的方法来掩盖多维数据集的所有点,这些点不属于我的任何国家(表示为特征),因此只有那些位于我的任何特征内的立方体点被绘制.

非常感谢任何想法=)

cartopy python-iris

2
推荐指数
1
解决办法
791
查看次数

标签 统计

python-iris ×4

python ×3

cartopy ×2

geopandas ×1

gis ×1

matplotlib ×1