augePixelType RasterMosiacProcessorImpl::GetPixelType(Raster** ppRaster, g_uint count) { Raster* pRaster = NULL; for(g_uint i=0; i<count; i++) { pRaster = ppRaster[i]; if(pRaster!=NULL) { return pRaster->GetPixelType(); } } return augePixelUnknown; }
RESULTCODE RasterHistogramEqualizationProcessorImpl::Execute() { const char* inSourceName = GetInputDataSource(); const char* inRasterName = GetInputRaster(); const char* inRasterPath = GetInputRasterPath(); const char* outSourceName = GetOutputDataSource(); const char* outRasterName = GetOutputRaster(); const char* outRasterPath = GetOutputRasterPath(); Workspace* pWorkspace = NULL; RasterWorkspace* pinRasterWorkspace = NULL; RasterWorkspace* poutRasterWorkspace = NULL; GError* pError = augeGetErrorInstance(); GLogger* pLogger = augeGetLoggerInstance(); ConnectionManager* pConnManager = augeGetConnectionManagerInstance(); pWorkspace = pConnManager->GetWorkspace(m_user, inSourceName); if(pWorkspace==NULL) { return AG_FAILURE; } pinRasterWorkspace = dynamic_cast<RasterWorkspace*>(pWorkspace); pWorkspace = pConnManager->GetWorkspace(m_user, outSourceName); if(pWorkspace==NULL) { return AG_FAILURE; } poutRasterWorkspace = dynamic_cast<RasterWorkspace*>(pWorkspace); Raster* pinRaster = NULL; RasterFolder* pinFolder = NULL; //Raster* poutRaster = NULL; RasterFolder* poutFolder = NULL; pinFolder = pinRasterWorkspace->GetFolder(inRasterPath); if(pinFolder==NULL) { return AG_FAILURE; } pinRaster = pinFolder->GetRasterDataset()->GetRaster(inRasterName); if(pinRaster==NULL) { pinFolder->Release(); return AG_FAILURE; } augePixelType pixelType = pinRaster->GetPixelType(); if(pixelType != augePixelByte) { char msg[AUGE_MSG_MAX]; g_sprintf(msg, "直方图均衡化仅支持Byte类型像元栅格数据,当前栅格数据像元宽度为%dByte", pinRaster->GetPixelSize()); pError->SetError(msg); pinFolder->Release(); return AG_FAILURE; } //g_uint band_count = pinRaster->GetBandCount(); //if(band_count<3||band_count>4) //{ // pinFolder->Release(); // return AG_FAILURE; //} if(!HistogramEqualize(pinRaster)) { pinFolder->Release(); return AG_FAILURE; } poutFolder = poutRasterWorkspace->GetFolder(outRasterPath); if(poutFolder==NULL) { pinFolder->Release(); return AG_FAILURE; } RESULTCODE rc = poutFolder->GetRasterDataset()->AddRaster(outRasterName, pinRaster); pinRaster->Release(); poutFolder->Release(); pinFolder->Release(); return rc; }