Visual Studio-添加netCDF库
我想在C项目中使用Visual Studio Express 2013在Windows 64bit上使用NetCDF格式.我已经从然后,我已经研究了看看我应该如何进行链接等. 更具体地说,在我在Visual Studio的项目中,我进行了以下操作: put #include 在VC ++目录,库目录中,我添加了C:\ Program Files(x86)\ netcdf 4.3.3.1 \ lib; c:\ program文件(x86)\ netcdf 4.3.3.1 \ bin; 在VC ++目录中,包括目录,我添加了C:\ Program Files(x86)\ netcdf 4.3.3.1 \ include; c:\ program文件(x86)\ netcdf 4.3.3.1 \ bin; 在链接器>输入>其他依赖项中,我添加了netcdf.lib(以及我在netcdf 4.3.3.1的\ lib文件夹中找到的所有其他.lib文件 在Wi
20 2024-04-07
编程技术问答社区
快速/高效地从多个大型NetCDF文件中提取数据
我需要仅针对特定节点的全局网格提取数据,该节点由LAT/LON坐标给出(按5000-10000的顺序提供).数据是液压参数的时间序列,例如波高. 全局数据集很大,因此将其分为许多NETCDF文件.每个NETCDF文件约为5GB,并包含整个全局网格的数据,但仅适用于一个变量(例如,波高)和一年(例如2020年).说我想在某个位置提取6个变量的全日制系列(42年),我需要提取数据表格6x42 = 252 NC文件,每个5GB的大小. 我当前的方法是多年,变量和节点的三重循环.我使用Xarray打开每个NC文件,提取所有必需节点的数据,然后将其存储在字典中.一旦提取了字典中的所有数据,我就会为每个位置创建一个pd.dataframe,我将其存储为泡菜文件.有6个变量和42年的变量,这会导致每个位置的泡菜文件约为7-9 MB(因此实际上不是很大). 如果我有少量位置,我的方法非常好,但是一旦增长到几百个,这种方法就会花费很长时间.我的直觉是这是一个记忆问题(因为所有提取的数据首
12 2024-03-30
编程技术问答社区
在netcdf文件中把浮点数转换为字节数
我有一个大型NetCDF文件,其中一个标准的浮子字段仅包含0.0或1.0.我想从命令行将其转换为字节类型,以节省一些空间,并使在fortran中的字节类型中更容易阅读. 我尝试使用ncap ncap -s 'fire=byte(fire)' CAMS_2003-2017_frp_mask2_africa_zip.nc test.nc ,但似乎将所有字段归零.我在源文件上使用zip_6 netcdf4压缩,我不确定这是否复杂吗? 更新:我发现NCAP2与字节 一起使用 ncap2 -s 'fire=byte(fire)' CAMS_2003-2017_frp_mask2_africa_zip.nc test.nc ,但我不明白为什么两者有所不同?这可能是一个内存问题,因为在尝试转换为" int"而不是"字节"时,NCAP和NCAP2都会因内存分配而失败. 解决方案 我找到了两种方法: cdo -b I8 copy in.nc out.nc
16 2024-03-28
编程技术问答社区
使用nco将NetCDF中的经度从0:360转换为-180:180
我有两个NetCDF文件,每个文件在不同的年度中,我想加入.它们似乎具有相同的结构,并且时间是无限的维度,除了一个,一个经度的比例为0:360,而另一个规模为-180:180. 这个问题使用R中的栅格软件包处理此问题,但我想使用NCO 我找到了转换-180:180-> 0:360的说明(提供的说明),但对语法不够熟悉以使我可以沿另一个方向扭转说明. 有关我的NetCDF文件的详细信息: netcdf soda3.3.1_1980_2015_sst { dimensions: depth = 1 ; latitude = 330 ; longitude = 720 ; time = UNLIMITED ; // (432 currently) variables: float depth(depth) ; depth:long_name = "depth" ; depth:units = "m"
44 2024-03-28
编程技术问答社区
改变netCDF文件的网格大小
假设我有2个NetCDF数据文件,其中具有同一区域的数据(例如南美,非洲等),但不同的网格大小为0.5度x 0.5度和1.0度x 1.0度. 我想将其网格大小提高到不同的值,例如0.25 x 0.25或1.0 x 1.0,以便我可以轻松地将其用于栅格计算和比较等. 是否有一种使用任何bash脚本,cdo等进行此操作的方法 可以从此处下载示例数据. pqa?dl 是否可以像双线性插值或立方插值一样遵循不同的方法? 对于ArcGI和其他软件,这很容易,但是对于带有大型数据集的大型NetCDF文件,是否可以做到这一点. 假设这只是数据的一个子集.我以后将转换是一组年度数据. 结果文件应为一个.nc文件,该文件的网格大小由用户定义. 解决方案 您可以使用CDO重建网格,例如在常规的1度网格中,您可以使用: cdo remapcon,r360x180 input.nc output.nc 以及保守的一阶重新映射(remapcon),其他选项是: re
16 2024-03-28
编程技术问答社区
将低于阈值的数据设定值剪切到netcdf文件的阈值上
我想将所有值设置为常数 c c 本身在netcdf文件中:文件.nc 使用气候数据运营商(CDO)的解决方案将为 cdo mul -gec,$c file.nc file.nc t1.nc cdo add -mulc,$c -ltc,$c file.nc t1.nc output.nc rm -f t1.nc 但是有这样做的更整洁的方法吗? 解决方案 使用expr使用气候数据运营商(CDO)也有一种更有效的方法. Adapting the example from this post to the specific example from this question,假设该变量的名称为 x ,而常数为 c ,则命令将是这样的: cdo -expr,'x = ((x > c)) ? x : c' infile.nc outfile.nc 其中?和:是三元条件运算符,x ? y : z表示y if x not equal 0, else z.可在其他解决方
14 2024-03-28
编程技术问答社区
从Azure文件存储中读取NetCDF文件
我已将文件上传到我的Azure文件存储帐户,并创建了一个SAS(共享访问签名).让我们假装所讨论的文件称为fileA.nc 现在,使用python3,我正在尝试阅读fileA.nc: from netCDF4 import Dataset url ='https://.file.core.windows.net//fileA.nc'; dataset = Dataset(url) print(dataset.variables.keys()) 上面的代码不起作用,而是给我以下错误: trackback(最近的最新通话):文件" yadayadayada/test.py",line 8,in dataset = dataset(url)文件" netcdf4/_netcdf4.pyx",第1848行,在netcdf4._netcdf4.dataset中 OSE
20 2024-03-24
编程技术问答社区
在网格化的netCDF文件中,计算选定区域的变量平均值
假设我们有TRMM沉淀数据,每个文件代表每个月的数据.例如,文件夹中的文件为: 3B42.1998.01.01.7A.nc, 3B42.1998.02.01.7A.nc, 3B42.1998.03.01.7A.nc, 3B42.1998.04.01.7A.nc, 3B42.1998.05.01.7A.nc, ...... ...... 3B42.2010.11.01.7A.nc, 3B42.2010.12.01.7A.nc. 这些文件具有如下:xSize = 1440,ysize = 400,zsize = 1,tsize = 1.经度设置为0至360,纬度设置为-50至50. 我想计算特定区域上的降水量,在lon=98.5, lon=100 and lat=4, lat=6.5之间说.这意味着仅读取该区域中的变量 - -------------------
10 2024-03-21
编程技术问答社区
如何在MATLAB中匹配netCDF变量' 数组中的数值
我是MATLAB和NETCDF文件的新手,我认为我陷入了一个简单的问题. 我有一个带有5个变量的NetCDF文件:纬度,经度,时间,风,MP2 我想在txt文件中提取以下格式的数据: latitude longitude time wind mp2 value value value value value value value value value value ''' value value value value value 到现在为止 wind = ncread(filename, 'wind') long = ncread(filename, 'long') ... 但是如何使用上述格式提取数组/文件? 解决方案 我假设经度,纬度和时间是NX,NY和NTIME元素的向量. 这是用Python的一个参数(例如风)的初始解决方案.添加另一个参数应该相对容易.脚本的第一部分只是生成
26 2024-03-06
编程技术问答社区
多维数组进入数据框架
R中的以下问题对你们中的许多人来说似乎很容易,但是由于我相对较新,因此如果您能为我提供帮助,那将非常有帮助.我想从本质上写一个多维(3个昏暗)数组作为我可以更容易操纵的数据框架. 我正在使用01/01/1891-01/12/2015的NETCDF每月海面温度(SST)数据文件.从文件中提取SST变量(使用NCDF4软件包)会导致多维阵列(经度= 360,纬度= 180,Time = 1992)(基本上是全局地图层,在整个时间向量上堆叠,也包括NA值 - 在陆地上也包括NA值温度). 我想拥有的是一个数据框架,其中第一列是经度,第二个纬度,第三次,第四sst值.我的问题是尺寸的长度并不相同,我看不出如何使R理解它需要正确堆叠数据. 我想要的样子的一个例子: Longitude Latitude Time SST 0,5 89.5 01/01/1891 1.25 0.5 89 01/01/1891 1
14 2024-03-06
编程技术问答社区
在Java中写一个浮动数组到文件
我正在阅读NetCDF文件中,我想在每个数组中以浮动数组的形式读取,然后将float数组写入新文件.如果我在float数组中阅读,然后在数组中的每个元素上迭代(使用dataoutputstream),我可以使它起作用,但这非常非常慢,我的netcdf文件超过1GB. . 我尝试使用ObjectOutputStream,但这写了额外的信息. 所以,回顾. 1.打开NetCDF文件 2.从NETCDF文件读取float Array x 3.在一个步骤中将float Array x写入原始数据文件 4.用x+1 重复步骤2 解决方案 好吧,您有1 GB可以阅读,要写1 GB.根据您的硬盘驱动器,您可能会得到约100 MB/s的读数和60 MB/s的写入速度.这意味着读写大约需要27秒. 您的驱动器速度是多少?您看到的速度慢? 如果要测试磁盘的速度而无需处理任何处理,则需要多长时间复制您最近尚未访问的文件(即它不在磁盘缓存中),这将使您了解您可以期望读取的最小延迟,然
16 2024-03-05
编程技术问答社区
VTK-如何使用vtkNetCDFCFReader读取特定时间段的数组或变量数组
IM试图在特定的时间范围内加载数组(例如,如果它具有50帧或时间单元,则可以从NetCDF文件(.NC)中获取与第二个时间框架相对应的数组).我目前正在使用vtknetcdfcfreader并从这样的第一个时间范围中获取数据阵列" vwnd": vtkSmartPointer reader = vtkSmartPointer::New(); reader->SetFileName(path.c_str()); reader->UpdateMetaData(); vtkSmartPointer geometryFilter = vtkSmartPointer::New(); geometryFilter->SetInputConnection(reader->GetOutput
40 2023-11-25
编程技术问答社区
Visual Studio-制作项目-添加NetCDF
我有一个可以在Linux中编译的项目,但也希望在Windows环境中进行编译,即Visual Studio. 我安装了NetCDF,但是当我使用Cmake构建时,我会得到此错误: Could NOT find PkgConfig (missing: PKG_CONFIG_EXECUTABLE) 1> -- Checking for one of the modules 'netcdf' 1> CMake Error at C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/Common7/IDE/CommonExtensions/Microsoft/CMake/CMake/share/cmake-3.11/Modules/FindPkgConfig.cmake:641 (message): 1> None of the required 'netcdf' found 任何想法如何让Visual
18 2023-11-24
编程技术问答社区
在NetCDF中确定HDF5变量的签名状态
我的团队已获得HDF5文件以阅读.它们包含带有未签名变量的结构化数据.我和我的团队很高兴找到NetCDF库,该库允许使用NetCDF数据模型对HDF5文件进行纯java读取. 没问题---我们认为我们只是将NETCDF数据模型转换为我们想要的任何模型.只要我们将数据删除.然后,我们尝试从HDF5文件读取未签名的32位整数.我们可以加载HDFVIEW 2.9,并看到该变量是一个未签名的32位整数.但是...事实证明,为了增加对伤害的侮辱,NetCDF-3建议您"扩大数据类型"或使用_Unsigned = "true"属性(我没有弥补)表示应将32位视为无符号值. 好吧,如果我从头开始创建netcdf数据,那些kludges可能会有效,但是如何使用netcdf检测到现有HDF5文件中的32位值应解释为未签名? 更新:显然 NetCDF-4确实支持未签名的数据类型.因此,这就提出了一个问题:我如何确定是从NetCDF Java库签名还是未签名的值? 解决方案 是的,您可以
24 2023-11-09
编程技术问答社区
如何将 netcdf4-python 安装到 ubuntu14.04 上?
我想将netcdf4-python安装到我的ubuntu14.04. LIBHDF5-DEV_1.11_1_5UBUNTU7_AMD64.DEB和LIBNETCDF-4.1.3-7UBUNTU2_AMD64.DEB已安装.我从 https://pypi.python.org/pypi/pypi/pypi/netcdf4#downloads 进行配置 ./configure --enable-netcdf-4 –with-hdf5=/usr/include/ --enable-share –prefix=/usr 但是我收到以下消息: bash: ./configure: No such file or directory 我不知道如何安装NetCDF4-Python. 如果有人帮助我,我会很感激. 解决方案 我强烈建议使用 anaconda python分布.完整的Anaconda分发包括NetCDF4和所需的库. 其他解决方案 Ubuntu的说明是 hd
72 2023-11-02
编程技术问答社区
在R软件中转换为TEXT数据的NETCDF代码
我有三个来自三个MSWEP的NetCDF文件,我想将其转换为可读的文本数据.谁能指导我? 解决方案 我不完全确定您所需的输出和期望,但让我拍摄. 我从您可以使用例如terra软件包: library(terra) #> terra 1.5.21 nc_data daily data, 0.25° resolution, WGS 84 nc_data #> class : SpatRaster #> dimensions : 400, 1440, 365 (nrow, ncol, nlyr) #> resolution : 0.25, 0.25 (x, y) #> extent : -180, 180, -50, 50 (xmin, xmax, ymin, yma
40 2023-10-18
编程技术问答社区
用Python将NetCDF文件转换为CSV或文本
我正在尝试使用Python将NetCDF文件转换为CSV或文本文件.我读过/a>,但我仍然错过了一步(我是Python的新手).这是一个数据集,包括纬度,经度,时间和降水数据. 到目前为止,这是我的代码: import netCDF4 import pandas as pd precip_nc_file = 'file_path' nc = netCDF4.Dataset(precip_nc_file, mode='r') nc.variables.keys() lat = nc.variables['lat'][:] lon = nc.variables['lon'][:] time_var = nc.variables['time'] dtime = netCDF4.num2date(time_var[:],time_var.units) precip = nc.variables['precip'][:] 我不确定如何从这里进行,尽管我知道这是用pandas创
84 2023-10-18
编程技术问答社区
如何在R中使用纬度/经度边界从netCDF文件中获取一个子集
我有一个我希望从纬度/经度边界定义的子集(即lat/long定义的框)中提取子集的NetCDF文件,使用R. 中的" ncdf"软件包. 我的netcdf文件的摘要如下.它具有两个维度(纬度和经度)和1个变量(10U_GDS4_SFC).它本质上是一个包含风值的LAT/长网格: [1] "file example.nc has 2 dimensions:" [1] "lat_0 Size: 1280" [1] "lon_1 Size: 2560" [1] "------------------------" [1] "file example.nc has 1 variables:" [1] "float 10U_GDS4_SFC[lon_1,lat_0] Longname:10 metre U wind component Missval:1e+30" 纬度变量从+90到-90,经度变量运行的形式为0至360. 我希望使用以下地理角边界提取整体网格的子集:
62 2023-10-05
编程技术问答社区
如何改变NetCDF中的经度范围
我的NetCDF文件具有4个维度(经度,纬度,时间,水平压力)和几个变量. 我想替换[340 342 344 ... 360 0 2 4 ... 18 20]的经度数据,作者[-20 -18 -16 ... -2 0 2 4 ... 18 20 20 ].实际上,经度从0°到360°,但我需要从-180°到180°. 我在互联网上找到了一些想法,但我不知道如何应用它们. 在这里解释: "某些NETCDF文件包含严格的正值[0,360],这些值与GDAL/QGIS处理经度值不兼容 - 它们不围绕DateLine.这也会导致GDALWARP和与其他数据集合时(与其他数据集)( [-180,180]值),由于经度的偏移180度,它们无法正确对齐. 简单的修复是测试经度变量,并通过减去IREADBLOCK和SRS检测中的180个间隔中[180,360]间隔中的任何值转换为[-180,180]." ." . 我还读过有关" GDAL-Translate"的信息,
28 2023-10-03
编程技术问答社区