Changeset 37499
- Timestamp:
- Oct 19, 2014, 4:45:10 PM (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/eam_branches/ipp-20140904/Ohana/src/dvomerge/src/dvorepairDeleteImagesByExternID.c
r37495 r37499 14 14 // * rebuild the cpt file or delete the matching entries? 15 15 16 int SaveImageTable (Image *image, off_t Nimage, char *catdir); 17 Image *DeleteSelectedImages (Image *image, off_t Nimage, int *deleteImage, myIndexType *imageIDindex, off_t *NnewImage); 18 16 19 int dvorepairDeleteImagesByExternID (int argc, char **argv) { 17 20 … … 69 72 // set the min and max ID values for the two strucures: 70 73 for (i = 0; i < Nimage; i++) { 74 myIndexUpdateLimits (imageIDindex, image[i].imageID); 75 71 76 if (!image[i].externID) continue; 72 77 myAssert (image[i].imageID, "image must have imageID > 0"); 73 78 myIndexUpdateLimits (externIDindex, image[i].externID); 74 myIndexUpdateLimits (imageIDindex, image[i].imageID);75 79 } 76 80 … … 89 93 // assign the externIDs and imageIDs to their index structures 90 94 for (i = 0; i < Nimage; i++) { 95 myIndexSetEntry (imageIDindex, image[i].imageID, i); 96 91 97 if (!image[i].externID) continue; 92 93 98 myIndexSetEntry (externIDindex, image[i].externID, i); 94 myIndexSetEntry (imageIDindex, image[i].imageID, i);95 99 } 96 100 … … 177 181 SkyRegion UserPatch; 178 182 179 if (dR < dQ ) {183 if (dR < dQ + 0.1) { 180 184 fprintf (stderr, "R,D range: %f - %f, %f - %f\n", Rmin, Rmax, Dmin, Dmax); 181 185 nPass = 1; … … 219 223 // loop over the populated input regions 220 224 int Ncheck = 0; 221 for (i = 0; i < inlist[0].Nregions; i++) {225 for (i = 0; FALSE && (i < inlist[0].Nregions); i++) { 222 226 if (!inlist[0].regions[i][0].table) continue; 223 227 … … 364 368 } 365 369 370 off_t NnewImage; 371 Image *newImage = DeleteSelectedImages (image, Nimage, deleteImage, imageIDindex, &NnewImage); 372 373 SaveImageTable (newImage, NnewImage, catdir); 374 366 375 myIndexFree (externIDindex); 367 376 myIndexFree (imageIDindex); … … 386 395 } 387 396 397 Image *DeleteSelectedImages (Image *image, off_t Nimage, int *deleteImage, myIndexType *imageIDindex, off_t *NnewImage) { 398 399 // we need to remove the (WRP) images, but we also want to remove the DIS [PHU] image entries if they have 400 // had all of their children deleted 401 402 // first, generate an array of the number of children for each parent 403 404 int *Nchildren = NULL; 405 ALLOCATE (Nchildren, int, Nimage); 406 memset (Nchildren, 0, Nimage*sizeof(int)); 407 408 int i; 409 for (i = 0; i < Nimage; i++) { 410 if (!image[i].parentID) continue; 411 myAssert (!strcmp(&image[i].coords.ctype[4], "-WRP"), "child with non WRP coords?"); 412 413 int n = myIndexGetEntry (imageIDindex, image[i].parentID); 414 myAssert (n != -1, "invalid parentID?"); 415 myAssert (n < Nimage, "invalid parentID??"); 416 Nchildren[n] ++; 417 } 418 419 // now subtract the children which need to be deleted 420 for (i = 0; i < Nimage; i++) { 421 if (!deleteImage[i]) continue; 422 if (!image[i].parentID) continue; // should I warn on this? 423 424 int n = myIndexGetEntry (imageIDindex, image[i].parentID); 425 myAssert (n != -1, "invalid parentID?"); 426 myAssert (n < Nimage, "invalid parentID??"); 427 Nchildren[n] --; 428 myAssert (Nchildren[n] >= 0, "over deleted???"); 429 } 430 431 // now check for any parent and delete it 432 for (i = 0; i < Nimage; i++) { 433 if (strcmp(&image[i].coords.ctype[4], "-DIS")) continue; 434 myAssert (!image[i].parentID, "parent ID for DIS image??"); 435 if (!Nchildren[i]) deleteImage[i] = TRUE; 436 } 437 438 fprintf (stderr, "deleting the following images:\n"); 439 440 off_t Nnew = 0; 441 Image *newImage = NULL; 442 ALLOCATE (newImage, Image, Nimage); 443 for (i = 0; i < Nimage; i++) { 444 if (deleteImage[i]) { 445 fprintf (stderr, "%s : %d : %d : %d\n", image[i].name, image[i].imageID, image[i].parentID, image[i].externID); 446 continue; 447 } 448 newImage[Nnew] = image[i]; 449 Nnew ++; 450 } 451 452 REALLOCATE (newImage, Image, Nnew); 453 454 *NnewImage = Nnew; 455 return newImage; 456 } 457 458 int SaveImageTable (Image *image, off_t Nimage, char *catdir) { 459 460 FITS_DB db; 461 462 char ImageCatSrc[DVO_MAX_PATH]; 463 char ImageCatTgt[DVO_MAX_PATH]; 464 465 // we are creating a new image table (what about db ID?) 466 snprintf (ImageCatSrc, DVO_MAX_PATH, "%s/Images.dat", catdir); 467 snprintf (ImageCatTgt, DVO_MAX_PATH, "%s/Images.dat.broken", catdir); 468 469 // rename the old cpt file: 470 if (rename (ImageCatSrc, ImageCatTgt)) { 471 perror ("tried to rename file"); 472 exit (2); 473 } 474 475 /* setup image table format and lock */ 476 db.mode = dvo_catalog_catmode ("SPLIT"); 477 db.format = dvo_catalog_catformat ("PS1_V5"); 478 int status = dvo_image_lock (&db, ImageCatSrc, 3600.0, LCK_XCLD); // shorter timeout? 479 if (!status) { 480 fprintf (stderr, "ERROR: failure to lock image catalog %s", db.filename); 481 exit (2); 482 } 483 484 /* load or create the image table */ 485 if (db.dbstate != LCK_EMPTY) { 486 fprintf (stderr, "image table %s exists, exiting", db.filename); 487 exit (2); 488 } 489 dvo_image_create (&db, GetZeroPoint()); 490 491 /* add the new image and save */ 492 dvo_image_addrows (&db, image, Nimage); 493 dvo_image_update (&db, VERBOSE); 494 dvo_image_unlock (&db); /* unlock? */ 495 496 return TRUE; 497 } 498 388 499 int RepairTableCPT_V1(char *cptFilenameSrc, char *cptFilenameTgt, char *cpsFilenameSrc, char *cpsFilenameTgt, Measure *measure, off_t Nmeasure, Image *image, off_t Nimage, myIndexType *imageIDindex, char catformat) { 389 500 … … 445 556 myAssert (n > -1, "impossible!"); 446 557 558 dvo_average_init (&average[Nave]); 559 447 560 // I actually have measure->R,D, I could just use those... 448 561 XY_to_RD (&average[Nave].R, &average[Nave].D, measure[i].Xccd, measure[i].Yccd, &image[n].coords); … … 454 567 average[Nave].measureOffset = -1; 455 568 average[Nave].missingOffset = -1; 456 average[Nave].refColorBlue = NAN;457 average[Nave].refColorRed = NAN;458 569 459 570 average[Nave].objID = measure[i].objID; … … 501 612 myAssert(cptFile, "failed to open cpt file"); 502 613 503 // load the cpt header (use for CATID, RA, DEC range, filenames)614 // load the cpt header (use for CATID, RA, DEC range, filenames) 504 615 if (!gfits_fread_header (cptFile, &cptHeaderPHU)) { 505 616 myAbort("failure to cpt header"); … … 578 689 ALLOCATE (secfilt, SecFilt, Nrows); 579 690 691 for (i = 0; i < Nrows; i++) { 692 dvo_secfilt_init (&secfilt[i]); 693 } 694 580 695 /* convert internal to external format */ 581 696 if (!SecFiltToFtable (&cpsFtable, secfilt, Nrows, catformat)) {
Note:
See TracChangeset
for help on using the changeset viewer.
