Gpt Write NetCDF vs NetCDF4

Hi,
Conversion into NetCDF4-BEAM is very useful to save some memory when storing processed images.
I am able to convert (or export) into NetCDF4-BEAM or NetCDF4-CF from the snap gui.
I would like to do the same thing with gpt:

ifile=img.dim
ofile=img.nc
oformat=NetCDF4-BEAM
gpt Write -PformatName=$oformat -Pfile=$ofile -Ssource=$ifile

If I set oformat as NetCDF-CF or NetCDF-BEAM, it is working perfectly!
But, when oformat = NetCDF4-CF or NetCDF4-BEAM (enabling image compression), I do get img.nc, but it is unreadable:

ncdump -h img.nc
ncdump: img.nc: NetCDF: Unknown file format

Any idea?
Thanks
Tristan

Is it possible that the ncdump is outdated?
Maybe it can only read NetCDF3 and not yet NetCDF4?

Thanks for your reply.
After some tests on several machines, neither gdalinfo, ncinfo nor snap software can open the img.nc generated by gpt in netcdf4.
(img.nc generated via snap gui is all right)

Can you provide me both files, the input and the output?
I’ll send you a PM with a location where you can upload it.

Hello Tristan,

Unfortunately I hadn’t the time to investigate your problem in more detail. As there has been a similar report now, the priority rises.

It seems we found the issue and solved it. It will be deployed with the next SNAP update.
If bands already existed with the name ‘lat’ or ‘lon’ then the error happend.
So renaming those bands can help or excluding them by a subset after reprojection should help as a workaround.

Hi,
gpt is now producing the following error when asking for any NetCDF* format
(gpt Write -PformatName=NetCDF-CF -Pfile=$ofile -Ssource=$ifile):

org.esa.snap.core.gpf.OperatorException
	at org.esa.snap.core.gpf.internal.OperatorExecutor$GPFImagingListener.errorOccurred(OperatorExecutor.java:376)
	at com.sun.media.jai.util.SunTileScheduler.sendExceptionToListener(SunTileScheduler.java:1646)
	at com.sun.media.jai.util.SunTileScheduler.scheduleTile(SunTileScheduler.java:921)
	at javax.media.jai.OpImage.getTile(OpImage.java:1129)
	at com.sun.media.jai.util.RequestJob.compute(SunTileScheduler.java:247)
	at com.sun.media.jai.util.WorkerThread.run(SunTileScheduler.java:468)
Caused by: java.lang.NullPointerException
	at org.esa.snap.dataio.netcdf.metadata.profiles.cf.CfGeocodingPart.encode(CfGeocodingPart.java:188)
	at org.esa.snap.dataio.netcdf.NetCdfWriteProfile.writeProduct(NetCdfWriteProfile.java:52)
	at org.esa.snap.dataio.netcdf.DefaultNetCdfWriter.writeProductNodesImpl(DefaultNetCdfWriter.java:62)
	at org.esa.snap.core.dataio.AbstractProductWriter.writeProductNodes(AbstractProductWriter.java:109)
	at org.esa.snap.core.gpf.common.WriteOp.doExecute(WriteOp.java:304)
	at org.esa.snap.core.gpf.internal.OperatorContext.executeOperator(OperatorContext.java:1243)
	at org.esa.snap.core.gpf.internal.OperatorImage.computeRect(OperatorImage.java:65)
	at javax.media.jai.SourcelessOpImage.computeTile(SourcelessOpImage.java:137)
	at com.sun.media.jai.util.SunTileScheduler.scheduleTile(SunTileScheduler.java:904)
	... 3 more

Error: org.esa.snap.core.gpf.OperatorException

On the other hand, it is working perfectly for other formats (HDF5, GeoTIFF…)
Any idea?

This should be fixed (SNAP-1088) with the next version.

1 Like