精华内容
下载资源
问答
  • python读取nc数据

    千次阅读 2021-03-06 17:14:13
    python读取nc数据 读取nc数据主要是用到netCDF4库。 #最基础的读取 nc_obj = nc.Dataset(filename) #这里filename自己定义即可 这里已经将nc文件读取进来了,之后我们可以查看其中的各个维度以及数据。 #读取经度...

    python读取nc数据

    读取nc数据主要是用到netCDF4库。

    #最基础的读取
    nc_obj = nc.Dataset(filename)
    #这里filename自己定义即可
    

    这里已经将nc文件读取进来了,之后我们可以查看其中的各个维度以及数据。

    #读取经度纬度值
    lat=(nc_obj.variables['lat'][:])
    lon=(nc_obj.variables['lon'][:])
    

    这里variables方法即是读取变量的功能,一般nc文件中经度和纬度会命名为‘lon’和‘lat’,不确定的话可以阅读一下相关产品的说明书进行查询。
    或者可以直接调用variables.keys方法:

    print(nc_obj.variables.keys())
    

    输出结果:
    输出结果
    这里的变脸分别是经度、纬度、时间和蒸散发量。
    那么我们想读取蒸散发数值的话,就是和前面类似的操作:

    Data=(nc_obj.variables[str(flag)][:])
    

    看一下读出来的结果的形状:

    print(Data.shape)
    

    输出结果
    这个产品的记录是以月份为单位,一共是40年的。第二个是纬度,第三位是经度,都是以0.5°为单位。
    到这里,数据已经存入数组Data中了,我们可以对它进行后续的操作。

    补充一个题外话,如果想要灵活一点,让我们的程序可以每次读取我们选定的文件,而不需要我们每次更改路径,则可以使用win32ui库。

    import win32ui
    # 0代表另存为对话框,1代表打开文件对话框
    dlg = win32ui.CreateFileDialog(1)
     
    # 默认目录
    dlg.SetOFNInitialDir('D:\Recently\Water_recycle\Data') 
     
    # 显示对话框
    dlg.DoModal()
     
    # 获取用户选择的文件全路径
    filename = dlg.GetPathName()
    
    nc_obj = nc.Dataset(filename)
    
    

    这部分文件读取的内容一开始是在CSDN上找到的,但是后来找不到了,所幸我的程序里还留着,所以就搬运了,如果有朋友找到了之前那个大佬的帖子,麻烦指一下路,我补充一下应用,非常感谢!!

    展开全文
  • 目前很多数据以nc格式存储,下面这篇文章主要给大家介绍了关于利用python如何处理nc数据的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值。需要的朋友们下面来一起看看吧
  • 今天小编就为大家分享一篇python读取与处理netcdf数据方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • python读取.nc数据

    万次阅读 2018-12-29 10:37:16
    要用python读取.nc数据,首先要安装netCDF4包。运行 pip install netCDF4 即可。首先通过 import netCDF4 as nc file = nc.Dataset(file_path) 打开文件,如果我们对.nc文件的内容一无所知,那么可以通过 ...

    要用python读取.nc数据,首先要安装netCDF4包。运行

    pip install netCDF4

    即可。首先通过

    import netCDF4 as nc
    file = nc.Dataset(file_path)

    打开文件,如果我们对.nc文件的内容一无所知,那么可以通过

    file.variables

    命令,查看文件内容,可以查看保存文件数据的key、dtype、shape等信息,如下图

    最后,通过

    data = file[key][:]

    即可获取数据。

     

    展开全文
  • Python读取nc文件数据

    2021-08-05 15:44:20
    title: Python 读取和处理nc文件 date: 2021-07-22 23:45:52 tags: # 读取nc文件并对其中的数据进行处理 import netCDF4 as nc import pandas as pd import numpy as np # 2013年1月1日 file = 'HEMCO_diagnostics....

    title: Python 读取和处理nc文件
    date: 2021-07-22 23:45:52
    tags:

    # 读取nc文件并对其中的数据进行处理
    import netCDF4 as nc
    import pandas as pd
    import numpy as np
    # 2013年1月1日
    file = 'HEMCO_diagnostics.201301010000.nc'
    dataset = nc.Dataset(file)
    
    # 查看一些文件中都有哪一些变量
    print(dataset.variables.keys())
    
    # 读取人为排放的左旋葡萄糖的数据,单位为kg/m2/s,空间分辨率为5*5
    # 数据是4维的,分别是时间,高度,纬度,经度
    EmisLEVO_Anthro = dataset.variables['EmisLEVO_Anthro'][:][0,0,:,:]
    # 读取网格面积数据units = "m2"
    AREA = dataset.variables['AREA'][:]
    
    # 网格面积*排放强度,单位为kg/s
    EmisLEVO_Anthro_load = EmisLEVO_Anthro*AREA
    
    # 读取经纬度数据lat=46, lon=72
    lon = dataset.variables['lon'][:]
    lat = dataset.variables['lat'][:]
    long,lati = np.meshgrid(lon,lat)
    
    # 下面将数据输出为csv数据
    long = long.reshape(46*72)
    lati = lati.reshape(46*72)
    EmisLEVO_Anthro_load = EmisLEVO_Anthro_load.reshape(46*72)
    
    total = {'lon':long,'lat':lati,'EmisLEVO_Anthro_load':EmisLEVO_Anthro_load}
    total = pd.DataFrame(total)
    total.to_csv('EmisLEVO_Anthro_load.csv')
    
    展开全文
  • 使用 python 处理 nc 数据

    千次阅读 2019-07-14 17:05:36
    无论是“知难行易”还是“知易行难”都不能充分的说明问题,还是“知行合一”来的更靠谱些,既要知道理论又要知道如何实现,于是经过不太充分的研究后总结成此文,以记录如何使用 python 处理 nc 数据。 一、nc ...

    前言

    这两天帮一个朋友处理了些 nc 数据,本以为很简单的事情,没想到里面涉及到了很多的细节和坑,无论是“知难行易”还是“知易行难”都不能充分的说明问题,还是“知行合一”来的更靠谱些,既要知道理论又要知道如何实现,于是经过不太充分的研究后总结成此文,以记录如何使用 python 处理 nc 数据。

    一、nc 数据介绍

    nc 全称 netCDF(The Network Common Data Form),可以用来存储一系列的数组,就是这么简单(参考https://www.unidata.ucar.edu/software/netcdf/docs/netcdf_introduction.html)。

    既然 nc 可以用来一系列的数组,所以经常被用来存储科学观测数据,最好还是长时间序列的。

    试想一下一个科学家每隔一分钟采集一次实验数据并存储了下来,如果不用这种格式存储,时间长了可能就需要创建一系列的 csv 或者 txt 等,而采用 nc 一个文件就可以搞定,是不是很方便。

    更方便的是如果这个科学实验与气象、水文、温度等地理信息稍微沾点边的,完全也可以用 nc 进行存储, GeoTiff 顶多能多存几个波段(此处波段可以认为是气象、水文等不同信号),而 nc 可以存储不同波段的长时间观测结果,是不是非常方便。

    可以使用 gdal 查看数据信息,执行:

    gdalinfo name.nc

    即可得到如下信息:

     

    每一个 SUBDATASET 表示记录的是一种格式的数据(气象、水文等等),如果要想查看此 SUBDATASET 的具体信息,可以执行:

    gdalinfo NETCDF:name.nc:SUBDATASET_NAME

    此处的 SUBDATASET_NAME 为上面的 T2、PSFC 等等,可以得到如下信息:

     

    此处只有一个 Band ,每一个 Band 记录了一个时间点(或者其他区分形式)的一条记录,这个记录是一个数组。

    所以看到这里,各位应该已经明白了,可以直接使用 GDAL 处理 nc 数据,比如直接使用 gdalwarp 将某个 SUBDATASET 转成 GeoTiff 等等,此处暂且不表,各位只需要查阅一下 gdalwarp 手册即可知道如何处理。

    明白了以上信息基本也就清楚了如何处理此数据。

    二、数据处理

    python 是运用非常广泛,自然其下各种类库非常丰富,专业一点的说法就叫生态丰富。

    2.1 netCDF4

    此框架可以直接将 nc 读取成数组(详细信息参考https://github.com/Unidata/netcdf4-python)。读取方式如下:

    dataset = netCDF4.Dataset('name.nc')# open the dataset

    这样即可读出整个 nc 中的数据信息,如果需要获取某个 SUBDATASET 只需要使用 dataset[SUBDATASET_NAME] 即可,返回的是一个三维数组,表示不同时间段(或其他区分方式下)的数据信息。

    我们可以对此数组做各种操作,如求平均值、方差等等,又让我想起了大学里的那一堆枯燥但又让人很有兴趣的实验课程。当然,此处如果使用 numpy 框架进行处理,会起到事半功倍的效果,如求长时间序列下的平均值:

     

    到这里跟地信有关的同志都会看出一个问题,此框架只能对数据进行处理,而不能进行与位置有关的操作,这就导致数据无法变成直白的地图可视化效果。其实任何数据都是相通的,我们可以采用此种方式处理完后转为 GeoTiff 等,当然我们也可以直接采用 GeoTiff 的处理流程来进行处理。

    2.2 rasterio

    rasterio 是 Mapbox 开源的空间数据处理框架,功能非常强大,此处不细说,只表如何处理我们的 nc 数据。

    当然第一种方式就是使用 netCDF4 处理完之后,使用此框架写入 GeoTiff,但是这样不太优雅,而且使用了两个框架,明显过于麻烦,我们直接使用此框架从读数据开始处理。

    此处读的时候就有技巧了,要像采用 gdalinfo 读取 SUBDATASET 一样来直接读取此 SUBDATASET 数据,如下:

     

    即给 open 函数传入 NETCDF:name.nc:SUBDATASET_NAME,采用 src.read(range(1, dim + 1)) 可以直接读出此范围内所有 Band (时间点)的信息,范围可以自己设定,注意从 0 开始,当然也可以仅读取某个 Band 的信息。

    src.meta 记录了此 SUBDATASET 的元数据信息,与 gdalinfo 看到的基本相同。

    这样我们就可以继续将此数据使用 numpy 等框架进行处理,处理完之后更重要的是要写入 GeoTiff 中(直白的说就是添加空间信息)。

    也很简单,如下即可:

     

    newfile 为存储路径,res_arr 为计算结果数组,注意尺寸不要发生变化(width*height),out_meta 为目标文件的元数据描述信息,可以直接将上面 src.meta 进行简单处理即可。

     

    crs 表示目标数据空间投影信息,transform 表示目标文件 空间范围信息,可以通过经纬度信息和图像尺寸等计算得到。

    dst.write_band 将数据写入对应波段,当然此处也可以写入多个波段,根据计算结果而定,同样从 1 开始。

    三、总结

    本文简单介绍了 nc 数据的特点及如何使用 python 处理 nc 数据。每个目标都有多条路可以达到,重要的是找到那条自己喜欢的和适合自己的路,然而话又说回来,即使走的不是想要的那条路,不是一样可以达到目标嘛!所以关键是要找到自己的目标。

    作者:魏守峰 

    出处:http://www.cnblogs.com/shoufengwei/ 

    展开全文
  • nc文件读取 python语言

    2014-09-12 17:44:34
    nc文件读取 python语言编写的 读取nc文件
  • python 汇总nc获取txt文件数据
  • python读取nc文件

    万次阅读 多人点赞 2018-10-26 10:15:43
    我这两天折腾用python读取nc文件,查阅很多资料,左拼右凑的终于读出来了。 1、安装Anaconda 1)Anaconda的安装这里有详细的讲解。搜索“Anconda”,进入官网下载。我的电脑上安装的是python3.7,因此下载的...
  • Python读取NC文件变量

    2021-01-29 18:30:55
    读取变量时,一定记得加后面的[:] 下面展示一些 内联代码片。 def get_yt(file): dataset = nc.Dataset(file) yt = dataset.variables['longitude'][:] return yt
  • python读取气象nc数据

    2021-10-21 00:03:05
    dataset = nc.Dataset('xxx.nc') # 读取数据 print(dataset.variables.keys()) # 输出所有变量 lon = dataset.variables['longitude'][:].data # 读取经度 lat = dataset.variables['latitude'][:].data # 读取维度 ...
  • 想要读取nc文件,安装好netCDF4之后,运行代码如下: import netCDF4 as nc import numpy as np import h5py dataset = nc.Dataset('c:\\GPP.monthly.2015.nc') print(dataset.variables.keys()) 结果报错: 查了...
  • Python读取nc文件转tif

    千次阅读 2020-09-10 12:13:53
    import netCDF4 as nc data = r'Y:\folder\H08_20200601_0000_1D_ROC010_FLDK.02401_02401.nc' nc_data_obj = nc.Dataset(data) nc_data_obj Out[4]: <class 'netCDF4._netCDF4.Dataset'> root group ...
  • Python读取nc格式文件过程中遇到的问题 1.安装salem库需要先安装gdal库再安装fiona库,且gdal版本要对应 Salem库报错:ImportError: No module named ‘xxx’问题 直接 import 缺少的模块 3.Xarray库报错:nc文件...
  • 问题要求: 编写一个函数完成以下任务:截取经度在23°N-40°N,纬度在118°E-131°E范围内各属性不同深度的...实验数据介绍(通过实验介绍你对NC数据的认识) nc文件即NetCDF全称为network Common Data Forma...
  • python netcdf4读取nc格式的气象数据

    万次阅读 多人点赞 2019-12-04 17:03:06
    二、nc格式数据读取 #!usr/bin/env python # -*- coding: utf-8 -*- """ @Author : zhaoguanhua @Email : zhaogh@hdsxtech.com @Time : 2019/12/4 16:45 @File : weather.py @Software: PyCharm """ im...
  • 一、nc 数据介绍 nc 全称 netCDF(The Network Common Data Form),可以用来存储一系列的数组,就是这么简单(参考https://www.unidata.ucar.edu/software/netcdf/docs/netcdf_introduction.html)。 既然 nc ...
  • Python --处理nc数据

    千次阅读 多人点赞 2019-06-26 23:47:22
    python处理nc文件 库:netCDF4,numpy,matplotlib
  • Python读取nc文件

    2021-07-30 20:16:40
    读取nc文件 查看数据类型 二维数组切片观察部分区域 数据可视化 导入库 import xarray as xr import matplotlib.pyplot as plt import matplotlib 读取nc文件 file_path = r'D:XXX\XXX.nc' # nc文件路径 ...
  • Python读取和处理nc文件

    千次阅读 2020-06-20 18:29:31
    然后安装读nc文件所需的模块netCDF4:conda install netCDF4 这样就完成了HDF4模块的安装。 # -*- coding: utf-8 -*- """ Spyder Editor This is a temporary script file. """ import netCDF4 from netCDF4 ...
  • 有错误欢迎提出指正! 两个月前大气环境模式上机作业,部分库的下载有点点麻烦(好像...import netCDF4 as nc import matplotlib.pyplot as plt import cartopy.crs as ccrs import pandas as pd import cartopy.featur
  • 最近帮人处理了一批数据,发现matlab处理nc并不是很友好,遂查询了Python方法。 参考文献: https://www.cnblogs.com/xsman/archive/2004/01/13/11298685.html http://www.dtmao.cc/news_show_498450.shtml # -*- ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 10,935
精华内容 4,374
关键字:

python读取nc数据

python 订阅