Trying to read a HDF-EOS5 file from EarthData Search using stars doesn't work.
The file is from the collection named:
OMI/Aura NO2 Total and Tropospheric Column Daily L2 Global Gridded 0.25 degree x 0.25 degree V3 (OMNO2G) at GES DISC
File format is:
HDF-EOS5

Here is a reproducible example where read_stars and read_ncdf raise errors:
library(stars)
filename = tempfile(fileext = ".he5")
url = "https://www.dropbox.com/s/obqq7d3t365ejdt/OMI-Aura_L2G-OMNO2G_2005m0208_v003-2019m1120t201951.he5?dl=1"
download.file(url, filename)
r = read_stars(filename)
## //HDFEOS/GRIDS/ColumnAmountNO2/Data_Fields/CloudFraction, trying to read file: HDF5:"/tmp/RtmpsNIbkN/filed4931bcc51c.he5"://HDFEOS/GRIDS/ColumnAmountNO2/Data_Fields/CloudFraction
## Error in CPL_read_gdal(as.character(x), as.character(options), as.character(driver), :
## file not found
r = read_ncdf(filename)
## Error: `distinct()` must use existing variables.
## ✖ `id` not found in `.data`.
## ✖ `name` not found in `.data`.
## ✖ `type` not found in `.data`.
## ✖ `ndims` not found in `.data`.
## ✖ `natts` not found in `.data`.
## Run `rlang::last_error()` to see where the error occurred.
With raster reading does work, thought there may be other issues as there are multiple warnings:
library(raster)
r = brick(filename)
## Loading required namespace: ncdf4
## [1] "vobjtovarid4: **** WARNING **** I was asked to get a varid for dimension named Data Fields/phony_dim_2 BUT this dimension HAS NO DIMVAR! Code will probably fail at this point"
## [1] "vobjtovarid4: **** WARNING **** I was asked to get a varid for dimension named Data Fields/phony_dim_1 BUT this dimension HAS NO DIMVAR! Code will probably fail at this point"
## [1] "vobjtovarid4: **** WARNING **** I was asked to get a varid for dimension named Data Fields/phony_dim_0 BUT this dimension HAS NO DIMVAR! Code will probably fail at this point"
## Warning message:
## In .varName(nc, varname, warn = warn) :
## varname used is: Data Fields/CloudFraction
## If that is not correct, you can set it to one of: Data Fields/CloudFraction, Data Fields/CloudFractionStd, Data Fields/CloudPressure, Data Fields/CloudPressureStd, Data Fields/CloudRadianceFraction, Data Fields/ColumnAmountNO2, Data Fields/ColumnAmountNO2Std, Data Fields/ColumnAmountNO2Strat, Data Fields/ColumnAmountNO2StratStd, Data Fields/ColumnAmountNO2Trop, Data Fields/ColumnAmountNO2TropStd, Data Fields/GroundPixelQualityFlags, Data Fields/InstrumentConfigurationId, Data Fields/Latitude, Data Fields/LineNumber, Data Fields/Longitude, Data Fields/MeasurementQualityFlags, Data Fields/OrbitNumber, Data Fields/PathLength, Data Fields/SceneNumber, Data Fields/SlantColumnAmountNO2, Data Fields/SlantColumnAmountNO2Destriped, Data Fields/SlantColumnAmountNO2Std, Data Fields/SolarAzimuthAngle, Data Fields/SolarZenithAngle, Data Fields/SpacecraftAltitude, Data Fields/SpacecraftLatitude, Data Fields/SpacecraftLongitude, Data Fields/TerrainPressure, [... truncated]
r
## class : RasterBrick
## dimensions : 720, 1440, 1036800, 15 (nrow, ncol, ncell, nlayers)
## resolution : 1, 1 (x, y)
## extent : 0.5, 1440.5, 0.5, 720.5 (xmin, xmax, ymin, ymax)
## crs : NA
## source : /tmp/RtmpsNIbkN/filed4931bcc51c.he5
## names : X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13, X14, X15
## Data Fields/phony_dim_0 (): 1, 15 (min, max)
## varname : Data Fields/CloudFraction
plot(r)

Thank you in advance for any help or advice.
It breaks somehow on the subdatasets; you may want to try
r = read_stars(gdal_subdatasets(filename)[[1]])
I need to take a closer look why this breaks.
Will try using this approach, thanks!
This broke because the dataset is recognized as having driver HDF5, then the subdatasets cannot be read with this driver but need driver HDF5Image. I now switched off passing through dataset driver to subdataset reading when the first is HDF5.
Next, it will break reading the entire dataset (that is what you ask, that is not what brick does however, brick always ignores everything beyond the first subdataset) because the subdatasets do not all have the same dimension: many have 3, some have 2:
> sd = gdal_subdatasets("x.he5")
> read_stars(sd[[18]]) %>% dim()
x y
1440 720
> read_stars(sd[[1]]) %>% dim()
x y band
1440 720 15
You can e.g. read the first 10 attributes using the sub argument:
> r = read_stars("x.he5", sub = 1:10)
//HDFEOS/GRIDS/ColumnAmountNO2/Data_Fields/CloudFraction, //HDFEOS/GRIDS/ColumnAmountNO2/Data_Fields/CloudFractionStd, //HDFEOS/GRIDS/ColumnAmountNO2/Data_Fields/CloudPressure, //HDFEOS/GRIDS/ColumnAmountNO2/Data_Fields/CloudPressureStd, //HDFEOS/GRIDS/ColumnAmountNO2/Data_Fields/CloudRadianceFraction, //HDFEOS/GRIDS/ColumnAmountNO2/Data_Fields/ColumnAmountNO2, //HDFEOS/GRIDS/ColumnAmountNO2/Data_Fields/ColumnAmountNO2Std, //HDFEOS/GRIDS/ColumnAmountNO2/Data_Fields/ColumnAmountNO2Strat, //HDFEOS/GRIDS/ColumnAmountNO2/Data_Fields/ColumnAmountNO2StratStd, //HDFEOS/GRIDS/ColumnAmountNO2/Data_Fields/ColumnAmountNO2Trop,
//HDFEOS/GRIDS/ColumnAmountNO2/Data_Fields/CloudFraction, //HDFEOS/GRIDS/ColumnAmountNO2/Data_Fields/CloudFractionStd, //HDFEOS/GRIDS/ColumnAmountNO2/Data_Fields/CloudPressure, //HDFEOS/GRIDS/ColumnAmountNO2/Data_Fields/CloudPressureStd, //HDFEOS/GRIDS/ColumnAmountNO2/Data_Fields/CloudRadianceFraction, //HDFEOS/GRIDS/ColumnAmountNO2/Data_Fields/ColumnAmountNO2, //HDFEOS/GRIDS/ColumnAmountNO2/Data_Fields/ColumnAmountNO2Std, //HDFEOS/GRIDS/ColumnAmountNO2/Data_Fields/ColumnAmountNO2Strat, //HDFEOS/GRIDS/ColumnAmountNO2/Data_Fields/ColumnAmountNO2StratStd, //HDFEOS/GRIDS/ColumnAmountNO2/Data_Fields/ColumnAmountNO2Trop,
> dim(r)
x y band
1440 720 15
> length(r)
[1] 10
I understand, thank you very much! Also it's good to know that brick works that way.
For reference, here is code that seems to read the data I needed.
(By the way, is there a method to rasterize average point values? My approach below is to run st_rasterize twice to get sum and count, then divide the two to get the average)
# remotes::install_github("r-spatial/stars")
library(stars)
library(rnaturalearth)
# Read
filename = tempfile(fileext = ".he5")
url = "https://www.dropbox.com/s/obqq7d3t365ejdt/OMI-Aura_L2G-OMNO2G_2005m0208_v003-2019m1120t201951.he5?dl=1"
download.file(url, filename)
r = read_stars(
filename,
sub = "//HDFEOS/GRIDS/ColumnAmountNO2/Data_Fields/ColumnAmountNO2",
curvilinear = c(
"//HDFEOS/GRIDS/ColumnAmountNO2/Data_Fields/Longitude",
"//HDFEOS/GRIDS/ColumnAmountNO2/Data_Fields/Latitude"
)
)
# To 'data.frame'
dat = as.data.frame(r)
dat = dat[complete.cases(dat), ]
head(dat)
## x y band ColumnAmountNO2
## 1448 -178.115 -89.608 1 4.984e+15
## 1458 -175.588 -89.648 1 5.041e+15
## 1473 -171.784 -89.590 1 4.942e+15
## 1481 -169.772 -89.563 1 5.019e+15
## 1485 -168.847 -89.697 1 4.906e+15
## 1496 -166.064 -89.710 1 4.973e+15
tail(dat)
## x y band ColumnAmountNO2
## 226067388 -93.160 -82.115 15 4.957e+15
## 226091284 120.952 -78.136 15 5.861e+15
## 226091383 145.673 -78.138 15 6.119e+15
## 226096218 -85.638 -77.155 15 4.761e+15
## 227096868 -123.033 -83.251 15 4.680e+15
## 228133668 -123.039 -83.458 15 4.717e+15
# To points
dat = st_as_sf(dat, coords = c("x", "y"), crs = 4326)
dat$w = 1
# To Raster, average of ~15 orbits on 0.25*0.25 grid
bb = st_bbox(c(xmin = -180, xmax = 180, ymin = -90, ymax = 90), crs = 4326)
grid = st_as_stars(bb, dx = 0.25, dy = 0.25)
r_sum = st_rasterize(
sf = dat[, "ColumnAmountNO2"],
template = grid,
options = "MERGE_ALG=ADD"
)
r_count = st_rasterize(
sf = dat[, "w"],
template = grid,
options = "MERGE_ALG=ADD"
)
r_sum[r_count == 0] = NA
r_count[r_count == 0] = NA
r = r_sum / r_count
# Plot
world = ne_countries(scale = "small", returnclass = "sf")
world = st_geometry(world)
plot(world, border = NA, axes = TRUE)
plot(r, col = rev(hcl.colors(11, "Spectral")), reset = FALSE, add = TRUE)
plot(world, add = TRUE)

Impressive! This is a pretty crazy dataset, since the grid is aligned with long/lat you wouldn't have to treat it as a curvilinear grid. Then, the curvilinear dimensions (latitude/longitude) are repeated for every band (why?).
I can see that for instance an aggregate method would be convenient that would do this; here, you're simply going from a 1/8 degree to a 1/4 degree grid, but taking a very expensive path (throwing away the grid organisation). Part of the problem seems the absurd format (or in ability of GDAL to properly read it?)
Thanks! Yes, this dataset is very strange... The documentation says it's a 0.25*0.25 global grid, which is in agreement with the dimensions:
dim(r)
## x y band
## 1440 720 15
bb = st_bbox(c(xmin = -180, xmax = 180, ymin = -90, ymax = 90), crs = 4326)
grid = st_as_stars(bb, dx = 0.25, dy = 0.25)
dim(grid)
## x y
## 1440 720
However, the bands don't share exactly the same lon/lat values:
lon = read_stars("OMI-Aura_L2G-OMNO2G_2005m0208_v003-2019m1120t201951.he5", sub = 16) ## Longitude
lon[[1]][92,92,]
## [1] -157.009 -157.164 -157.157 NA NA NA NA NA NA
## [10] NA NA NA NA NA NA
Although plotting the data seems like the differences are small:

So to be safe I treated it as a point layer and aggregated to a new raster.
Thanks for the idea to use aggregate, I'll look into it!
Ah, yes - 0.25. aggregate now only works if you'd go all the way sf.
We now read "what we can", with a warning that subdataset 18 is omitted:
library(stars)
# Loading required package: abind
# Loading required package: sf
# Linking to GEOS 3.8.0, GDAL 3.0.4, PROJ 7.0.0
read_stars("x.he5")
# //HDFEOS/GRIDS/ColumnAmountNO2/Data_Fields/CloudFraction, //HDFEOS/GRIDS/ColumnAmountNO2/Data_Fields/CloudFractionStd, //HDFEOS/GRIDS/ColumnAmountNO2/Data_Fields/CloudPressure, //HDFEOS/GRIDS/ColumnAmountNO2/Data_Fields/CloudPressureStd, //HDFEOS/GRIDS/ColumnAmountNO2/Data_Fields/CloudRadianceFraction, //HDFEOS/GRIDS/ColumnAmountNO2/Data_Fields/ColumnAmountNO2, //HDFEOS/GRIDS/ColumnAmountNO2/Data_Fields/ColumnAmountNO2Std, //HDFEOS/GRIDS/ColumnAmountNO2/Data_Fields/ColumnAmountNO2Strat, //HDFEOS/GRIDS/ColumnAmountNO2/Data_Fields/ColumnAmountNO2StratStd, //HDFEOS/GRIDS/ColumnAmountNO2/Data_Fields/ColumnAmountNO2Trop, //HDFEOS/GRIDS/ColumnAmountNO2/Data_Fields/ColumnAmountNO2TropStd, //HDFEOS/GRIDS/ColumnAmountNO2/Data_Fields/GroundPixelQualityFlags, //HDFEOS/GRIDS/ColumnAmountNO2/Data_Fields/InstrumentConfigurationId, //HDFEOS/GRIDS/ColumnAmountNO2/Data_Fields/Latitude, //HDFEOS/GRIDS/ColumnAmountNO2/Data_Fields/LineNumber, //HDFEOS/GRIDS/ColumnAmountNO2/Data_Fields/Longitude, //HDFEOS/GRIDS/ColumnAmountNO2/Data_Fields/MeasurementQualityFlags, //HDFEOS/GRIDS/ColumnAmountNO2/Data_Fields/NumberOfCandidateScenes, //HDFEOS/GRIDS/ColumnAmountNO2/Data_Fields/OrbitNumber, //HDFEOS/GRIDS/ColumnAmountNO2/Data_Fields/PathLength, //HDFEOS/GRIDS/ColumnAmountNO2/Data_Fields/SceneNumber, //HDFEOS/GRIDS/ColumnAmountNO2/Data_Fields/SlantColumnAmountNO2, //HDFEOS/GRIDS/ColumnAmountNO2/Data_Fields/SlantColumnAmountNO2Destriped, //HDFEOS/GRIDS/ColumnAmountNO2/Data_Fields/SlantColumnAmountNO2Std, //HDFEOS/GRIDS/ColumnAmountNO2/Data_Fields/SolarAzimuthAngle, //HDFEOS/GRIDS/ColumnAmountNO2/Data_Fields/SolarZenithAngle, //HDFEOS/GRIDS/ColumnAmountNO2/Data_Fields/SpacecraftAltitude, //HDFEOS/GRIDS/ColumnAmountNO2/Data_Fields/SpacecraftLatitude, //HDFEOS/GRIDS/ColumnAmountNO2/Data_Fields/SpacecraftLongitude, //HDFEOS/GRIDS/ColumnAmountNO2/Data_Fields/TerrainPressure, //HDFEOS/GRIDS/ColumnAmountNO2/Data_Fields/TerrainReflectivity, //HDFEOS/GRIDS/ColumnAmountNO2/Data_Fields/Time, //HDFEOS/GRIDS/ColumnAmountNO2/Data_Fields/TropopausePressure, //HDFEOS/GRIDS/ColumnAmountNO2/Data_Fields/VcdQualityFlags, //HDFEOS/GRIDS/ColumnAmountNO2/Data_Fields/ViewingAzimuthAngle, //HDFEOS/GRIDS/ColumnAmountNO2/Data_Fields/ViewingZenithAngle, //HDFEOS/GRIDS/ColumnAmountNO2/Data_Fields/XTrackQualityFlags,
# stars object with 3 dimensions and 36 attributes
# attribute(s), summary of first 1e+05 cells:
# //HDFEOS/GRIDS/ColumnAmountNO2/Data_Fields/CloudFraction
# Min. :0.00
# 1st Qu.:0.00
# Median :0.00
# Mean :0.07
# 3rd Qu.:0.00
# Max. :1.00
# NA's :28776
# //HDFEOS/GRIDS/ColumnAmountNO2/Data_Fields/CloudFractionStd
# Min. :0.000
# 1st Qu.:0.006
# Median :0.009
# Mean :0.009
# 3rd Qu.:0.012
# Max. :0.133
# NA's :28776
# //HDFEOS/GRIDS/ColumnAmountNO2/Data_Fields/CloudPressure
# Min. : 100.0
# 1st Qu.: 661.0
# Median : 734.0
# Mean : 760.6
# 3rd Qu.: 850.0
# Max. :1002.0
# NA's :28776
# //HDFEOS/GRIDS/ColumnAmountNO2/Data_Fields/CloudPressureStd
# Min. : 0.000
# 1st Qu.: 5.000
# Median : 7.000
# Mean : 9.647
# 3rd Qu.: 10.000
# Max. :201.000
# NA's :28776
# //HDFEOS/GRIDS/ColumnAmountNO2/Data_Fields/CloudRadianceFraction
# Min. : 0.00
# 1st Qu.: 0.00
# Median : 0.00
# Mean : 81.76
# 3rd Qu.: 0.00
# Max. :1000.00
# NA's :28776
# //HDFEOS/GRIDS/ColumnAmountNO2/Data_Fields/ColumnAmountNO2
# Min. :5.040e+14
# 1st Qu.:4.704e+15
# Median :4.950e+15
# Mean :4.967e+15
# 3rd Qu.:5.200e+15
# Max. :8.887e+15
# NA's :28776
# //HDFEOS/GRIDS/ColumnAmountNO2/Data_Fields/ColumnAmountNO2Std
# Min. :1.170e+14
# 1st Qu.:1.860e+14
# Median :2.150e+14
# Mean :2.253e+14
# 3rd Qu.:2.490e+14
# Max. :1.609e+15
# NA's :28776
# //HDFEOS/GRIDS/ColumnAmountNO2/Data_Fields/ColumnAmountNO2Strat
# Min. :3.996e+15
# 1st Qu.:4.713e+15
# Median :4.932e+15
# Mean :4.940e+15
# 3rd Qu.:5.149e+15
# Max. :5.985e+15
# NA's :28776
# //HDFEOS/GRIDS/ColumnAmountNO2/Data_Fields/ColumnAmountNO2StratStd
# Min. :2e+14
# 1st Qu.:2e+14
# Median :2e+14
# Mean :2e+14
# 3rd Qu.:2e+14
# Max. :2e+14
# NA's :28776
# //HDFEOS/GRIDS/ColumnAmountNO2/Data_Fields/ColumnAmountNO2Trop
# Min. :-4.014e+15
# 1st Qu.:-6.100e+13
# Median : 1.600e+13
# Mean : 2.667e+13
# 3rd Qu.: 9.700e+13
# Max. : 3.566e+15
# NA's :28776
# //HDFEOS/GRIDS/ColumnAmountNO2/Data_Fields/ColumnAmountNO2TropStd
# Min. :2.130e+14
# 1st Qu.:2.720e+14
# Median :2.950e+14
# Mean :3.097e+14
# 3rd Qu.:3.270e+14
# Max. :1.693e+15
# NA's :28776
# //HDFEOS/GRIDS/ColumnAmountNO2/Data_Fields/GroundPixelQualityFlags
# Min. : 2566
# 1st Qu.:25857
# Median :25857
# Mean :37661
# 3rd Qu.:65535
# Max. :65535
#
# //HDFEOS/GRIDS/ColumnAmountNO2/Data_Fields/InstrumentConfigurationId
# Min. : 1.00
# 1st Qu.: 1.00
# Median : 2.00
# Mean : 74.46
# 3rd Qu.:255.00
# Max. :255.00
#
# //HDFEOS/GRIDS/ColumnAmountNO2/Data_Fields/Latitude
# Min. :-89.72
# 1st Qu.:-83.24
# Median :-79.73
# Mean :-79.90
# 3rd Qu.:-76.31
# Max. :-72.50
# NA's :28776
# //HDFEOS/GRIDS/ColumnAmountNO2/Data_Fields/LineNumber
# Min. : 75.0
# 1st Qu.:174.0
# Median :218.0
# Mean :218.2
# 3rd Qu.:265.0
# Max. :334.0
# NA's :28776
# //HDFEOS/GRIDS/ColumnAmountNO2/Data_Fields/Longitude
# Min. :-180.00
# 1st Qu.: -95.29
# Median : -10.74
# Mean : -4.47
# 3rd Qu.: 87.75
# Max. : 180.00
# NA's :28776
# //HDFEOS/GRIDS/ColumnAmountNO2/Data_Fields/MeasurementQualityFlags
# Min. : 0.00
# 1st Qu.: 0.00
# Median : 0.00
# Mean : 73.38
# 3rd Qu.:255.00
# Max. :255.00
#
# //HDFEOS/GRIDS/ColumnAmountNO2/Data_Fields/OrbitNumber
# Min. :3025
# 1st Qu.:3026
# Median :3029
# Mean :3030
# 3rd Qu.:3035
# Max. :3039
# NA's :28776
# //HDFEOS/GRIDS/ColumnAmountNO2/Data_Fields/PathLength
# Min. :3.000e+00
# 1st Qu.:4.000e+00
# Median :6.000e+00
# Mean :3.648e+29
# 3rd Qu.:1.268e+30
# Max. :1.268e+30
#
# //HDFEOS/GRIDS/ColumnAmountNO2/Data_Fields/SceneNumber
# Min. : 1.00
# 1st Qu.:11.00
# Median :22.00
# Mean :23.83
# 3rd Qu.:35.00
# Max. :57.00
# NA's :28776
# //HDFEOS/GRIDS/ColumnAmountNO2/Data_Fields/SlantColumnAmountNO2
# Min. :1.832e+15
# 1st Qu.:1.824e+16
# Median :2.306e+16
# Mean :2.595e+16
# 3rd Qu.:3.037e+16
# Max. :7.370e+16
# NA's :28776
# //HDFEOS/GRIDS/ColumnAmountNO2/Data_Fields/SlantColumnAmountNO2Destriped
# Min. :1.470e+15
# 1st Qu.:1.825e+16
# Median :2.309e+16
# Mean :2.596e+16
# 3rd Qu.:3.040e+16
# Max. :7.434e+16
# NA's :28776
# //HDFEOS/GRIDS/ColumnAmountNO2/Data_Fields/SlantColumnAmountNO2Std
# Min. :3.440e+14
# 1st Qu.:7.150e+14
# Median :8.530e+14
# Mean :8.750e+14
# 3rd Qu.:1.006e+15
# Max. :3.419e+15
# NA's :28776
# //HDFEOS/GRIDS/ColumnAmountNO2/Data_Fields/SolarAzimuthAngle
# Min. :-179.99
# 1st Qu.:-112.19
# Median : -72.08
# Mean : -66.13
# 3rd Qu.: -46.03
# Max. : 179.98
# NA's :28776
# //HDFEOS/GRIDS/ColumnAmountNO2/Data_Fields/SolarZenithAngle
# Min. :57.76
# 1st Qu.:68.53
# Median :73.67
# Mean :73.61
# 3rd Qu.:78.64
# Max. :86.00
# NA's :28776
# //HDFEOS/GRIDS/ColumnAmountNO2/Data_Fields/SpacecraftAltitude
# Min. :729248
# 1st Qu.:730862
# Median :731333
# Mean :731152
# 3rd Qu.:731513
# Max. :731893
# NA's :28776
# //HDFEOS/GRIDS/ColumnAmountNO2/Data_Fields/SpacecraftLatitude
# Min. :-81.85
# 1st Qu.:-81.40
# Median :-79.96
# Mean :-78.94
# 3rd Qu.:-77.05
# Max. :-70.22
# NA's :28776
# //HDFEOS/GRIDS/ColumnAmountNO2/Data_Fields/SpacecraftLongitude
# Min. :-179.94
# 1st Qu.:-107.01
# Median : -27.04
# Mean : -12.57
# 3rd Qu.: 84.41
# Max. : 179.85
# NA's :28776
# //HDFEOS/GRIDS/ColumnAmountNO2/Data_Fields/TerrainPressure
# Min. : 574.0
# 1st Qu.: 665.0
# Median : 751.0
# Mean : 785.9
# 3rd Qu.: 939.0
# Max. :1021.0
# NA's :28776
# //HDFEOS/GRIDS/ColumnAmountNO2/Data_Fields/TerrainReflectivity
# Min. :0.026
# 1st Qu.:0.824
# Median :0.892
# Mean :0.753
# 3rd Qu.:0.922
# Max. :1.000
# NA's :28776
# //HDFEOS/GRIDS/ColumnAmountNO2/Data_Fields/Time
# Min. :381975002
# 1st Qu.:381981364
# Median :381999175
# Mean :382006561
# 3rd Qu.:382034558
# Max. :382058580
# NA's :28776
# //HDFEOS/GRIDS/ColumnAmountNO2/Data_Fields/TropopausePressure
# Min. :243.2
# 1st Qu.:306.3
# Median :315.0
# Mean :315.2
# 3rd Qu.:324.5
# Max. :352.6
# NA's :28776
# //HDFEOS/GRIDS/ColumnAmountNO2/Data_Fields/VcdQualityFlags
# Min. :17
# 1st Qu.:17
# Median :17
# Mean :17
# 3rd Qu.:17
# Max. :17
# NA's :78749
# //HDFEOS/GRIDS/ColumnAmountNO2/Data_Fields/ViewingAzimuthAngle
# Min. :-179.998
# 1st Qu.:-120.520
# Median : 22.317
# Mean : -4.419
# 3rd Qu.: 68.435
# Max. : 179.981
# NA's :28776
# //HDFEOS/GRIDS/ColumnAmountNO2/Data_Fields/ViewingZenithAngle
# Min. : 0.756
# 1st Qu.:14.201
# Median :29.440
# Mean :31.442
# 3rd Qu.:47.110
# Max. :70.043
# NA's :28776
# //HDFEOS/GRIDS/ColumnAmountNO2/Data_Fields/XTrackQualityFlags
# Min. : 0.00
# 1st Qu.: 0.00
# Median : 0.00
# Mean : 73.38
# 3rd Qu.:255.00
# Max. :255.00
#
# dimension(s):
# from to offset delta refsys point values
# x 1 1440 0 1 NA NA NULL [x]
# y 1 720 720 -1 NA NA NULL [y]
# band 1 15 NA NA NA NA NULL
# Warning messages:
# 1: In c.stars_proxy(`//HDFEOS/GRIDS/ColumnAmountNO2/Data_Fields/CloudFraction` = list( :
# ignored subdataset(s) with dimensions different from first subdataset: 18
# use gdal_subdatasets() to find all subdataset names
# 2: In c.stars(`//HDFEOS/GRIDS/ColumnAmountNO2/Data_Fields/CloudFraction` = list( :
# ignored subdataset(s) with dimensions different from first subdataset: 18
# use gdal_subdatasets() to find all subdataset names
That's great, thanks!