Как объединить несколько файлов .grd и сохранить их в независимом от сети формате netcdf?

Я пытаюсь преобразовать формат вывода моего проекта в визуализацию TSUNAMI MODEL. Я делаю это, чтобы помочь местному агентству по прогнозированию погоды. Но я столкнулся с проблемой формата вывода «существующей» программы.

Программа выводит результаты в «.grd формат», но я хочу, чтобы они были в «.netcdf формат».

Далее каждый из .grd содержит обработанные изображения входного изображения (которое также находится в .grd). Кто-нибудь может дать мне несколько советов о том, как это сделать?

Я сослался на официальную документацию netCDF на https://www.unidata.ucar.edu/ но я пока не могу добиться какого-либо прогресса.

Процедура записи данных в формате .grd приведена ниже.

int FILEOTPROPA()
{
FILE *fp;
short nOutI,nOutJ;
int i,j,m;
float ftmp;
double dtmp,lonOutMin,lonOutMax,latOutMin,latOutMax;
char record[128];

CNode& Node = *gNode;

NrecSpatialWaveOutput++;

nOutI = Imax-Imin+1;
lonOutMin = getLon(Imin); lonOutMax = getLon(Imax);
nOutJ = Jmax-Jmin+1;
latOutMin = getLat(Jmin); latOutMax = getLat(Jmax);

sprintf( record, "zout_%5.5d.grd",MODELVARI.time );
fp = fopen( record, "wb" );
fwrite( "DSBB", 4, 1, fp );
fwrite( &nOutI, sizeof(short), 1, fp );
fwrite( &nOutJ, sizeof(short), 1, fp );
fwrite( &lonOutMin, sizeof(double), 1, fp );
fwrite( &lonOutMax, sizeof(double), 1, fp );
fwrite( &latOutMin, sizeof(double), 1, fp );
fwrite( &latOutMax, sizeof(double), 1, fp );
dtmp = -1.; fwrite( &dtmp, sizeof(double), 1, fp );
dtmp = +1.; fwrite( &dtmp, sizeof(double), 1, fp );
for( j=Jmin; j<=Jmax; j++ ) {
for( i=Imin; i<=Imax; i++ ) {
m = idx(j,i);
if( fabs(Node(m, iZ)) < MODELVARI.zoutTT )
ftmp = (float)9999;
else
ftmp = (float)Node(m, iZ);
fwrite( &ftmp, sizeof(float), 1, fp );
}
}
fclose( fp );
return 0;
}

Эта процедура генерирует около пяти файлов изображений в формате .grd во время каждого выполнения. Я хочу объединить эти пять файлов изображений «.grd format» в один файл формата netCDF в качестве выходных данных для каждого выполнения программы.

Пример выполнения созданных программой файлов .grd (в папке примеров) и полный исходный код можно найти по адресу https://mega.nz/#F!oqhVVA4a!VPdVav4bQQVsJTuYbMIOFw

Спасибо.

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]