Re: [netcdf-java] How to modify variable in existing netcdf4 file?

  • To: Andreas Imner <andreas.imner@xxxxxxxxx>
  • Subject: Re: [netcdf-java] How to modify variable in existing netcdf4 file?
  • From: Hailey Johnson <hajohns@xxxxxxxx>
  • Date: Wed, 7 Apr 2021 16:40:17 -0600
Hi again,

Unfortunately, I'm hitting other issues when writing to an existing netcdf4
files, even after fixing the null pointer, so it will take a bit longer to
look into and fix. I've opened a github issue here
<https://github.com/Unidata/netcdf-java/issues/644>, which you can use to
track when we've fixed it.

Thanks!
Hailey

On Wed, Apr 7, 2021 at 2:16 PM Andreas Imner <andreas.imner@xxxxxxxxx>
wrote:

> Awesome, thanks!
>
> ons 7 apr. 2021 kl. 21:37 skrev Hailey Johnson <hajohns@xxxxxxxx>:
>
>> Hi Andreas:
>>
>> That's definitely a bug! Apparently we do not set the "location" when
>> modifying existing files. There will be a fix in shortly, likely this
>> afternoon.
>>
>> Thank you for bringing this up!
>> Hailey
>>
>> On Wed, Apr 7, 2021 at 1:28 PM Andreas Imner <andreas.imner@xxxxxxxxx>
>> wrote:
>>
>>> Ok, but the documentation says different? The C-library is needed like
>>> you say (and I have it installed) and used by Java-library via JNI?
>>>
>>>
>>> https://docs.unidata.ucar.edu/netcdf-java/current/userguide/writing_netcdf.html
>>>
>>> https://docs.unidata.ucar.edu/netcdf-java/current/userguide/netcdf4_c_library.html
>>>
>>> And I can create new files by using
>>> NetcdfFormatWriter.openExisting("/temp/input.nc").setFormat(
>>> NetcdfFileFormat.NETCDF4); // note that I dont call "setNewFile(false)"
>>> (This will create a file called "input.nc" but much smaller and
>>> containing variables filled with "garbage" data.. but the file is still
>>> written and readable)
>>>
>>>
>>> Den ons 7 apr. 2021 kl 19:50 skrev John Caron <jcaron1129@xxxxxxxxx>:
>>>
>>>> Hi Andreas:
>>>>
>>>> Netcdf-Java does not support writing or modifying netcdf-4 files. You
>>>> need to use the netcdf-4 C library directly. Sorry.
>>>>
>>>> John
>>>>
>>>> On Wed, Apr 7, 2021 at 8:49 AM Andreas Imner <andreas.imner@xxxxxxxxx>
>>>> wrote:
>>>>
>>>>> (... continuing since I clicked "Send" to soon)
>>>>>
>>>>> The NPE occurs because the 'ncfile.getLocation()' returns null
>>>>>
>>>>> My question is, is this supposed to work and am I doing something
>>>>> wrong?
>>>>> Or maybe this is not the way you are supposed to work with NetCDF
>>>>> -files that you want to modify the contents of?
>>>>>
>>>>> Den ons 7 apr. 2021 kl 16:33 skrev Andreas Imner <
>>>>> andreas.imner@xxxxxxxxx>:
>>>>>
>>>>>> Hi!
>>>>>> A am trying to use the Java NetCDF library to modify the data of a
>>>>>> variable in an existing NetCDF4 file.
>>>>>>
>>>>>> I use the 5.4.1 version of the Java library
>>>>>> I have version 4.7.4_2 of the netcdf C-library installed and it works
>>>>>> properly.
>>>>>>
>>>>>> The problem I get is that when opening the existing file for writing,
>>>>>> a NPE is thrown.
>>>>>>
>>>>>> My code looks something like this...
>>>>>>
>>>>>> NetcdfFormatWriter.Builder builder = 
>>>>>> NetcdfFormatWriter.openExisting("/temp/input.nc").setFormat(NetcdfFileFormat.NETCDF4).setNewFile(false);
>>>>>> NetcdfFormatWriter writer = builder.build();
>>>>>>
>>>>>> But when .build() is called an exception is thrown
>>>>>>
>>>>>> Exception in thread "main" java.lang.NullPointerException
>>>>>>  at ucar.nc2.NetcdfFiles.canonicalizeUriString(NetcdfFiles.java:359)
>>>>>>  at ucar.nc2.jni.netcdf.Nc4Iosp._open(Nc4Iosp.java:253)
>>>>>>  at ucar.nc2.jni.netcdf.Nc4Iosp.openForWriting(Nc4Iosp.java:239)
>>>>>>  at ucar.nc2.write.NetcdfFormatWriter.<init>(NetcdfFormatWriter.java:329)
>>>>>>  at ucar.nc2.write.NetcdfFormatWriter.<init>(NetcdfFormatWriter.java:49)
>>>>>>  at 
>>>>>> ucar.nc2.write.NetcdfFormatWriter$Builder.build(NetcdfFormatWriter.java:261)
>>>>>>
>>>>>> Looking at the code in the class Nc4Iosp.java
>>>>>>
>>>>>> private void _open(RandomAccessFile raf, NetcdfFile ncfile, boolean 
>>>>>> readOnly) throws IOException {
>>>>>>     ...
>>>>>> String location = 
>>>>>> NetcdfFiles.canonicalizeUriString(ncfile.getLocation());
>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>> NOTE: All exchanges posted to Unidata maintained email lists are
>>>>> recorded in the Unidata inquiry tracking system and made publicly
>>>>> available through the web.  Users who post to any of the lists we
>>>>> maintain are reminded to remove any personal information that they
>>>>> do not want to be made public.
>>>>>
>>>>>
>>>>> netcdf-java mailing list
>>>>> netcdf-java@xxxxxxxxxxxxxxxx
>>>>> For list information or to unsubscribe, visit:
>>>>> https://www.unidata.ucar.edu/mailing_lists/
>>>>>
>>>> _______________________________________________
>>> NOTE: All exchanges posted to Unidata maintained email lists are
>>> recorded in the Unidata inquiry tracking system and made publicly
>>> available through the web.  Users who post to any of the lists we
>>> maintain are reminded to remove any personal information that they
>>> do not want to be made public.
>>>
>>>
>>> netcdf-java mailing list
>>> netcdf-java@xxxxxxxxxxxxxxxx
>>> For list information or to unsubscribe, visit:
>>> https://www.unidata.ucar.edu/mailing_lists/
>>>
>> _______________________________________________
> NOTE: All exchanges posted to Unidata maintained email lists are
> recorded in the Unidata inquiry tracking system and made publicly
> available through the web.  Users who post to any of the lists we
> maintain are reminded to remove any personal information that they
> do not want to be made public.
>
>
> netcdf-java mailing list
> netcdf-java@xxxxxxxxxxxxxxxx
> For list information or to unsubscribe, visit:
> https://www.unidata.ucar.edu/mailing_lists/
>
  • 2021 messages navigation, sorted by:
    1. Thread
    2. Subject
    3. Author
    4. Date
    5. ↑ Table Of Contents
  • Search the netcdf-java archives: