首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >管理和绘制日期线上的数据

管理和绘制日期线上的数据
EN

Stack Overflow用户
提问于 2018-06-22 03:02:44
回答 2查看 399关注 0票数 1

我知道这个问题以前就有人问过,但重点是Cartopy。

我目前的工作是寻找一个现象的日期线,并将工作在太平洋的一个盒子,跨越日期线。管理和绘制这些数据一直是一个挑战,因为一个索引的值从179到-179。

我可以很容易地把我的纬度

代码语言:javascript
运行
复制
lat_mask=[(lat<=20)&(lat>=-20)]  #Tropics +-20* only
lat_masked=lat[lat_mask]

效果很好。

代码语言:javascript
运行
复制
lon=np.add(lon,180)  #Reset longitudes to 0-360 from -180 to 180
lon_mask=[(lon>=110)&(lon<=300)]  

也很好..。但是,我所看到的与相反的区域。但我想要的地区是:

代码语言:javascript
运行
复制
lon_mask=[(lon<=110)|(lon>=300)]  

不起作用。我可以分别完成它们,并为日期线的东部和西部的每个区域绘制图表,但我希望它们合并为一个数据集/图。因此,我有一个面具,300-360 0-110,我可以绘制成一个单一的图像。

我正在寻找一种聪明的方式来存储信息的可用性和可绘制性。

我一直在努力想办法重新编制所有的索引,但这让我的头很痛。我正在寻找一个健壮的解决方案,因为它将定期使用。我最初认为这是一个matplotlib问题,但我认为这是存储数据的方式。

编辑:更改了&改为回收站-但是现在出现了这个问题。

我觉得

代码语言:javascript
运行
复制
lon= np.roll(lon,len(lon)/2)

或者,一些东西可能有助于将日期线有效地移到其他地方,但我无法很好地解决它。

干杯

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-07-05 00:06:16

用过的XArray:

代码语言:javascript
运行
复制
    dataset= dataset.assign_coords(lon=(dataset.lon % 360)).roll(lon=(dataset.dims['lon'] // 2))        
票数 0
EN

Stack Overflow用户

发布于 2018-06-22 03:14:13

lon_mask=[(lon<=110)|(lon>=300)]是你想要的。经度不是小于110,就是大于300。当然,没有一个数字可以同时小于110和大于300。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50980067

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档