bool ossimHdfGridModel::setGridNodes( H5::H5File* h5File, const std::string& latDataSetName, const std::string& lonDataSetName, ossim_uint32 imageRows, ossim_uint32 imageCols ) { bool status = false; if ( h5File ) { H5::DataSet latDataSet = h5File->openDataSet( latDataSetName ); H5::DataSet lonDataSet = h5File->openDataSet( lonDataSetName ); try { status = setGridNodes( &latDataSet, &lonDataSet, imageRows, imageCols ); } catch ( const ossimException& e ) { if ( traceDebug() ) { ossimNotify(ossimNotifyLevel_WARN) << "ossimHdfGridModel::setGridNodes caught exception\n" << e.what() << std::endl; } } latDataSet.close(); lonDataSet.close(); } return status; }
//***************************************************************************** // CONSTRUCTOR: ossimHdfGridModel(filename) // // Constructs model from geometry file // //***************************************************************************** ossimHdfGridModel::ossimHdfGridModel(const ossimFilename& file, const ossimDrect& imageRect, ossimString latGridIndexOrName, ossimString lonGridIndexOrName, const ossimIpt& gridSpacing) : ossimCoarseGridModel(), m_isHdf4(true) { theLatGrid.setDomainType(ossimDblGrid::SAWTOOTH_90); theLonGrid.setDomainType(ossimDblGrid::WRAP_180); if (latGridIndexOrName.contains("/Latitude") == false && lonGridIndexOrName.contains("/Longitude") == false)//hdf4 { ossim_int32 latGridIndex = ossimString::toInt(latGridIndexOrName); ossim_int32 lonGridIndex = ossimString::toInt(lonGridIndexOrName); int32 sd_id = SDstart(file.c_str(), DFACC_READ); if (sd_id > 0) { int32 sds_id = SDselect(sd_id, latGridIndex); if (sds_id > 0) { setGridNodes(theLatGrid, sds_id, gridSpacing); } SDendaccess (sds_id); sds_id = SDselect(sd_id, lonGridIndex); if (sds_id > 0) { setGridNodes(theLonGrid, sds_id, gridSpacing); } SDendaccess (sds_id); } SDend(sd_id); } else //hdf5 { m_isHdf4 = false; ossim_int32 file_id = H5Fopen(file.c_str(), H5F_ACC_RDONLY, H5P_DEFAULT); // Depreciated, need to fix... (drb) // ossim_int32 dataset_id = H5Dopen(file_id, latGridIndexOrName); ossim_int32 dataset_id = H5Dopen1(file_id, latGridIndexOrName); if (dataset_id >= 0) { setGridNodes(theLatGrid, dataset_id, gridSpacing); } H5Dclose(dataset_id); // Depreciated, need to fix... (drb) // dataset_id = H5Dopen(file_id, lonGridIndexOrName); dataset_id = H5Dopen1(file_id, lonGridIndexOrName); if (dataset_id > 0) { setGridNodes(theLatGrid, dataset_id, gridSpacing); } H5Dclose(dataset_id); H5Fclose(file_id); } // Filter this HDF data as it is often very noisy: double filter_kernel[81]; double weight = 1.0/81.0; for (int i=0; i<81; i++) filter_kernel[i] = weight; theLatGrid.filter(9,9, filter_kernel); theLonGrid.filter(9,9, filter_kernel); theLatGrid.enableExtrapolation(); theLonGrid.enableExtrapolation(); theHeightEnabledFlag = false; initializeModelParams(imageRect); //debugDump(); //### }