void RGISAnNetworkBasinDistribCBK (Widget widget,RGISWorkspace *workspace,XmAnyCallbackStruct *callData) { DBDataset *dataset = UIDataset (); DBObjData *netData = dataset->Data (); DBObjData *grdData = netData->LinkedData (); DBObjData *tblData; tblData = new DBObjData ("",DBTypeTable); tblData->Document (DBDocGeoDomain,netData->Document (DBDocGeoDomain)); tblData->Document (DBDocSubject,"Category Distribution"); if (UIDataHeaderForm (tblData)) { UIPauseDialogOpen ((char *) "Calculating Statistics"); if (RGlibNetworkBasinDistrib (netData,grdData,tblData) == DBSuccess) workspace->CurrentData (tblData); else delete tblData; UIPauseDialogClose (); } else delete tblData; }
int main (int argc,char *argv []) { int argPos, argNum = argc, ret, verbose = false; char *title = (char *) NULL, *subject = (char *) NULL; char *domain = (char *) NULL, *version = (char *) NULL; char *networkName = (char *) NULL; DBObjData *data, *netData, *grdData; for (argPos = 1;argPos < argNum; ) { if (CMargTest (argv [argPos],"-n","--network")) { if ((argNum = CMargShiftLeft (argPos,argv,argNum)) <= argPos) { CMmsgPrint (CMmsgUsrError,"Missing network!"); return (CMfailed); } networkName = argv [argPos]; if ((argNum = CMargShiftLeft (argPos,argv,argNum)) <= argPos) break; continue; } if (CMargTest (argv [argPos],"-t","--title")) { if ((argNum = CMargShiftLeft (argPos,argv,argNum)) <= argPos) { CMmsgPrint (CMmsgUsrError,"Missing title!"); return (CMfailed); } title = argv [argPos]; if ((argNum = CMargShiftLeft (argPos,argv,argNum)) <= argPos) break; continue; } if (CMargTest (argv [argPos],"-u","--subject")) { if ((argNum = CMargShiftLeft (argPos,argv,argNum)) <= argPos) { CMmsgPrint (CMmsgUsrError,"Missing subject!"); return (CMfailed); } subject = argv [argPos]; if ((argNum = CMargShiftLeft (argPos,argv,argNum)) <= argPos) break; continue; } if (CMargTest (argv [argPos],"-d","--domain")) { if ((argNum = CMargShiftLeft (argPos,argv,argNum)) <= argPos) { CMmsgPrint (CMmsgUsrError,"Missing domaDBTypein!"); return (CMfailed); } domain = argv [argPos]; if ((argNum = CMargShiftLeft (argPos,argv,argNum)) <= argPos) break; continue; } if (CMargTest (argv [argPos],"-v","--version")) { if ((argNum = CMargShiftLeft (argPos,argv,argNum)) <= argPos) { CMmsgPrint (CMmsgUsrError,"Missing version!"); return (CMfailed); } version = argv [argPos]; if ((argNum = CMargShiftLeft (argPos,argv,argNum)) <= argPos) break; continue; } if (CMargTest (argv [argPos],"-V","--verbose")) { verbose = true; if ((argNum = CMargShiftLeft (argPos,argv,argNum)) <= argPos) break; continue; } if (CMargTest (argv [argPos],"-h","--help")) { CMmsgPrint (CMmsgInfo,"%s [options] <input grid> <output table>",CMfileName(argv[0])); CMmsgPrint (CMmsgInfo," -n,--network [network coverage]"); CMmsgPrint (CMmsgInfo," -t,--title [dataset title]"); CMmsgPrint (CMmsgInfo," -u,--subject [subject]"); CMmsgPrint (CMmsgInfo," -d,--domain [domain]"); CMmsgPrint (CMmsgInfo," -v,--version [version]"); CMmsgPrint (CMmsgInfo," -V,--verbose"); CMmsgPrint (CMmsgInfo," -h,--help"); return (DBSuccess); } if ((argv [argPos][0] == '-') && (strlen (argv [argPos]) > 1)) { CMmsgPrint (CMmsgUsrError,"Unknown option: %s!",argv [argPos]); return (CMfailed); } argPos++; } if (argNum > 3) { CMmsgPrint (CMmsgUsrError,"Extra arguments!"); return (CMfailed); } if (verbose) RGlibPauseOpen (argv[0]); if (networkName == (char *) NULL) { CMmsgPrint (CMmsgUsrError,"Network is not specified"); return (CMfailed); } netData = new DBObjData (); if ((netData->Read (networkName) == DBFault) || (netData->Type () != DBTypeNetwork)) { delete netData; return (CMfailed); } grdData = new DBObjData (); ret = (argNum > 1) && (strcmp (argv [1],"-") != 0) ? grdData->Read (argv [1]) : grdData->Read (stdin); if ((ret == DBFault) || (grdData->Type () != DBTypeGridDiscrete)) { delete netData; delete grdData; return (CMfailed); } if (title == (char *) NULL) title = (char *) "Basin Distribution"; if (subject == (char *) NULL) subject = grdData->Document (DBDocSubject); if (domain == (char *) NULL) domain = netData->Document (DBDocGeoDomain); if (version == (char *) NULL) version = (char *) "0.01pre"; data = new DBObjData (title,DBTypeTable); data->Document (DBDocSubject,subject); data->Document (DBDocGeoDomain,domain); data->Document (DBDocVersion,version); if ((ret = RGlibNetworkBasinDistrib (netData,grdData,data)) == DBSuccess) ret = (argNum > 2) && (strcmp (argv [2],"-") != 0) ? data->Write (argv [2]) : data->Write (stdout); delete data; delete netData; delete grdData; if (verbose) RGlibPauseClose (); return (ret); }