gdal 的 NetCDF 多维数组问题

问题描述 投票:0回答:0

我正在尝试从 NetCDF 多维数组文件中读取和/或提取深度级别,似乎无法使用 gdal 工具查询这些深度(例如

gdalmdimtranslate
)。查看 gdal.org 网站后,我在 NetCDF 驱动程序部分 (https://gdal.org/drivers/raster/netcdf.html) 下找到了这个部分:

维度 NetCDF 驱动程序假定数据遵循 UNIDATA 的 CF-1 约定。NetCDF 文件中的维度使用以下规则:(Z,Y,X)。 如果有超过 3 个维度,驱动程序会将它们合并到带中。例如,如果您有一个类型为 (P、T、Y、X) 的 4 维数组。驱动程序将乘以最后 2 个维度 (P*T)。 驱动程序将按以下顺序显示波段。它将首先递增 T,然后递增 P。元数据将显示在每个带对应的 T 和 P 值上。

*.nc 文件有几个带 4 维数组(变量、深度、经度、纬度)的波段。我不确定为什么 gdal 不能识别深度级别,这是与上述解释相关的元数据问题吗? gdal 调用抛出以下错误消息:

ERROR 1: Subset specification results in an empty set
使用两个调用:

gdalmdimtranslate myncfile.nc out.nc -subset 'depth(5727.917)' -array talk
gdalmdimtranslate myncfile.nc out.nc -subset 'depth(5727.91699)' -array talk

使用

gdalmdiminfo
我得到:

{
  "type": "array",
  "name": "depth",
  "datatype": "Float32",
  "dimensions": [
    {
      "name": "depth",
      "full_name": "/depth",
      "size": 50,
      "type": "VERTICAL",
      "direction": "DOWN",
      "indexing_variable": "/depth"
    }
  ],
  "dimension_size": [
    50
  ],
  "attributes": {
    "units": {
      "datatype": "String",
      "value": "m"
    },
    "positive": {
      "datatype": "String",
      "value": "down"
    },
    "unit_long": {
      "datatype": "String",
      "value": "Meters"
    },
    "long_name": {
      "datatype": "String",
      "value": "Depth"
    },
    "standard_name": {
      "datatype": "String",
      "value": "depth"
    },
    "axis": {
      "datatype": "String",
      "value": "Z"
    },
    "_ChunkSizes": {
      "datatype": "Int32",
      "value": 50
    },
    "_CoordinateAxisType": {
      "datatype": "String",
      "value": "Height"
    },
    "_CoordinateZisPositive": {
      "datatype": "String",
      "value": "down"
    },
    "valid_min": {
      "datatype": "Float32",
      "value": 0.494024992
    },
    "valid_max": {
      "datatype": "Float32",
      "value": 5727.91699
    }
  },
  "unit": "m",
  "values": [0.494024992, 1.54137504, 2.64566898, 3.81949496, 5.07822418, 6.44061422, 7.92956018, 9.57299709, 11.4049997, 13.4671402, 15.81007, 18.4955597, 21.5988197, 25.2114105, 29.4447308, 34.4341507, 40.3440514, 47.3736916, 55.7642899, 65.8072662, 77.8538513, 92.3260727, 109.729301, 130.666, 155.850693, 186.125595, 222.475204, 266.040314, 318.127411, 380.213013, 453.937714, 541.088928, 643.566772, 763.33313, 902.339294, 1062.43994, 1245.29102, 1452.25098, 1684.28406, 1941.89294, 2225.07788, 2533.33594, 2865.70288, 3220.82007, 3597.03198, 3992.48389, 4405.22412, 4833.29102, 5274.78418, 5727.91699]
}

使用

ncdump
我得到:

...
data:

 depth = 0.494025, 1.541375, 2.645669, 3.819495, 5.078224, 6.440614, 7.92956,
    9.572997, 11.405, 13.46714, 15.81007, 18.49556, 21.59882, 25.21141,
    29.44473, 34.43415, 40.34405, 47.37369, 55.76429, 65.80727, 77.85385,
    92.32607, 109.7293, 130.666, 155.8507, 186.1256, 222.4752, 266.0403,
    318.1274, 380.213, 453.9377, 541.0889, 643.5668, 763.3331, 902.3393,
    1062.44, 1245.291, 1452.251, 1684.284, 1941.893, 2225.078, 2533.336,
    2865.703, 3220.82, 3597.032, 3992.484, 4405.224, 4833.291, 5274.784,
    5727.917 ;
...

测试的示例文件在这里:https://file.io/n8M7J8BLiVsv

欢迎任何指点,

linux bash netcdf gdal
© www.soinside.com 2019 - 2024. All rights reserved.