// do it in memory for speed
NetcdfFile ncfile = inMemory ? NetcdfFile.openInMemory(fileIn) : NetcdfFile.open(fileIn);
NetcdfDataset ncd = new NetcdfDataset(ncfile);
StringBuilder errlog = new StringBuilder();
PointObsDataset pobsDataset = (PointObsDataset) TypedDatasetFactory.open(FeatureType.POINT, ncd, null, errlog);
FileOutputStream fos = new FileOutputStream(fileOut);
DataOutputStream out = new DataOutputStream(fos);
WriterCFPointDataset writer = null;
DataIterator iter = pobsDataset.getDataIterator(1000 * 1000);
while (iter.hasNext()) {
PointObsDatatype pobsData = (PointObsDatatype) iter.nextData();
StructureData sdata = pobsData.getData();
if (writer == null) {
ucar.unidata.geoloc.EarthLocation loc = pobsData.getLocation();
String altUnits = Double.isNaN(loc.getAltitude()) ? null : "meters";
writer = new WriterCFPointDataset(out, ncfile.getGlobalAttributes(), altUnits);
writer.writeHeader(pobsDataset.getDataVariables(), -1);
}
writer.writeRecord(pobsData, sdata);
}
writer.finish();