예제 #1
0
파일: NCCtemplate.c 프로젝트: bmfekete/RGIS
int main(int argc, char *argv[]) {
    int argPos = 0, argNum = argc;

    initMemInfo();
    for (argPos = 1; argPos < argNum;) {
        if (NCcmArgTest(argv[argPos], "-d", "--debug")) {
            SetDebug();
            NCcmArgShiftLeft(argPos, argv, argc);
            argNum--;
            continue;
        }
        if (NCcmArgTest(argv[argPos], "-h", "--help")) {
            if (argv[argPos + 1][0] == 'e') do_help(NCcmProgName(argv[0]), true); else
                do_help(NCcmProgName(argv[0]), false);
            cleanup(NCsucceeded);
        }
        if (NCcmArgTest(argv[argPos], "- ", "-- ")) {
            NCcmArgShiftLeft(argPos, argv, argc);
            argNum--;
            continue;
        }
        if ((argv[argPos][0] == '-') && (strlen(argv[argPos]) > 1)) {
            CMmsgPrint(CMmsgUsrError, "Unknown option: %s!", argv[argPos]);
            cleanup(NCfailed);
        }
        argPos++;
    }

    cleanup(NCsucceeded);
}
예제 #2
0
파일: NCCnc2table.c 프로젝트: amiara/RGIS
int main(int argc, char* argv[])
{
	int argPos = 0, argNum = argc, ncid;
	char *fname = (char *) NULL, *tname = "time";
	FILE *output = stdout;
	NCtable_t *tbl = (NCtable_t *) NULL;

	initMemInfo();
	for(argPos = 1; argPos < argNum;) {
		if (CMargTest(argv[argPos],"-d","--debug"))
                    {
                    SetDebug();
                    CMargShiftLeft(argPos,argv,argc);
                    argNum--;
                    continue;
                    }
		if (CMargTest(argv[argPos],"-h","--help")) {
			if((argPos + 1 < argNum) && (argv[argPos+1][0] == 'e')) doHelp (CMprgName(argv[0]),true);
			else doHelp (CMprgName (argv[0]),false);
			cleanup(NCsucceeded);
		}
		if (CMargTest(argv[argPos],"-t","--table"))
		{
			CMargShiftLeft(argPos,argv,argc); argNum--;
			tname = argv[argPos];
			CMargShiftLeft(argPos,argv,argc); argNum--;
			continue;
		}
		if (CMargTest(argv[argPos],"-f","--file"))
		{
			if ((argNum = CMargShiftLeft(argPos,argv,argc)) <= argPos)
                            { CMmsgPrint (CMmsgUsrError,"Missing file!");  return (CMfailed); }
			fname = argv[argPos];
			if ((argNum = CMargShiftLeft(argPos,argv,argc)) <= argPos) break;
			continue;
		}
		if (CMargTest(argv[argPos],"-o","--output"))
		{
			if ((argNum = CMargShiftLeft(argPos,argv,argc)) <= argPos)
                            { CMmsgPrint (CMmsgUsrError,"Missing output!");  return (CMfailed); }
			if(output != stdout) { CMmsgPrint (CMmsgUsrError, "Output file defined twice!"); cleanup(NCfailed); }
			if((output = fopen(argv[argPos],"w")) == (FILE *) NULL)
				{ CMmsgPrint (CMmsgUsrError, "Cannot open for writing: %s",argv[argPos]); cleanup(NCfailed); }
			if ((argNum = CMargShiftLeft(argPos,argv,argc)) <= argPos) break;
			continue;
		}
		if ((argv[argPos][0] == '-') && (strlen (argv[argPos]) > 1))
			{ CMmsgPrint (CMmsgUsrError, "Unknown option: %s!",argv[argPos]); cleanup(NCfailed); }
		argPos++;
	}
	if(fname == (char *) NULL) { doHelp(argv[0],false); CMmsgPrint (CMmsgUsrError, "No file specified!"); cleanup(NCfailed); }
	if(nc_open(fname,NC_NOWRITE,&ncid) != NC_NOERR) { CMmsgPrint (CMmsgUsrError, "Error opening file!"); cleanup(NCfailed); }
	if((tbl = NCtableOpen(ncid,tname)) == (NCtable_t *) NULL) { CMmsgPrint (CMmsgUsrError, "Error opening table!"); cleanup(NCfailed); }
	if(GetDebug()) CMmsgPrint (CMmsgUsrError, "Loaded file!");
	NCtableExportAscii(tbl,output);
	cleanup(NCsucceeded);
}
예제 #3
0
int main(int argc, char* argv[])
{
	char *filename = (char *) NULL, *rename = (char *) NULL, *varname = (char *) NULL;
	int argPos = 0, argNum = argc, interval = NONE, ncid = 0, *dimIDs = (int *) NULL;
//	NCdsHandle_t *dsHandle;

	if(argNum == 1) { doHelp(CMfileName(argv[0])); return (NCsucceeded); }
	if ((argNum == 2) && (argv[1][0] == '-'))
	{
		if (CMargTest (argv[1],"-d","--debug")) SetDebug();
		doHelp(CMfileName(argv[0])); return (NCsucceeded);
	}
	initMemInfo();
	for(argPos = 1; argPos < argNum;)
	{
		if (CMargTest(argv[argPos],"-d","--debug")) { SetDebug(); CMargShiftLeft(argPos,argv,argc); argNum--; continue; }
		if (CMargTest(argv[argPos],"-h","--help"))  { doHelp(CMfileName(argv[0])); cleanup(NCsucceeded); }
		if (CMargTest(argv[argPos],"-f","--file"))
		{
			if ((argNum = CMargShiftLeft(argPos,argv,argc)) <= argPos)
                            { CMmsgPrint (CMmsgUsrError,"Missing file!");  return (CMfailed); }
			filename = argv[argPos];
			if ((argNum = CMargShiftLeft(argPos,argv,argc)) <= argPos) break;
			continue;
		}
		if (CMargTest(argv[argPos],"-r","--rename"))
		{
			if ((argNum = CMargShiftLeft(argPos,argv,argc)) <= argPos)
				{ CMmsgPrint (CMmsgUsrError,"Missing name!");  return (CMfailed); }

			if(rename == (char *) NULL) rename = argv[argPos];
			else { CMmsgPrint (CMmsgUsrError, "Output field name defined twice!"); cleanup(NCfailed); }
			if ((argNum = CMargShiftLeft(argPos,argv,argc)) <= argPos) break;
			continue;
		}
		if (CMargTest(argv[argPos],"-s","--set"))
		{
			if ((argNum = CMargShiftLeft(argPos,argv,argc)) <= argPos)
				{ CMmsgPrint (CMmsgUsrError,"Time step!");  return (CMfailed); }

			if(interval != NONE) { CMmsgPrint (CMmsgUsrError, "Interval already set!"); cleanup(NCfailed); }
			if(NCmathIsNumber(argv[argPos])) interval = atoi(argv[argPos]);
			else if (strcmp(argv[argPos],"hour") == 0) interval = HOUR;
			else if (strcmp(argv[argPos],"day") == 0) interval = DAY;
			else if (strcmp(argv[argPos],"month") == 0) interval = MONTH;
			else if (strcmp(argv[argPos],"year") == 0) interval = YEAR;
			else { CMmsgPrint (CMmsgUsrError, "Undefined time interval '%s'",argv[argPos]); cleanup(NCfailed); }
			if ((argNum = CMargShiftLeft(argPos,argv,argc)) <= argPos)
				{ CMmsgPrint (CMmsgUsrError,"Missing variable!");  return (CMfailed); }
			if(varname == (char *) NULL) varname = argv[argPos];
			else { CMmsgPrint (CMmsgUsrError, "Input field name defined twice!"); cleanup(NCfailed); }
			if ((argNum = CMargShiftLeft(argPos,argv,argc)) <= argPos) break;
			continue;
		}
		if ((argv[argPos][0] == '-') && (strlen (argv[argPos]) > 1))
			{ CMmsgPrint (CMmsgUsrError, "Unknown option: %s!",argv[argPos]); cleanup(NCfailed); }
		argPos++;
	}
	if(interval == NONE) { CMmsgPrint (CMmsgUsrError, "Invalid interval!"); cleanup(NCfailed); }
	if (filename != (char *) NULL) {
		if(nc_open(filename,NC_WRITE,&ncid) != NC_NOERR)
			{ CMmsgPrint (CMmsgAppError, "Error opening file: %s!",filename); return (NCfailed); }
	} else if ((argNum > 1) && (strcmp(argv[1],"-") != 0)) {
		if(nc_open(argv[1],NC_WRITE,&ncid) != NC_NOERR) { CMmsgPrint (CMmsgUsrError, "Error opening file: %s!",argv[1]); return (NCfailed); }
	} else doHelp(CMfileName(argv[0]));

//	dsHandle = NCdsHandleOpenById (ncid);
/*	if((nc_inq_varid(ncid,varname,&inVar)) != NC_NOERR) { CMmsgPrint (CMmsgUsrError, "NC: Error getting varID!"); cleanup(NCfailed); }
	if(nc_inq_ndims(ncid,&ndims) != NC_NOERR) { CMmsPrint (CMmsgAppError, "Cannot get the ndims!",__FILE__,__LINE__); cleanup(NCfailed); }
	dimIDs = malloc(sizeof(int) * ndims);
	if((nc_inq_vardimid(ncid,inVar,dimIDs)) != NC_NOERR) { CMmsgPrint (CMmsgUsrError, "NC: Error getting dimIDs!"); cleanup(NCfailed); }
	if(nc_redef(ncid) != NC_NOERR) { CMmsgPrint (CMmsgAppError, "Cannot place into redef mode!"); cleanup(NCfailed); }
	CMmsgPrint (CMmsgUsrError, "id=%d ndims=%d, dimIDs[0]=%d dimIDs[1]=%d dimIDs[2]=%d",ncid,ndims, dimIDs[0],dimIDs[1],dimIDs[2]);
	if(rename == (char *) NULL) {
		if((nc_def_var(ncid,"Aggregate",NC_DOUBLE,ndims,dimIDs,&outVar)) != NC_NOERR)
			{ CMmsgPrint (CMmsgUsrError, "NC: Error creating new variable!"); cleanup(NCfailed); }
	} else {
		if((nc_def_var(ncid,rename,NC_DOUBLE,ndims,dimIDs,&outVar)) != NC_NOERR)
			{ CMmsgPrint (CMmsgUsrError, "NC: Error creating new variable!"); cleanup(NCfailed); }
	}
	CMmsgPrint (CMmsgUsrError, "id=%d ndims=%d, dimIDs[0]=%d dimIDs[1]=%d dimIDs[2]=%d",ncid,ndims, dimIDs[0],dimIDs[1],dimIDs[2]);
	//if(nc_enddef(ncid) != NC_NOERR) { CMmsgPrint (CMmsgAppError, "Cannot get out of redef mode!"); cleanup(NCfailed); }
	cleanup(NCsucceeded);

	if((nc_inq_dimlen(ncid,dimIDs[0],&bLen)) != NC_NOERR)
		{ CMmsgPrint (CMmsgUsrError, "NC: Error getting length of dimension!"); cleanup(NCfailed); }
	for(i = 0; i < bLen; i++)
	{ 
		idx[0] = i;
		if(nc_get_var1_double(ncid,inVar,idx, &val) != NC_NOERR)
			{ CMmsgPrint (CMmsgUsrError, "NC: There's a problem getting a value!"); cleanup(NCfailed); }
		printf("inVar: %d, outVar: %d, val: %f",inVar,outVar,val);
	}*/
//	for (i = 0; i < dsHandle->ColNum * dsHandle->RowNum * dsHandle->TimeNum; i++) printf("i: %f",data[i]);
	cleanup(NCsucceeded);
}