因为想做笔记,所以直接做的很粗糙了,后面再更新!

import cv2
import numpy as np
from osgeo import gdal
import os
import xarray as xr
import matplotlib.pyplot as plt
import matplotlib as mplfig, ax = plt.subplots(figsize=(6, 1))
fig.subplots_adjust(bottom=0.5)cmap = mpl.cm.cool
norm = mpl.colors.Normalize(vmin=5, vmax=10)fig.colorbar(mpl.cm.ScalarMappable(norm=norm, cmap=cmap),cax=ax, orientation='horizontal', label='Some Units')
"""
res = cv2.resize(RasterArrray, dsize=(441,251), interpolation=cv2.INTER_CUBIC)Here img is thus a numpy array containing the original image, whereas res is a numpy array containing the resized image. An important aspect is the interpolation parameter: there are several ways how to resize an image. Especially since you scale down the image, and the size of the original image is not a multiple of the size of the resized image. Possible interpolation schemas are:
INTER_NEAREST - a nearest-neighbor interpolation
INTER_LINEAR - a bilinear interpolation (used by default)
INTER_AREA - resampling using pixel area relation. It may be a preferred method for image decimation, as it gives moire’-free results. But when the image is zoomed, it is similar to the INTER_NEAREST method.
INTER_CUBIC - a bicubic interpolation over 4x4 pixel neighborhood
INTER_LANCZOS4 - a Lanczos interpolation over 8x8 pixel neighborhood"""
def GetTimeSerises_nc(ncVariable):"""获取 时间序列:param ncVariable::return:"""timeSerises = ncVariable.time.data
return timeSerises
inNcFile = r"./solar-1979-01.nc"
inNc = xr.open_dataset(inNcFile)
print(inNc)
print(inNc.LATIXY.data)import pandas as pd # 创建 dataset
ds = xr.Dataset()numLon = 1400
numLat = 800# LATIXY LONGXY
inLat = inNc.LATIXY.data
inLon = inNc.LONGXY.data
# print("np.min(inLon):{}, np.max(inLon):{}".format(np.min(inLon), np.max(inLon)))
# print("np.min(inLat):{}, np.max(inLat):{}".format(np.min(inLat), np.max(inLat)))
lon = np.linspace(np.min(inLon), np.max(inLon), num=numLon, endpoint=True, retstep=False, dtype=None, axis=0)
lat = np.linspace(np.min(inLat), np.max(inLat), num=numLat, endpoint=True, retstep=False, dtype=None, axis=0)lon, lat = np.meshgrid(lon, lat)ds = ds.assign_coords({"lat": (["x", "y"], lat),"lon": (["x", "y"], lon)
})solor = np.full(shape=(10, numLat, numLon) , fill_value= np.nan )ncVariable = inNc.FSDS
timeSerises = GetTimeSerises_nc(ncVariable)i = 0
for timeSerise in timeSerises[0:10]:print(timeSerise)# 获取数据arr = inNc.FSDS.loc[timeSerise].dataprint(arr.shape)solor[i,:,:] = cv2.resize(arr, dsize=(numLon,numLat), interpolation = cv2.INTER_LINEAR)print(arr.shape)i= i+1print(i)ds["solor"] = xr.DataArray(solor, dims=['time','x', 'y'], )
ds.coords['time'] = pd.date_range(start='1979-01-01',periods=10,freq='3H')
# ds["lat"]  = xr.DataArray(lat, dims=['lat'], )
# ds["lon"]  = xr.DataArray(lon, dims=['lon'], )
print(ds)ds.to_netcdf(r"./test_1.nc")

主要解决问题的代码块在这里:

lon = np.linspace(np.min(inLon), np.max(inLon), num=numLon, endpoint=True, retstep=False, dtype=None, axis=0)
lat = np.linspace(np.min(inLat), np.max(inLat), num=numLat, endpoint=True, retstep=False, dtype=None, axis=0)
lon, lat = np.meshgrid(lon, lat)ds = ds.assign_coords({"lat": (["x", "y"], lat),"lon": (["x", "y"], lon)
})ds["solor"] = xr.DataArray(solor, dims=['time','x', 'y'], )
ds.coords['time'] = pd.date_range(start='1979-01-01',periods=10,freq='3H')

结果:

写的粗糙还望见谅!

参考链接
https://stackoverflow.com/questions/67695672/xarray-set-new-2d-coordinate-as-dimension

python Xarray处理设置2维数组作为coordinates相关推荐

  1. python用符号计算检验多维数组的计算

    python用符号计算检验多维数组的计算 import sympy as sym import numpy as np a111,a112,a121,a122,a211,a212,a221,a222= ...

  2. python随机生成二维列表_对python产生随机的二维数组实例详解

    对python产生随机的二维数组实例详解 最近找遍了python的各个函数发现无法直接生成随机的二维数组,其中包括random()相关的各种方法,都没有得到想要的结果.最后在一篇博客中受到启发,通过列 ...

  3. python将多个3维数组转换成4维数组时,出现(m,)

    python将多个3维数组转换成4维数组时,出现(m,)错误. 原因:多个3维数组件存在不同维度的数组,例如大部分3维数组为(n,l,l),而有一个或多个为(m, l, l):且则会出现上述错误. 解 ...

  4. python顺时针旋转_Python之二维数组N*N顺时针旋转90度

    需求:把一个二维数组顺时针旋转90度,现实数据的替换. 比如把4*4的二维数组顺时针旋转90度 原始数据是一个嵌套列表:[['A', 'B', 'C', 'D'], ['A', 'B', 'C', ' ...

  5. python数据结构剑指offer-二维数组中的查找

    例题 描述 在一个二维数组array中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是 ...

  6. Python: NumPy中的多维数组ndarray

    转载来源 http://blog.sciencenet.cn/home.php?mod=space&uid=3031432&do=blog&id=1064033 1 Pytho ...

  7. python基础01-定义二维数组

    自学深度学习重拾python,发现自学打的基础就是不行,比如python中定义二维数组的问题,很怪,也很有意思. 找到了一篇大佬的文章:https://www.cnblogs.com/woshare/ ...

  8. matlab中for循环设置二维数组,MATLAB中定义赋值一个二维数组

    MATLAB中定义赋值一个二维数组 答: 分号:; 因特网能提供的最基本服务 答:E-mail, WWW, FTP 劳动合同中,用人单位给予劳动者低于当地工资最低水平的违反了()合法原则 答:内容合法 ...

  9. python如何初始化一个二维数组_使用Python实现一个简单的商品期货布林指标突破策略...

    布林指标突破策略,思路非常简单.使用Python语言编写该策略,也非常容易实现,加上回测配置信息,有70行代码,实际可以更加精简,鉴于教学策略,没有使用难懂的Python语法,使用的是比较基础的语句. ...

最新文章

  1. 说说Shell在代码重构中的应用
  2. 导致oracle 控制文件坏,异常断电导致ORACLE控制文件等受到破坏的处理
  3. 【标签组件与图标 3.3】
  4. 数据访问增删改查之单项查询
  5. java 注解加载配置文件_Spring的Java配置方式和读取properties配置文件
  6. 一个长方体玻璃容器从里面量长宽_在玻璃鱼缸里用微型观叶植物布置景观,比盆景还要迷人...
  7. 体验c#面向对象的编程
  8. Windows下命令模式安装mysql
  9. CSS-fishc学习笔记
  10. 【linux命令】tar命令
  11. sip信令超时时间调整
  12. wingdings字体符号在哪_Wingdings特殊字符及符號對照表 | 學步園
  13. 从程序员到项目经理(28):该死的结果导向(只看结果,不问过程到底行不行?)【转载】
  14. Tkinter登陆界面设计
  15. python入门神器_Python入门之神器,助你快速上手!
  16. windows使用命令行修改用户密码
  17. (附源码)ssm航空客运订票系统 毕业设计 141612
  18. android高德SDK无法定位,高德地图 getLocation无法定位的问题
  19. 华为服务器的系统,华为服务器 操作系统
  20. 细说强网杯Web辅助

热门文章

  1. PreferenceActivity与PreferenceFragment理解
  2. android-极限测试-话机存储空间极限测试(bat脚本)
  3. Anaconda3、TensorFlow和keras简单安装方法(较详细)
  4. matlab bsxfun memory,matlab函数bsxfun浅谈(转载)
  5. 自动化测试框架[各自动化测试框架大比拼]
  6. 升级本地javaweb项目为https访问
  7. 字符串字符数组的赋值
  8. 微信JS-SDK的使用
  9. 如何用快启动pe修复win10系统引导?
  10. 【锁机制】MySQL锁机制