2016-06-29 6 views
2

私は、可変長変数を持つnetCDF-4ファイルを書き込もうとしています。ncmlから可変長変数を使用してnetCDF-4ファイルを作成する方法は?

理想的には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です:私は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"/> 
    <variable name="packet_time_utc" shape="number_packets" type="double"> 
    </variable> 
    </group> 
</netcdf> 

、障害が

<?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によれば、寸法の定義が正しい発生します。 エラーMSG のNetCDF:変数が見つかりません:

length="*"を指定
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) 

、推奨hereとして、異なるNumberFormatExceptionがエラーになります。

私は、利用可能な最新バージョンを使用しています:

  • HDF 1.8.17
  • のnetCDF C 4.4.0
  • のNetCDF-javaのlibに4.6.6

誤りがあります(FileWriteはすべての変数をコピーしたい)。しかし、私はエラーの原因を突きつけようとしている。

答えて

0

これをnetCDF-javaライブラリブランチ5.0.0で再現しました。 0cc266dをコミットするが、エラーが少し明確である:

あなたの第二の例では:

java.lang.IllegalArgumentException: Dimensions added to a group must be shared. 

isShared="false"

java.lang.IllegalArgumentException: variable length dimension cannot be shared or unlimited 

を除去する際にそれが何のサポートはまだありませんように私には見えます。

0

残念ながら、これはNetCDF-Javaでサポートされているものではありません。私はGitHubにそれに関する問題を作りました。

+0

それについてのおかげで(私はまだupvoteに十分な担当者がいない) –

関連する問題