Я пытаюсь написать файл netCDF-4 с переменной переменной длины.Как создать файл netCDF-4 с переменной переменной длины из ncml?
В идеале я бы использовал утилиту ncgen, но не поддерживает ncml. Поэтому я использую netCDF-java lib 4.6.6. Следующий ncml без переменной переменной длины производит работоспособную NetCDF-4 файла:
java -Xmx1g -classpath ~/dump/netcdfAll-4.6.6.jar ucar.nc2.dataset.NetcdfDataset -in test.ncml -out test.nc4 -netcdf4
Это соответствующий 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>
Если я добавляю еще неограниченное измерение в ncml, происходит сбой
<?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>
Согласно ncml schema, определение размера является правильным. тзд Ошибка NetCDF: Переменная не найдена:
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="*"
, как это было рекомендовано here, результаты в другой ошибки NumberFormatException.
Я использую последние версии доступны:
- HDF 1.8.17
- NetCDF C 4.4.0
- NetCDF-ява Lib 4.6.6
Ошибка о неспособности найти переменную (FileWrite хочет скопировать все переменные). Тем не менее, я застрял, пытаясь найти происхождение ошибки.
спасибо за это (у меня нет достаточного количества репутации для продолжения) –