Ich versuche, eine NetCDF-4-Datei mit einer Variable variabler Länge zu schreiben.Wie erstellt man eine netCDF-4-Datei mit einer Variable variabler Länge von Ncml?
Idealerweise hätte ich das Dienstprogramm ncgen verwendet, aber es unterstützt ncml nicht. Daher benutze ich die netCDF-Java-Bibliothek 4.6.6. Die folgende ncml ohne variabler Länge Variable erzeugt eine tragfähige netCDF-4-Datei:
java -Xmx1g -classpath ~/dump/netcdfAll-4.6.6.jar ucar.nc2.dataset.NetcdfDataset -in test.ncml -out test.nc4 -netcdf4
Dies wird die entsprechende ncml/xml:
<?xml version="1.0" encoding="UTF-8"?>
<netcdf xmlns="http://www.unidata.ucar.edu/namespaces/netcdf/ncml-2.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://what.no">
<group name="data">
<dimension name="number_packets" length="6"/>
<variable name="packet_time_utc" shape="number_packets" type="double">
</variable>
</group>
</netcdf>
Wenn ich eine weitere unbegrenzte Dimension der ncml bin das Hinzufügen, Fehler auftritt
<?xml version="1.0" encoding="UTF-8"?>
<netcdf xmlns="http://www.unidata.ucar.edu/namespaces/netcdf/ncml-2.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://what.no">
<group name="data">
<dimension name="number_packets" length="6" isVariableLength="true" isShared="false"/>
<variable name="packet_time_utc" shape="number_packets" type="double">
</variable>
</group>
</netcdf>
nach dem ncml schema, die Definition der Dimension korrekt ist. Fehler msg NetCDF: Variable nicht gefunden:
NetcdfDatataset read from test-vlen.ncml write to test-Vlen.nc4 java.io.IOException: -49: NetCDF: Variable not found
at ucar.nc2.jni.netcdf.Nc4Iosp.writeData(Nc4Iosp.java:2835)
at ucar.nc2.jni.netcdf.Nc4Iosp.writeData(Nc4Iosp.java:2789)
at ucar.nc2.NetcdfFileWriter.write(NetcdfFileWriter.java:954)
at ucar.nc2.NetcdfFileWriter.write(NetcdfFileWriter.java:938)
at ucar.nc2.FileWriter2.copyAll(FileWriter2.java:431)
at ucar.nc2.FileWriter2.copyVarData(FileWriter2.java:384)
at ucar.nc2.FileWriter2.write(FileWriter2.java:199)
at ucar.nc2.dataset.NetcdfDataset.main(NetcdfDataset.java:1888)
Exception in thread "main" java.io.IOException: -101: NetCDF: HDF error
at ucar.nc2.jni.netcdf.Nc4Iosp.close(Nc4Iosp.java:289)
at ucar.nc2.NetcdfFileWriter.abort(NetcdfFileWriter.java:1032)
at ucar.nc2.FileWriter2.write(FileWriter2.java:207)
at ucar.nc2.dataset.NetcdfDataset.main(NetcdfDataset.java:1888)
length="*"
angeben, wie here empfohlen, die Ergebnisse in einem anderen Number Fehler.
Ich verwende die neuesten Versionen verfügbar:
- HDF 1.8.17
- netcdf C 4.4.0
- netCDF-java lib 4.6.6
Der Fehler ist über den Fehler, die Variable zu finden (FileWrite möchte alle Variablen kopieren). Ich stehe jedoch auf der Suche nach dem Ursprung des Fehlers.
Vielen Dank (Ich habe noch nicht genug Rep zu upvote) –