Java 如何将NetCDF转换为.grd?
我有两个NetCDF文件,我想通过编程将其转换为Surfer 6的“.grd”格式 NetCDF只能转换为NetCDF,我似乎也无法与Cydwin一起正常运行Java 如何将NetCDF转换为.grd?,java,netcdf,netcdf-java,Java,Netcdf,Netcdf Java,我有两个NetCDF文件,我想通过编程将其转换为Surfer 6的“.grd”格式 NetCDF只能转换为NetCDF,我似乎也无法与Cydwin一起正常运行 如何在java中转换这些文件(但使用Windows,不使用Cydwin…)我还没有找到一个java库来直接使用这些文件,但有一种方法可以(间接地)在java中进行转换: 可以通过Windows中的命令行来转换所述文件 安装很简单:从下载他们的exe,然后运行它。这将安装所需的一切,并设置必要的环境变量(必须在安装过程中勾选) 之后,可以通
如何在java中转换这些文件(但使用Windows,不使用Cydwin…)我还没有找到一个java库来直接使用这些文件,但有一种方法可以(间接地)在java中进行转换: 可以通过Windows中的命令行来转换所述文件 安装很简单:从下载他们的exe,然后运行它。这将安装所需的一切,并设置必要的环境变量(必须在安装过程中勾选) 之后,可以通过短命令在
cmd
中运行转换,例如:
gmt grdconvert in.nc out.grd=sf -V
自动检测输入格式(在我的例子中是NetCDF)sf
(“Golden Software Surfer format 6”)说明了所需的输出格式。可以找到所有支持的输入/输出格式的概述。我还使用sd
(“Golden Software Surfer format 7”)对其进行了测试,但它确实是只读的(如链接中所述)
上面的命令要求您首先将cd
复制到输入文件,然后在同一文件夹中创建输出文件。相反,您也可以跳过cd
,直接为其提供路径:
gmt grdconvert C:\myfolderpath1\in.nc C:\myfolderpath2\out.grd=sf -V
可以在Java中使用cmd
,如图所示。我的例子如下所示:
Process p = null;
try {
//final String command = "gmt grdconvert "+in+" "+out+"=sf -V"; //Version 1: cd to folder first, input folder == output folder
final String command = "gmt grdconvert "+inpath+" "+outpath+"=sf -V"; //Version 2: No cd, different folders possible
ProcessBuilder builder = new ProcessBuilder(
//"cmd.exe", "/c", "cd \""+path+"\" && "+command); // Version 1
"cmd.exe", "/c", command); //Version 2
builder.redirectErrorStream(true);
p = builder.start();
BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line;
while (true) {
line = br.readLine();
if (line == null) { break; }
System.out.println(line);
}
br.close();
} catch(IOException e) {
e.printStackTrace();
} finally {
if(p!=null) { p.destroy(); }
}
这还会将由于-V
而输出的所有内容打印到控制台