void RGISAnNetworkToGridCBK (Widget widget,RGISWorkspace *workspace,XmAnyCallbackStruct *callData) { char *selection; DBInt dataType; DBDataset *dataset = UIDataset (); DBObjData *netData = dataset->Data (); DBObjTable *cellTable = netData->Table (DBrNCells); DBObjTableField *field; DBObjData *grdData; static Widget select = NULL; if (select == NULL) select = UISelectionCreate ((char *) "Field Selection"); selection = UISelectObject (select,(DBObjectLIST<DBObject> *) (cellTable->Fields ()),DBTableFieldIsSimple); if (selection == (char *) NULL) return; if ((field = cellTable->Field (selection)) == (DBObjTableField *) NULL) { CMmsgPrint (CMmsgAppError,"Corrupt Network Dataset in: %s %d",__FILE__,__LINE__); return; } if (DBTableFieldIsCategory (field) && DBTableFieldIsNumeric (field)) { DBObjData *tmpData; tmpData = new DBObjData ("",DBTypeGrid); tmpData->Document (DBDocGeoDomain,netData->Document (DBDocGeoDomain)); tmpData->Document (DBDocSubject,field->Name ()); if (UIDataHeaderForm (tmpData)) { grdData = DBNetworkToGrid (netData,tmpData->Type ()); grdData->Name (tmpData->Name ()); grdData->Document (DBDocGeoDomain,tmpData->Document (DBDocGeoDomain)); grdData->Document (DBDocSubject,tmpData->Document (DBDocSubject)); grdData->Document (DBDocVersion,tmpData->Document (DBDocVersion)); grdData->Document (DBDocCitationRef,tmpData->Document (DBDocCitationRef)); grdData->Document (DBDocCitationInst,tmpData->Document (DBDocCitationInst)); grdData->Document (DBDocSourceInst,tmpData->Document (DBDocSourceInst)); grdData->Document (DBDocSourcePerson,tmpData->Document (DBDocSourcePerson)); grdData->Document (DBDocOwnerPerson,tmpData->Document (DBDocOwnerPerson)); grdData->Document (DBDocComment,tmpData->Document (DBDocComment)); delete tmpData; } else { return; } } else { if (DBTableFieldIsCategory (field)) dataType = DBTypeGridDiscrete; else if (DBTableFieldIsNumeric (field)) dataType = DBTypeGridContinuous; else { CMmsgPrint (CMmsgAppError,"Invalid field type in: %s %d",__FILE__,__LINE__); return; } grdData = DBNetworkToGrid (netData,dataType); if (UIDataHeaderForm (grdData) == false) { delete grdData; return; } } UIPauseDialogOpen ((char *) "Converting Network to Grid"); if (RGlibNetworkToGrid (netData,field,grdData) == DBSuccess) workspace->CurrentData (grdData); else delete grdData; UIPauseDialogClose (); }
int main(int argc, char *argv[]) { int i, verbose = false; char *ghaasMetaDB = (char *) NULL, metaFileName[DBDataFileNameLen]; DBObjData *dbData; DBDataset *dbDataset; DBObjectLIST<DBObjMetaEntry> *metaList; DBObjMetaEntry *metaEntry; if (argc < 2) { Usage(argv[0]); return (0); } for (i = 1; i < argc; ++i) { if ((strcmp(argv[i], "-h") == 0) || (strcmp(argv[i], "--help") == 0)) { Usage(argv[0]); return (0); } else if ((strcmp(argv[i], "-V") == 0) || (strcmp(argv[i], "--verbose") == 0)) verbose = true; else if (((strcmp(argv[i], "-m") == 0) || (strcmp(argv[i], "--MetaDB") == 0)) && (argc > i + 1)) { if (++i < argc) { ghaasMetaDB = argv[i]; break; } else { Usage(argv[0]); return (0); } } } if (i == argc) i = 0; if (verbose) RGlibPauseOpen(argv[0]); if (ghaasMetaDB == (char *) NULL) { sprintf(metaFileName, "%s/GHAASMetadb", getenv("GHAAS_DIR") == NULL ? getenv("HOME") : getenv("GHAAS_DIR")); ghaasMetaDB = metaFileName; } dbDataset = new DBDataset((char *) "GHAASmetadb", ghaasMetaDB); metaList = dbDataset->MetaList(); for (; i < argc - 1; ++i) { dbData = new DBObjData(); if (dbData->Read(argv[i + 1]) == DBSuccess) { dbData->FileName(argv[i + 1]); dbDataset->Data(dbData); printf("%s\n", dbData->Name()); metaEntry = metaList->Item(dbData->Name()); metaEntry->FileName(dbData->FileName()); dbDataset->RemoveData(dbData); } delete dbData; } delete dbDataset; if (verbose) RGlibPauseClose(); return (0); }
int main(int argc, char* argv[]){ bool All_Fields = false; char *title = (char *) NULL, *subject = (char *) NULL, *domain = (char *) NULL, *version = (char *) NULL; char *citation = (char *) NULL, *institute = (char *) NULL, *source = (char *) NULL, *person = (char *) NULL; char *comment = (char *) NULL, *type = (char *) NULL, ch = 'x'; int argPos, argNum = argc, verbose = false; FILE *file = (FILE *) NULL; DBObjData *dbData = new DBObjData(); DBDataHeader header; if (argc == 1) { Show_Usage(argv[0]); return 0; } for (argPos = 1;argPos < argNum; ) { if (CMargTest (argv [argPos],"-a","--all")) { All_Fields = true; 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")) { Show_Usage(argv[0]); return 0; } if ((file == (FILE *) NULL) && (access(argv[argPos],R_OK) == 0)) file = fopen(argv[argPos],"r"); // ugly but working method to search for input filename. argPos++; } if (file != (FILE *) NULL) { if (header.Read(file) == DBFault) { delete dbData; return(DBFault); } fseek(file,0,SEEK_SET); //go back to beginning of file if (dbData->Read(file) == DBFault) { delete dbData; return(DBFault); } fclose(file); } else { CMmsgPrint (CMmsgUsrError,"No data file, reading from stdin!"); if (header.Read(stdin) == DBFault) { delete dbData; return(DBFault); } if (dbData->Read(stdin) == DBFault) { delete dbData; return(DBFault); } } if(All_Fields) { title = dbData->Name(); domain = dbData->Document(DBDocGeoDomain); subject = dbData->Document(DBDocSubject); version = dbData->Document(DBDocVersion); type = DBDataTypeString(header.Type ()); institute = dbData->Document(DBDocCitationInst); person = dbData->Document(DBDocOwnerPerson); citation = dbData->Document(DBDocCitationRef); comment = dbData->Document(DBDocComment); source = dbData->Document(DBDocSourcePerson); } else { for (argPos = 1;argPos < argNum; ) { if (CMargTest (argv [argPos],"-t","--title")) { title = dbData->Name(); if(title == (char *) NULL) title = &ch; if ((argNum = CMargShiftLeft (argPos,argv,argNum)) <= argPos) break; continue; } if (CMargTest (argv [argPos],"-d","--domain")) { domain = dbData->Document(DBDocGeoDomain); if(domain == (char *) NULL) domain = &ch; if ((argNum = CMargShiftLeft (argPos,argv,argNum)) <= argPos) break; continue; } if (CMargTest (argv [argPos],"-s","--subject")) { subject = dbData->Document(DBDocSubject); if(subject == (char *) NULL) subject = &ch; if ((argNum = CMargShiftLeft (argPos,argv,argNum)) <= argPos) break; continue; } if (CMargTest (argv [argPos],"-v","--version")) { version = dbData->Document(DBDocVersion); if(version == (char *) NULL) version = &ch; if ((argNum = CMargShiftLeft (argPos,argv,argNum)) <= argPos) break; continue; } if (CMargTest (argv [argPos],"-n","--institute")) { institute = dbData->Document(DBDocCitationInst); if(institute == (char *) NULL) institute = &ch; if ((argNum = CMargShiftLeft (argPos,argv,argNum)) <= argPos) break; continue; } if (CMargTest (argv [argPos],"-p","--person")) { person = dbData->Document(DBDocOwnerPerson); if(person == (char *) NULL) person = &ch; if ((argNum = CMargShiftLeft (argPos,argv,argNum)) <= argPos) break; continue; } if (CMargTest (argv [argPos],"-i","--citation")) { citation = dbData->Document(DBDocCitationRef); if(citation == (char *) NULL) citation = &ch; if ((argNum = CMargShiftLeft (argPos,argv,argNum)) <= argPos) break; continue; } if (CMargTest (argv [argPos],"-c","--comment")) { comment = dbData->Document(DBDocComment); if(comment == (char *) NULL) comment = &ch; if ((argNum = CMargShiftLeft (argPos,argv,argNum)) <= argPos) break; continue; } if (CMargTest (argv [argPos],"-S","--source")) { source = dbData->Document(DBDocSourcePerson); if(source == (char *) NULL) source = &ch; if ((argNum = CMargShiftLeft (argPos,argv,argNum)) <= argPos) break; continue; } 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 (title == &ch) printf("Title: N/A\n"); else if (title != (char *) NULL) printf("Title: %s\n", title); if (domain == &ch) printf("Domain: N/A\n"); else if (domain != (char *) NULL) printf("Domain: %s\n", domain); if (subject == &ch) printf("Subject: N/A\n"); else if (subject != (char *) NULL) printf("Subject: %s\n", subject); if (version == &ch) printf("Version: N/A\n"); else if (version != (char *) NULL) printf("Version: %s\n", version); if (type == &ch) printf("Data Type: N/A\n"); else if (type != (char *) NULL) printf("Data Type: %s\n", type); if (institute == &ch) printf("Citation Institute: N/A\n"); else if (institute != (char *) NULL) printf("Citation Institute: %s\n",institute); if (citation == &ch) printf("Citation Reference: N/A\n"); else if (citation != (char *) NULL) printf("Citation Reference: %s\n",citation); if (person == &ch) printf("Person: N/A\n"); else if (person != (char *) NULL) printf("Person: %s\n", person); if (source == &ch) printf("Source: N/A\n"); else if (source != (char *) NULL) printf("Source: %s\n", source); if (comment == &ch) printf("Comment: N/A\n"); else if (comment != (char *) NULL) printf("Comment: %s\n", comment); if (verbose) RGlibPauseClose (); return (0); }
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; DBInt setZero = false; DBObjData *data; for (argPos = 1; argPos < argNum;) { if (CMargTest (argv[argPos], "-a", "--value")) { int valCodes[] = {true, false}; const char *values[] = {"zero", "null", (char *) NULL}; if ((argNum = CMargShiftLeft(argPos, argv, argNum)) <= argPos) { CMmsgPrint(CMmsgUsrError, "Missing gridtype!"); return (CMfailed); } if ((setZero = CMoptLookup(values, argv[argPos], true)) == DBFault) { CMmsgPrint(CMmsgUsrError, "Invalid value!"); return (CMfailed); } setZero = valCodes[setZero]; 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 domain!"); 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 grid>", CMfileName(argv[0])); CMmsgPrint(CMmsgInfo, " -a,--value [zero|null]"); 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]); data = new DBObjData(); ret = (argNum > 1) && (strcmp(argv[1], "-") != 0) ? data->Read(argv[1]) : data->Read(stdin); if ((ret == DBFault) || (data->Type() != DBTypeGridContinuous)) { delete data; return (CMfailed); } if (title != (char *) NULL) data->Name(title); if (subject != (char *) NULL) data->Document(DBDocSubject, subject); if (domain != (char *) NULL) data->Document(DBDocGeoDomain, domain); if (version != (char *) NULL) data->Document(DBDocVersion, version); if ((ret = RGlibGridNoNegatives(data, setZero)) == DBSuccess) ret = (argNum > 2) && (strcmp(argv[2], "-") != 0) ? data->Write(argv[2]) : data->Write(stdout); delete data; if (verbose) RGlibPauseClose(); return (ret); }
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; DBInt shadeSet = DBFault; DBObjData *grdData; for (argPos = 1;argPos < argNum; ) { 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 domain!"); 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],"-s","--shadeset")) { int shadeCodes [] = { DBDataFlagDispModeContStandard, DBDataFlagDispModeContGreyScale, DBDataFlagDispModeContBlueScale, DBDataFlagDispModeContBlueRed, DBDataFlagDispModeContElevation }; const char *shadeSets [] = { "standard","grey","blue","blue-to-red","elevation", (char *) NULL }; if ((argNum = CMargShiftLeft (argPos,argv,argNum)) <= argPos) { CMmsgPrint (CMmsgUsrError,"Missing shadeset!"); return (CMfailed); } if ((shadeSet = CMoptLookup (shadeSets,argv [argPos],true)) == DBFault) { CMmsgPrint (CMmsgUsrError,"Invalid shadeset!"); return (CMfailed); } shadeSet = shadeCodes [shadeSet]; 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 netcdf> <output data>",CMfileName(argv[0])); CMmsgPrint (CMmsgInfo," -t,--title [dataset title]"); CMmsgPrint (CMmsgInfo," -u,--subject [subject]"); CMmsgPrint (CMmsgInfo," -d,--domain [domain]"); CMmsgPrint (CMmsgInfo," -v,--version [version]"); CMmsgPrint (CMmsgInfo," -s,--shadeset [standard|grey|blue|blue-to-red|elevation]"); 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 < 2) { CMmsgPrint (CMmsgUsrError,"Missing input file"); return (CMfailed); } if (argNum > 3) { CMmsgPrint (CMmsgUsrError,"Extra arguments!"); return (CMfailed); } grdData = new DBObjData ("Noname",DBTypeGridContinuous); ret = DBImportNetCDF (grdData,argv[1]); if (title != (char *) NULL) grdData->Name (title); if (subject != (char *) NULL) grdData->Document (DBDocSubject,subject); if (domain != (char *) NULL) grdData->Document (DBDocGeoDomain,domain); if (version != (char *) NULL) grdData->Document (DBDocVersion,version); if (shadeSet != DBFault) { grdData->Flags (DBDataFlagDispModeContShadeSets,DBClear); grdData->Flags (shadeSet,DBSet); } ret = (argNum > 2) && (strcmp (argv [2],"-") != 0) ? grdData->Write (argv [2]) : grdData->Write (stdout); delete grdData; return (ret); }
int main(int argc, char *argv[]) { int argPos, argNum = argc, ret, fieldNum = 0, verbose = false; char *tableName = (char *) NULL; char *title = (char *) NULL, *subject = (char *) NULL; char *domain = (char *) NULL, *version = (char *) NULL; DBObjData *data; DBObjectLIST<DBObjTableField> *fieldList; DBObjTable *table; DBObjTableField *fieldPTR; CMDtblSortField *fields = (CMDtblSortField *) NULL; for (argPos = 1; argPos < argNum;) { if (CMargTest (argv[argPos], "-a", "--table")) { if ((argNum = CMargShiftLeft(argPos, argv, argNum)) <= argPos) { CMmsgPrint(CMmsgUsrError, "Missing table name!"); if (fields != (CMDtblSortField *) NULL) free(fields); return (CMfailed); } tableName = argv[argPos]; if ((argNum = CMargShiftLeft(argPos, argv, argNum)) <= argPos) break; continue; } if (CMargTest (argv[argPos], "-A", "--ascending")) { if ((argNum = CMargShiftLeft(argPos, argv, argNum)) <= argPos) { CMmsgPrint(CMmsgUsrError, "Missing sort field!"); if (fields != (CMDtblSortField *) NULL) free(fields); return (CMfailed); } if ((fields = (CMDtblSortField *) realloc(fields, (fieldNum + 1) * sizeof(CMDtblSortField))) == (CMDtblSortField *) NULL) { CMmsgPrint(CMmsgSysError, "Memory reallocation error in: %s, %n", __FILE__, __LINE__); return (CMfailed); } fields[fieldNum].FieldName(argv[argPos]); fields[fieldNum].Ascending(true); fieldNum++; if ((argNum = CMargShiftLeft(argPos, argv, argNum)) <= argPos) break; continue; } if (CMargTest (argv[argPos], "-D", "--descending")) { if ((argNum = CMargShiftLeft(argPos, argv, argNum)) <= argPos) { CMmsgPrint(CMmsgUsrError, "Missing selection mode!"); if (fields != (CMDtblSortField *) NULL) free(fields); return (CMfailed); } if ((fields = (CMDtblSortField *) realloc(fields, (fieldNum + 1) * sizeof(CMDtblSortField))) == (CMDtblSortField *) NULL) { CMmsgPrint(CMmsgSysError, "Memory reallocation error in: %s, %n", __FILE__, __LINE__); return (CMfailed); } fields[fieldNum].FieldName(argv[argPos]); fields[fieldNum].Ascending(false); fieldNum++; 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 domain!"); 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 file> <output file>", CMfileName(argv[0])); CMmsgPrint(CMmsgInfo, " -a,--table [ table name ]"); CMmsgPrint(CMmsgInfo, " -A,--ascending [ fieldname ]"); CMmsgPrint(CMmsgInfo, " -D,--descending [ fieldname ]"); 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"); if (fields != (CMDtblSortField *) NULL) free(fields); return (DBSuccess); } if ((argv[argPos][0] == '-') && ((int) strlen(argv[argPos]) > 1)) { CMmsgPrint(CMmsgUsrError, "Unknown option: %s!", argv[argPos]); if (fields != (CMDtblSortField *) NULL) free(fields); return (CMfailed); } argPos++; } if (argNum > 3) { CMmsgPrint(CMmsgUsrError, "Extra arguments!"); if (fields != (CMDtblSortField *) NULL) free(fields); return (CMfailed); } if (verbose) RGlibPauseOpen(argv[0]); data = new DBObjData(); if (((argNum > 1) && (strcmp(argv[1], "-") != 0) ? data->Read(argv[1]) : data->Read(stdin)) == DBFault) { if (fields != (CMDtblSortField *) NULL)free(fields); delete data; return (CMfailed); } if (title != (char *) NULL) data->Name(title); if (subject != (char *) NULL) data->Document(DBDocSubject, subject); if (domain != (char *) NULL) data->Document(DBDocGeoDomain, domain); if (version != (char *) NULL) data->Document(DBDocVersion, version); if (tableName == (char *) NULL) tableName = DBrNItems; if ((table = data->Table(tableName)) == (DBObjTable *) NULL) { CMmsgPrint(CMmsgUsrError, "Invalid table!"); if (fields != (CMDtblSortField *) NULL) free(fields); delete data; return (CMfailed); } if (fields != (CMDtblSortField *) NULL) { DBInt fieldID; fieldList = new DBObjectLIST<DBObjTableField>("Fields"); for (fieldID = 0; fieldID < fieldNum; ++fieldID) { if ((fieldPTR = table->Field(fields[fieldID].FieldName())) == (DBObjTableField *) NULL) { CMmsgPrint(CMmsgUsrError, "Invalid field: %s!", fields[fieldID].FieldName()); free(fields); return (CMfailed); } if (fields[fieldID].Ascending()) fieldPTR->Flags(DBObjectFlagSortReversed, DBClear); else fieldPTR->Flags(DBObjectFlagSortReversed, DBSet); fieldList->Add(new DBObjTableField(*fieldPTR)); } table->ListSort(fieldList); table->ItemSort(); delete fieldList; free(fields); } ret = (argNum > 2) && (strcmp(argv[2], "-") != 0) ? data->Write(argv[2]) : data->Write(stdout); delete data; if (verbose) RGlibPauseClose(); return (ret); }
int main (int argc,char **argv) { int argPos, argNum = argc; char *metaDB = (char *) NULL; int spin = true, progress = true; const char *modes [] = { (char *) "yes", (char *) "no", NULL }; int codes [] = { true, false }; Widget mainForm; RGISWorkspace *workspace; for (argPos = 1;argPos < argNum; ) { if (CMargTest (argv [argPos],"-m","--metadb")) { if ((argNum = CMargShiftLeft (argPos,argv,argc)) <= argPos) { CMmsgPrint (CMmsgUsrError, "Missing metadb argument!"); return (CMfailed); } metaDB = argv [argPos]; if ((argNum = CMargShiftLeft (argPos,argv,argc)) <= argPos) break; continue; } if (CMargTest (argv [argPos],"-p","--progress")) { if ((argNum = CMargShiftLeft (argPos,argv,argc)) <= argPos) { CMmsgPrint (CMmsgUsrError,"Missing progress mode!"); return (CMfailed); } if ((progress = CMoptLookup (modes,argv [argPos],true)) == DBFault) { CMmsgPrint (CMmsgUsrError,"Invalid progress mode!"); return (CMfailed); } progress = codes [progress]; if ((argNum = CMargShiftLeft (argPos,argv,argc)) <= argPos) break; continue; } if (CMargTest (argv [argPos],"-s","--spin")) { if ((argNum = CMargShiftLeft (argPos,argv,argc)) <= argPos) { CMmsgPrint (CMmsgUsrError,"Missing spin mode!"); return (CMfailed); } if ((spin = CMoptLookup (modes,argv [argPos],true)) == DBFault) { CMmsgPrint (CMmsgUsrError,"Invalid spin mode!"); return (CMfailed); } spin = codes [spin]; if ((argNum = CMargShiftLeft (argPos,argv,argc)) <= argPos) break; continue; } if (CMargTest (argv [argPos],"-P","--planet")) { int planet; const char *planets [] = { "Earth", "Mars", "Venus", NULL }; DBFloat radius [] = { 6371.2213, 6371.2213 * 0.53264, 6371.2213 * 0.94886 }; if ((argNum = CMargShiftLeft (argPos,argv,argc)) <= argPos) { CMmsgPrint (CMmsgUsrError,"Missing planet!"); return (CMfailed); } if ((planet = CMoptLookup (planets,argv [argPos],true)) == DBFault) { if (sscanf (argv [argPos],"%lf",radius) != 1) { CMmsgPrint (CMmsgUsrError,"Invalid planet!"); return (CMfailed); } planet = 0; } DBMathSetGlobeRadius (radius [planet]); if ((argNum = CMargShiftLeft (argPos,argv,argc)) <= argPos) break; continue; } if (CMargTest (argv [argPos],"-h","--help")) { CMmsgPrint (CMmsgInfo, "rgis [options]"); CMmsgPrint (CMmsgInfo, " -m, --metadb [meta database]"); CMmsgPrint (CMmsgInfo, " -p, --progress [yes|no]"); CMmsgPrint (CMmsgInfo, " -s, --spin [yes|no]"); CMmsgPrint (CMmsgInfo, " -P, --planet [Earth|Mars|Venus|radius]"); CMmsgPrint (CMmsgInfo, " -h, --help"); return (DBSuccess); } if ((argv [argPos][0] == '-') && (strlen (argv [argPos]) > 1)) { CMmsgPrint (CMmsgUsrError, "Unknown option: %s!",argv [argPos]); return (DBFault); } argPos++; } workspace = new RGISWorkspace; mainForm = UIInitialize ((char *) "GHAAS V2.2 - RiverGIS",(char *) "GHAASrgis",(char *) "RGISMain.html", RGISMainMenu,(void *) workspace,&argc,argv,720,500,(bool) spin,(bool) progress); UIDataset ((char *) "GHAASrgis",metaDB); XtVaSetValues (mainForm,XmNkeyboardFocusPolicy, XmPOINTER, NULL); workspace->Initialize (mainForm); if (argNum > 1) { DBDataset *dataset; DBObjData *data; DBObjectLIST<DBObjMetaEntry> *metaList; DBObjMetaEntry *metaEntry; dataset = UIDataset (); metaList = dataset->MetaList (); for (argPos = 1;argPos < argNum; ++argPos) { data = new DBObjData (); if (data->Read (argv [argPos]) == DBSuccess) { workspace->CurrentData (data); metaEntry = metaList->Item (data->Name ()); metaEntry->FileName (data->FileName ()); } else delete data; } } while (UILoop ()); delete UIDataset (); return (DBSuccess); }
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 *fieldName = (char *) NULL; DBObjData *data; for (argPos = 1; argPos < argNum;) { if (CMargTest (argv[argPos], "-f", "--field")) { if ((argNum = CMargShiftLeft(argPos, argv, argNum)) <= argPos) { CMmsgPrint(CMmsgUsrError, "Missing symbol field!"); return (CMfailed); } fieldName = 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 domain!"); 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 symbol cover> <output symbol cover>", CMfileName(argv[0])); CMmsgPrint(CMmsgInfo, " -f,--fiedl [field]"); 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 (fieldName == (char *) NULL) { CMmsgPrint(CMmsgUsrError, "Field name is not specified"); return (CMfailed); } data = new DBObjData(); ret = (argNum > 1) && (strcmp(argv[1], "-") != 0) ? data->Read(argv[1]) : data->Read(stdin); if ((ret == DBFault) || ((data->Type() != DBTypeVectorPoint) && (data->Type() != DBTypeVectorLine) && (data->Type() != DBTypeVectorPolygon) && (data->Type() != DBTypeGridDiscrete))) { delete data; return (CMfailed); } if (title != (char *) NULL) data->Name(title); if (subject != (char *) NULL) data->Document(DBDocSubject, subject); if (domain != (char *) NULL) data->Document(DBDocGeoDomain, domain); if (version != (char *) NULL) data->Document(DBDocVersion, version); if ((ret = RGlibGenFuncSymbolField(data, fieldName)) == DBSuccess) ret = (argNum > 2) && (strcmp(argv[2], "-") != 0) ? data->Write(argv[2]) : data->Write(stdout); delete data; if (verbose) RGlibPauseClose(); return (ret); }
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; DBObjData *netData; DBNetworkIF *netIF; for (argPos = 1; argPos < argNum;) { 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 domain!"); 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 network> <output network>", CMfileName(argv[0])); 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]); netData = new DBObjData(); ret = (argNum > 1) && (strcmp(argv[1], "-") != 0) ? netData->Read(argv[1]) : netData->Read(stdin); if (netData->Type() != DBTypeNetwork) { CMmsgPrint(CMmsgUsrError, "Not a network input!"); delete netData; return (CMfailed); } if (title != (char *) NULL) netData->Name(title); if (subject != (char *) NULL) netData->Document(DBDocSubject, subject); if (domain != (char *) NULL) netData->Document(DBDocGeoDomain, domain); if (version != (char *) NULL) netData->Document(DBDocVersion, version); netIF = new DBNetworkIF(netData); ret = netIF->Trim(); delete netIF; if (ret == DBSuccess) ret = (argNum > 2) && (strcmp(argv[2], "-") != 0) ? netData->Write(argv[2]) : netData->Write(stdout); delete netData; if (verbose) RGlibPauseClose(); return (ret); }
void RGISAnalysePointSTNPointsCBK (Widget widget,RGISWorkspace *workspace,XmAnyCallbackStruct *callData) { char *srcText; static DBInt cont, diffMethod; DBDataset *dataset; DBObjData *dbData; DBObjTable *table; DBObjTableField *field = (DBObjTableField *) NULL; static Widget dShell = NULL, mainForm, button; static Widget srcTextF, dstTextF, cmpTextF, errTextF; static Widget menu, mButton; if (dShell == (Widget) NULL) { XmString string; dShell = UIDialogForm ((char *) "Area Field",false); mainForm = UIDialogFormGetMainForm (dShell); string = XmStringCreate ((char *) "Select",UICharSetBold); button = XtVaCreateManagedWidget ("RGISAnalysePointSTNPointsSrcButton",xmPushButtonWidgetClass,mainForm, XmNtopAttachment, XmATTACH_FORM, XmNtopOffset, 10, XmNrightAttachment, XmATTACH_FORM, XmNrightOffset, 10, XmNmarginHeight, 5, XmNtraversalOn, False, XmNlabelString, string, XmNuserData, DBTableFieldIsNumeric, NULL); XmStringFree (string); srcTextF = XtVaCreateManagedWidget ("RGISAnalysePointSTNPointsSrcTextF",xmTextFieldWidgetClass,mainForm, XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET, XmNtopWidget, button, XmNrightAttachment, XmATTACH_WIDGET, XmNrightWidget, button, XmNrightOffset, 10, XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET, XmNbottomWidget, button, XmNmaxLength, DBStringLength, XmNcolumns, DBStringLength / 2, NULL); XtAddCallback (button,XmNactivateCallback,(XtCallbackProc) UIAuxObjectSelectCBK,srcTextF); string = XmStringCreate ((char *) "Area Field:",UICharSetBold); XtVaCreateManagedWidget ("RGISAnalysePointSTNPointsSrcLabel",xmLabelWidgetClass,mainForm, XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET, XmNtopWidget, button, XmNleftAttachment, XmATTACH_FORM, XmNleftOffset, 10, XmNrightAttachment, XmATTACH_WIDGET, XmNrightWidget, srcTextF, XmNrightOffset, 10, XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET, XmNbottomWidget, button, XmNlabelString, string, NULL); XmStringFree (string); string = XmStringCreate ((char *) "Select",UICharSetBold); button = XtVaCreateManagedWidget ("RGISAnalysePointSTNPointsSrcButton",xmPushButtonWidgetClass,mainForm, XmNtopAttachment, XmATTACH_WIDGET, XmNtopWidget, srcTextF, XmNtopOffset, 10, XmNrightAttachment, XmATTACH_FORM, XmNrightOffset, 10, XmNmarginHeight, 5, XmNtraversalOn, False, XmNlabelString, string, XmNuserData, DBTableFieldIsNumeric, NULL); XmStringFree (string); dstTextF = XtVaCreateManagedWidget ("RGISAnalysePointSTNPointsDstTextF",xmTextFieldWidgetClass,mainForm, XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET, XmNtopWidget, button, XmNrightAttachment, XmATTACH_WIDGET, XmNrightWidget, button, XmNrightOffset, 10, XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET, XmNbottomWidget, button, XmNmaxLength, DBStringLength, XmNcolumns, DBStringLength / 2, NULL); XtAddCallback (button,XmNactivateCallback,(XtCallbackProc) UIAuxObjectSelectCBK,dstTextF); string = XmStringCreate ((char *) "Target Field:",UICharSetBold); XtVaCreateManagedWidget ("RGISAnalysePointSTNPointsDstLabel",xmLabelWidgetClass,mainForm, XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET, XmNtopWidget, button, XmNleftAttachment, XmATTACH_FORM, XmNleftOffset, 10, XmNrightAttachment, XmATTACH_WIDGET, XmNrightWidget, dstTextF, XmNrightOffset, 10, XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET, XmNbottomWidget, button, XmNlabelString, string, NULL); XmStringFree (string); string = XmStringCreate ((char *) "Select",UICharSetBold); button = XtVaCreateManagedWidget ("RGISAnalysePointSTNPointsErrorButton",xmPushButtonWidgetClass,mainForm, XmNtopAttachment, XmATTACH_WIDGET, XmNtopWidget, dstTextF, XmNtopOffset, 10, XmNrightAttachment, XmATTACH_FORM, XmNrightOffset, 10, XmNmarginHeight, 5, XmNtraversalOn, False, XmNlabelString, string, XmNuserData, DBTableFieldIsNumeric, NULL); XmStringFree (string); cmpTextF = XtVaCreateManagedWidget ("RGISAnalysePointSTNPointsCompTextF",xmTextFieldWidgetClass,mainForm, XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET, XmNtopWidget, button, XmNrightAttachment, XmATTACH_WIDGET, XmNrightWidget, button, XmNrightOffset, 10, XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET, XmNbottomWidget, button, XmNmaxLength, DBStringLength, XmNcolumns, DBStringLength / 2, NULL); XtAddCallback (button,XmNactivateCallback,(XtCallbackProc) UIAuxObjectSelectCBK,cmpTextF); string = XmStringCreate ((char *) "Compare Field:",UICharSetBold); XtVaCreateManagedWidget ("RGISAnalysePointSTNPointsDstLabel",xmLabelWidgetClass,mainForm, XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET, XmNtopWidget, button, XmNleftAttachment, XmATTACH_FORM, XmNleftOffset, 10, XmNrightAttachment, XmATTACH_WIDGET, XmNrightWidget, cmpTextF, XmNrightOffset, 10, XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET, XmNbottomWidget, button, XmNlabelString, string, NULL); XmStringFree (string); string = XmStringCreate ((char *) "Select",UICharSetBold); button = XtVaCreateManagedWidget ("RGISAnalysePointSTNPointsErrorButton",xmPushButtonWidgetClass,mainForm, XmNtopAttachment, XmATTACH_WIDGET, XmNtopWidget, cmpTextF, XmNtopOffset, 10, XmNrightAttachment, XmATTACH_FORM, XmNrightOffset, 10, XmNmarginHeight, 5, XmNtraversalOn, False, XmNlabelString, string, XmNuserData, DBTableFieldIsNumeric, NULL); XmStringFree (string); errTextF = XtVaCreateManagedWidget ("RGISAnalysePointSTNPointsErrorTextF",xmTextFieldWidgetClass,mainForm, XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET, XmNtopWidget, button, XmNrightAttachment, XmATTACH_WIDGET, XmNrightWidget, button, XmNrightOffset, 10, XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET, XmNbottomWidget, button, XmNmaxLength, DBStringLength, XmNcolumns, DBStringLength / 2, NULL); XtAddCallback (button,XmNactivateCallback,(XtCallbackProc) UIAuxObjectSelectCBK,errTextF); string = XmStringCreate ((char *) "Error Field:",UICharSetBold); XtVaCreateManagedWidget ("RGISAnalysePointSTNPointsDstLabel",xmLabelWidgetClass,mainForm, XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET, XmNtopWidget, button, XmNleftAttachment, XmATTACH_FORM, XmNleftOffset, 10, XmNrightAttachment, XmATTACH_WIDGET, XmNrightWidget, errTextF, XmNrightOffset, 10, XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET, XmNbottomWidget, button, XmNlabelString, string, NULL); XmStringFree (string); menu = XmCreatePulldownMenu (mainForm,(char *) "RGISAnalysePointSTNPointsMenu",NULL,0); string = XmStringCreate ((char *) "Plain",UICharSetNormal); mButton = XtVaCreateManagedWidget ("RGISAnalysePointSTNPointsMenuButton",xmPushButtonWidgetClass,menu, XmNlabelString, string, XmNuserData, &diffMethod, NULL); XmStringFree (string); XtAddCallback (mButton,XmNactivateCallback,(XtCallbackProc) UIAuxSetIntegerCBK,(XtPointer) 0); string = XmStringCreate ((char *) "Simple %",UICharSetNormal); mButton = XtVaCreateManagedWidget ("RGISAnalysePointSTNPointsMenuButton",xmPushButtonWidgetClass,menu, XmNlabelString, string, XmNuserData, &diffMethod, NULL); XmStringFree (string); XtAddCallback (mButton,XmNactivateCallback,(XtCallbackProc) UIAuxSetIntegerCBK,(XtPointer) 1); string = XmStringCreate ((char *) "Symmetric %",UICharSetNormal); mButton = XtVaCreateManagedWidget ("RGISAnalysePointSTNPointsMenuButton",xmPushButtonWidgetClass,menu, XmNlabelString, string, XmNuserData, &diffMethod, NULL); XmStringFree (string); XtAddCallback (mButton,XmNactivateCallback,(XtCallbackProc) UIAuxSetIntegerCBK,(XtPointer) 2); string = XmStringCreate ((char *) "Difference Method:",UICharSetBold); menu = XtVaCreateManagedWidget ("RGISAnalysePointSTNPointsMenu",xmRowColumnWidgetClass,mainForm, XmNtopAttachment, XmATTACH_WIDGET, XmNtopWidget, button, XmNtopOffset, 10, XmNrightAttachment, XmATTACH_FORM, XmNrightOffset, 10, XmNbottomAttachment, XmATTACH_FORM, XmNbottomOffset, 10, XmNrowColumnType, XmMENU_OPTION, XmNlabelString, string, XmNsubMenuId, menu, NULL); XmStringFree (string); XtAddCallback (UIDialogFormGetOkButton (dShell),XmNactivateCallback,(XtCallbackProc) UIAuxSetBooleanTrueCBK,&cont); XtSetSensitive (UIDialogFormGetOkButton (dShell),true); } dataset = UIDataset (); dbData = dataset->Data (); table = dbData->Table (DBrNItems); XtVaSetValues (srcTextF,XmNuserData,table->Fields (),NULL); XtVaSetValues (dstTextF,XmNuserData,table->Fields (),NULL); XtVaSetValues (cmpTextF,XmNuserData,table->Fields (),NULL); XtVaSetValues (errTextF,XmNuserData,table->Fields (),NULL); UIDialogFormPopup (dShell); cont = false; while (UILoop ()) { if ((strlen (srcText = XmTextFieldGetString (srcTextF)) > 0) && ((field = table->Field (srcText)) != (DBObjTableField *) NULL)) XtSetSensitive (UIDialogFormGetOkButton (dShell),True); else XtSetSensitive (UIDialogFormGetOkButton (dShell),False); XtFree (srcText); if ((strlen (srcText = XmTextFieldGetString (cmpTextF)) > 0) && ((field = table->Field (srcText)) != (DBObjTableField *) NULL)) { XtSetSensitive (button,True); XtSetSensitive (errTextF,True); XtSetSensitive (menu,True); } else { XmTextFieldSetString (errTextF,(char *) ""); XtSetSensitive (button,False); XtSetSensitive (errTextF,False); XtSetSensitive (menu,False); } XtFree (srcText); } UIDialogFormPopdown (dShell); if (cont) { char dataName [DBDataNameLen + 5]; DBObjData *netData = dbData->LinkedData (); sprintf (dataName,"%s STN",dbData->Name ()); dbData = new DBObjData (*dbData); dbData->Name (dataName); if (UIDataHeaderForm (dbData)) { char *dstText; DBObjTable *groups; DBObjRecord *pointRec; srcText = XmTextFieldGetString (srcTextF); dbData->LinkedData (netData); table = dbData->Table (DBrNItems); groups = dbData->Table (DBrNGroups); for (pointRec = table->First ();pointRec != (DBObjRecord *) NULL;pointRec = table->Next ()) if ((pointRec->Flags () & DBObjectFlagIdle) == DBObjectFlagIdle) { if (groups != (DBObjTable *) NULL) groups->Delete (groups->Item (pointRec->RowID ())); table->Delete (pointRec); pointRec = table->Next (DBBackward); } field = table->Field (srcText); XtFree (srcText); RGlibPointSTNCoordinates (dbData,field); UIPauseDialogOpen ((char *) "Moving Points"); RGlibPointSTNCharacteristics (dbData); UIPauseDialogClose (); srcText = XmTextFieldGetString (srcTextF); if (strlen (dstText = XmTextFieldGetString (dstTextF)) > 0) { srcText = XmTextFieldGetString (srcTextF); RGlibGenFuncTopoSubtract (table,RGlibNextStation,srcText,dstText); XtFree (dstText); } if (strlen (dstText = XmTextFieldGetString (errTextF)) > 0) { char *cmpText; srcText = XmTextFieldGetString (srcTextF); cmpText = XmTextFieldGetString (cmpTextF); RGlibGenFuncFieldCompare (table,srcText,cmpText,dstText,diffMethod); XtFree (dstText); XtFree (cmpText); } XtFree (srcText); UI2DViewRedrawAll (); workspace->CurrentData (dbData); } else delete dbData; } }
void RGISToolsConvertToPointCBK (Widget widget,RGISWorkspace *workspace,XmAnyCallbackStruct *callData) { char *nText, *xText, *yText, *selection; int allowOk; static int convert; DBDataset *dataset = UIDataset (); DBObjData *dbData = dataset->Data (); DBObjTable *itemTable; static Widget tableSelect = (Widget) NULL; static Widget dShell = (Widget) NULL, mainForm; static Widget nameTextF, xCoordTextF, yCoordTextF; XmString string; if (tableSelect == (Widget) NULL) tableSelect = UISelectionCreate ((char *) "Table Selection"); selection = UISelectObject (tableSelect,(DBObjectLIST<DBObject> *) dbData->Tables ()); if (selection == (char *) NULL) return; if ((itemTable = dbData->Table (selection)) == (DBObjTable *) NULL) { CMmsgPrint (CMmsgAppError, "Invalid Table in: %s %d",__FILE__,__LINE__); return; } _RGISToolsConvertToPointFields = itemTable->Fields (); if (dShell == (Widget) NULL) { Widget button; dShell = UIDialogForm ((char *) "Convert Table To Point",false); mainForm = UIDialogFormGetMainForm (dShell); string = XmStringCreate ((char *) "Select",UICharSetBold); button = XtVaCreateManagedWidget ("RGISToolsConvertToPointNameButton",xmPushButtonWidgetClass,mainForm, XmNtopAttachment, XmATTACH_FORM, XmNtopOffset, 10, XmNrightAttachment, XmATTACH_FORM, XmNrightOffset, 10, XmNmarginHeight, 5, XmNtraversalOn, False, XmNlabelString, string, XmNuserData, DBTableFieldIsString, NULL); XmStringFree (string); nameTextF = XtVaCreateManagedWidget ("RGISToolsConvertToPointNameTextF",xmTextFieldWidgetClass,mainForm, XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET, XmNtopWidget, button, XmNrightAttachment, XmATTACH_WIDGET, XmNrightWidget, button, XmNrightOffset, 10, XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET, XmNbottomWidget, button, XmNmaxLength, DBStringLength, XmNcolumns, DBStringLength / 2, NULL); XtAddCallback (button,XmNactivateCallback,(XtCallbackProc) _RGISToolsConvertToPointSelectCBK,nameTextF); string = XmStringCreate ((char *) "Name Field:",UICharSetBold); XtVaCreateManagedWidget ("RGISToolsConvertToPointNameLabel",xmLabelWidgetClass,mainForm, XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET, XmNtopWidget, button, XmNleftAttachment, XmATTACH_FORM, XmNleftOffset, 10, XmNrightAttachment, XmATTACH_WIDGET, XmNrightWidget, nameTextF, XmNrightOffset, 10, XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET, XmNbottomWidget, button, XmNlabelString, string, NULL); XmStringFree (string); string = XmStringCreate ((char *) "Select",UICharSetBold); button = XtVaCreateManagedWidget ("RGISToolsConvertToPointXCoordButton",xmPushButtonWidgetClass,mainForm, XmNtopAttachment, XmATTACH_WIDGET, XmNtopWidget, button, XmNtopOffset, 10, XmNrightAttachment, XmATTACH_FORM, XmNrightOffset, 10, XmNmarginHeight, 5, XmNtraversalOn, False, XmNlabelString, string, XmNuserData, DBTableFieldIsNumeric, NULL); XmStringFree (string); xCoordTextF = XtVaCreateManagedWidget ("RGISToolsConvertToPointXCoordTextF",xmTextFieldWidgetClass,mainForm, XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET, XmNtopWidget, button, XmNrightAttachment, XmATTACH_WIDGET, XmNrightWidget, button, XmNrightOffset, 10, XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET, XmNbottomWidget, button, XmNmaxLength, DBStringLength, XmNcolumns, DBStringLength / 2, NULL); XtAddCallback (button,XmNactivateCallback,(XtCallbackProc) _RGISToolsConvertToPointSelectCBK,xCoordTextF); string = XmStringCreate ((char *) "X Coordinate:",UICharSetBold); XtVaCreateManagedWidget ("RGISToolsConvertToPointXCoordLabel",xmLabelWidgetClass,mainForm, XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET, XmNtopWidget, button, XmNleftAttachment, XmATTACH_FORM, XmNleftOffset, 10, XmNrightAttachment, XmATTACH_WIDGET, XmNrightWidget, nameTextF, XmNrightOffset, 10, XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET, XmNbottomWidget, button, XmNlabelString, string, NULL); XmStringFree (string); string = XmStringCreate ((char *) "Select",UICharSetBold); button = XtVaCreateManagedWidget ("RGISToolsConvertToPointYCoordButton",xmPushButtonWidgetClass,mainForm, XmNtopAttachment, XmATTACH_WIDGET, XmNtopWidget, button, XmNtopOffset, 10, XmNrightAttachment, XmATTACH_FORM, XmNrightOffset, 10, XmNbottomAttachment, XmATTACH_FORM, XmNbottomOffset, 10, XmNmarginHeight, 5, XmNtraversalOn, False, XmNlabelString, string, XmNuserData, DBTableFieldIsNumeric, NULL); XmStringFree (string); yCoordTextF = XtVaCreateManagedWidget ("RGISToolsConvertToPointYCoordTextF",xmTextFieldWidgetClass,mainForm, XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET, XmNtopWidget, button, XmNrightAttachment, XmATTACH_WIDGET, XmNrightWidget, button, XmNrightOffset, 10, XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET, XmNbottomWidget, button, XmNmaxLength, DBStringLength, XmNcolumns, DBStringLength / 2, NULL); XtAddCallback (button,XmNactivateCallback,(XtCallbackProc) _RGISToolsConvertToPointSelectCBK,yCoordTextF); string = XmStringCreate ((char *) "Y Coordinate:",UICharSetBold); XtVaCreateManagedWidget ("RGISToolsConvertToPointYCoordLabel",xmLabelWidgetClass,mainForm, XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET, XmNtopWidget, button, XmNleftAttachment, XmATTACH_FORM, XmNleftOffset, 10, XmNrightAttachment, XmATTACH_WIDGET, XmNrightWidget, nameTextF, XmNrightOffset, 10, XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET, XmNbottomWidget, button, XmNlabelString, string, NULL); XmStringFree (string); XtAddCallback (UIDialogFormGetOkButton (dShell),XmNactivateCallback,(XtCallbackProc) UIAuxSetBooleanTrueCBK,&convert); } convert = false; UIDialogFormPopup (dShell); while (UILoop ()) { xText = XmTextFieldGetString (xCoordTextF); yText = XmTextFieldGetString (yCoordTextF); allowOk = (strlen (xText) > 0) && (strlen (yText) > 0); XtFree (xText); XtFree (yText); XtSetSensitive (UIDialogFormGetOkButton (dShell),allowOk); } UIDialogFormPopdown (dShell); if (convert) { DBObjData *pntData = new DBObjData ("",DBTypeVectorPoint); pntData->Name (dbData->Name ()); pntData->Document (DBDocSubject,dbData->Document (DBDocSubject)); pntData->Document (DBDocGeoDomain,dbData->Document (DBDocGeoDomain)); if (UIDataHeaderForm (pntData)) { DBCoordinate coord; DBObjTableField *nField, *xField, *yField, *tblFLD, *pntFLD; DBObjRecord *tblRec, *pntRec, *symRec; DBObjTable *pntTable = pntData->Table (DBrNItems); DBObjTable *symbols = pntData->Table (DBrNSymbols); DBObjTableField *symbolIDFLD = symbols->Field (DBrNSymbolID); DBObjTableField *fgFLD = symbols->Field (DBrNForeground); DBObjTableField *bgFLD = symbols->Field (DBrNBackground); DBObjTableField *stFLD = symbols->Field (DBrNStyle); DBObjTableField *coordFLD = pntTable->Field (DBrNCoord); DBObjTableField *symbolFLD = pntTable->Field (DBrNSymbol); DBRegion extent; symRec = symbols->Add ("Default Symbol"); symbolIDFLD->Int (symRec,0); fgFLD->Int (symRec,1); bgFLD->Int (symRec,2); stFLD->Int (symRec,0); nText = XmTextFieldGetString (nameTextF); xText = XmTextFieldGetString (xCoordTextF); yText = XmTextFieldGetString (yCoordTextF); nField = _RGISToolsConvertToPointFields->Item (nText); xField = _RGISToolsConvertToPointFields->Item (xText); yField = _RGISToolsConvertToPointFields->Item (yText); XtFree (nText); XtFree (xText); XtFree (yText); for (tblRec = itemTable->First ();tblRec != (DBObjRecord *) NULL;tblRec = itemTable->Next ()) { if (CMmathEqualValues (coord.X = xField->Float (tblRec),xField->FloatNoData ())) continue; if (CMmathEqualValues (coord.Y = yField->Float (tblRec),yField->FloatNoData ())) continue; if (nField == (DBObjTableField *) NULL) pntRec = pntTable->Add (tblRec->Name ()); else pntRec = pntTable->Add (nField->String (tblRec)); coordFLD->Coordinate (pntRec,coord); symbolFLD->Record (pntRec,symRec); extent.Expand (coord); } pntData->Extent (extent); pntData->Projection (DBMathGuessProjection (extent)); pntData->Precision (DBMathGuessPrecision (extent)); for (tblFLD = _RGISToolsConvertToPointFields->First ();tblFLD != (DBObjTableField *) NULL;tblFLD = _RGISToolsConvertToPointFields->Next ()) if ((tblFLD != nField) && (tblFLD != xField) && (tblFLD != yField) && DBTableFieldIsVisible (tblFLD)) { pntTable->AddField (pntFLD = new DBObjTableField (*tblFLD)); pntFLD->Required (false); pntRec = pntTable->First (); for (tblRec = itemTable->First ();tblRec != (DBObjRecord *) NULL;tblRec = itemTable->Next ()) { if (CMmathEqualValues (coord.X = xField->Float (tblRec),xField->FloatNoData ())) continue; if (CMmathEqualValues (coord.Y = yField->Float (tblRec),yField->FloatNoData ())) continue; switch (tblFLD->Type ()) { case DBTableFieldString: pntFLD->String (pntRec,tblFLD->String (tblRec)); break; case DBTableFieldInt: pntFLD->Int (pntRec,tblFLD->Int (tblRec)); break; case DBTableFieldFloat: pntFLD->Float (pntRec,tblFLD->Float (tblRec)); break; case DBTableFieldDate: pntFLD->Date (pntRec,tblFLD->Date (tblRec)); break; default: CMmsgPrint (CMmsgAppError, "Invalid Field Type in: %s %d",__FILE__,__LINE__); break; } pntRec = pntTable->Next (); } } workspace->CurrentData (pntData); } else delete pntData; } }
int main(int argc, char* argv[]) { bool Interactive_Mode = false, All_Fields = false; char *title = (char *) NULL, *subject = (char *) NULL, *domain = (char *) NULL, *version = (char *) NULL; char *citation = (char *) NULL, *institute = (char *) NULL, *source = (char *) NULL, *person = (char *) NULL; char *comment = (char *) NULL; int argPos, argNum = argc, verbose = false; FILE *file = (FILE *) NULL; DBObjData *dbData = new DBObjData(); if (argc == 1) { CMDshowUsage(argv[0]); return 0; } for (argPos = 1;argPos < argNum; ) { if (CMargTest (argv [argPos],"-a","--all")) { All_Fields = true; if ((argNum = CMargShiftLeft (argPos,argv,argNum)) <= argPos) break; continue; } if (CMargTest (argv [argPos],"-i","--interactive")) { Interactive_Mode = true; 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")) { CMDshowUsage(argv[0]); return 0; } argPos++; } if(All_Fields) { CMDgetInfoInteractive(&title, (char *) "title:>", false); CMDgetInfoInteractive(&subject, (char *) "subject:>", false); CMDgetInfoInteractive(&domain, (char *) "domain:>", false); CMDgetInfoInteractive(&version, (char *) "version:>", false); CMDgetInfoInteractive(&citation, (char *) "citation (multiple lines finish with $):>",true); CMDgetInfoInteractive(&institute,(char *) "institute:>",false); CMDgetInfoInteractive(&person, (char *) "person:>", false); CMDgetInfoInteractive(&source, (char *) "source (multiple lines finish with $):>",true); CMDgetInfoInteractive(&comment, (char *) "comment (multiple lines finish with $):>",true); } else { for (argPos = 1;argPos < argNum; ) { if (CMargTest (argv [argPos],"-t","--title")) { argNum = CMargShiftLeft (argPos,argv,argNum); if(Interactive_Mode) CMDgetInfoInteractive(&title,(char *) "title:>",false); else { if (argNum <= argPos) { CMmsgPrint (CMmsgUsrError,"Missing title!"); return (CMfailed); } title = argv[argPos]; argNum = CMargShiftLeft (argPos,argv,argNum); } continue; } if (CMargTest (argv [argPos],"-d", "--domain")) { argNum = CMargShiftLeft (argPos,argv,argNum); if(Interactive_Mode) CMDgetInfoInteractive(&domain,(char *) "domain:>",false); else { if (argNum <= argPos) { CMmsgPrint (CMmsgUsrError,"Missing domain!"); return (CMfailed); } domain = argv[argPos]; argNum = CMargShiftLeft (argPos,argv,argNum); } continue; } if (CMargTest (argv [argPos],"-s","--subject")) { argNum = CMargShiftLeft (argPos,argv,argNum); if(Interactive_Mode) CMDgetInfoInteractive(&subject,(char *) "subject:>",false); else { if (argNum <= argPos) { CMmsgPrint (CMmsgUsrError,"Missing subject!"); return (CMfailed); } subject = argv[argPos]; argNum = CMargShiftLeft (argPos,argv,argNum); } continue; } if (CMargTest (argv [argPos],"-v","--version")) { argNum = CMargShiftLeft (argPos,argv,argNum); if(Interactive_Mode) CMDgetInfoInteractive(&version,(char *) "version:>",false); else { if (argNum <= argPos) { CMmsgPrint (CMmsgUsrError,"Missing version!"); return (CMfailed); } version = argv[argPos]; argNum = CMargShiftLeft (argPos,argv,argNum); } continue; } if (CMargTest (argv [argPos],"-n","--institute")) { argNum = CMargShiftLeft (argPos,argv,argNum); if(Interactive_Mode) CMDgetInfoInteractive(&institute,(char *) "institute:>",false); else { if (argNum <= argPos) { CMmsgPrint (CMmsgUsrError,"Missing institute!"); return (CMfailed); } institute = argv[argPos]; argNum = CMargShiftLeft (argPos,argv,argNum); } continue; } if (CMargTest (argv [argPos], "-p", "--person")) { argNum = CMargShiftLeft (argPos,argv,argNum); if(Interactive_Mode) CMDgetInfoInteractive(&person, (char *) "person:>",false); else { if (argNum <= argPos) { CMmsgPrint (CMmsgUsrError,"Missing person!"); return (CMfailed); } person = argv[argPos]; argNum = CMargShiftLeft (argPos,argv,argNum); } continue; } if (CMargTest (argv [argPos], "-i", "--citation")) { argNum = CMargShiftLeft (argPos,argv,argNum); if(Interactive_Mode) CMDgetInfoInteractive(&citation,(char *) "citation (multiple lines finish with $):>",true); else { if (argNum <= argPos) { CMmsgPrint (CMmsgUsrError,"Missing citation!"); return (CMfailed); } citation = argv[argPos]; argNum = CMargShiftLeft (argPos,argv,argNum); } continue; } if (CMargTest (argv [argPos],"-c","--comment")) { argNum = CMargShiftLeft (argPos,argv,argNum); if(Interactive_Mode) CMDgetInfoInteractive(&comment,(char *) "comment (multiple lines finish with $):>",true); else { if (argNum <= argPos) { CMmsgPrint (CMmsgUsrError,"Missing comment!"); return (CMfailed); } comment = argv[argPos]; argNum = CMargShiftLeft (argPos,argv,argNum); } continue; } if (CMargTest (argv [argPos],"-S","--source")) { argNum = CMargShiftLeft (argPos,argv,argNum); if(Interactive_Mode) CMDgetInfoInteractive(&source,(char *) "source (multiple lines finish with $):>",true); else { if (argNum < argPos) { CMmsgPrint (CMmsgUsrError,"Missing source!"); return (CMfailed); } source = argv[argPos]; argNum = CMargShiftLeft (argPos,argv,argNum); } continue; } 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 ((argNum > 1) && (strcmp(argv[1],"-") != 0)) { file = fopen (argv[1],"r"); if(dbData->Read(file) == DBFault) { delete dbData; return(DBFault); } fclose(file); file = (FILE *) NULL; } else { CMmsgPrint (CMmsgInfo,"No data file, reading from stdin and writing to stdout!"); file = stdout; if(dbData->Read(stdin) == DBFault) { delete dbData; return(DBFault); } } if(title != (char *) NULL) dbData->Name(title); if(domain != (char *) NULL) dbData->Document(DBDocGeoDomain,domain); if(subject != (char *) NULL) dbData->Document(DBDocSubject,subject); if(version != (char *) NULL) dbData->Document(DBDocVersion,version); if(institute != (char *) NULL) dbData->Document(DBDocCitationInst,institute); if(person != (char *) NULL) dbData->Document(DBDocOwnerPerson,person); if(citation != (char *) NULL) dbData->Document(DBDocCitationRef,citation); if(comment != (char *) NULL) dbData->Document(DBDocComment,comment); if(source != (char *) NULL) dbData->Document(DBDocSourcePerson,source); if (file != stdout) file = fopen(argv[1],"wb"); if(dbData->Write(file) == DBFault) return(-1); if (file != stdout) fclose(file); if (verbose) RGlibPauseClose (); if (Interactive_Mode) { if (title != (char *) NULL) delete title; if (domain != (char *) NULL) delete domain; if (subject != (char *) NULL) delete subject; if (version != (char *) NULL) delete version; if (institute != (char *) NULL) delete institute; if (person != (char *) NULL) delete person; if (citation != (char *) NULL) delete citation; if (comment != (char *) NULL) delete comment; if (source != (char *) NULL) delete source; } return (0); }