//--------------------------------------------------------- bool C_Kriging_Base::_Get_Grid(void) { CSG_Shapes *pShapes = Parameters("SHAPES")->asShapes(); m_pGrid = NULL; m_pVariance = NULL; //------------------------------------------------- switch( Parameters("TARGET")->asInt() ) { case 0: // user defined... if( Dlg_Parameters("USER") ) { m_pGrid = _Get_Grid(pShapes->Get_Extent()); } break; case 1: // grid system... if( Dlg_Parameters("SYSTEM") ) { m_pGrid = SG_Create_Grid(*Get_Parameters("SYSTEM")->Get_Parameter("SYSTEM")->asGrid_System(), SG_DATATYPE_Float); } break; case 2: // grid... if( Dlg_Parameters("GRID") ) { m_pGrid = Get_Parameters("GRID")->Get_Parameter("GRID") ->asGrid(); m_pVariance = Get_Parameters("GRID")->Get_Parameter("VARIANCE") ->asGrid(); } break; } //------------------------------------------------- if( m_pGrid ) { if( !m_pVariance && Parameters("BVARIANCE")->asBool() ) { m_pVariance = SG_Create_Grid(m_pGrid, SG_DATATYPE_Float); } m_pGrid->Set_Name(CSG_String::Format(SG_T("%s (%s)"), pShapes->Get_Name(), Get_Name())); Parameters("GRID")->Set_Value(m_pGrid); if( m_pVariance ) { m_pVariance->Set_Name(CSG_String::Format(SG_T("%s (%s - %s)"), pShapes->Get_Name(), Get_Name(), _TL("Variance"))); Parameters("VARIANCE")->Set_Value(m_pVariance); } if( Parameters("TARGET")->asInt() == 2 ) { Get_Parameters("GRID")->Get_Parameter("VARIANCE")->Set_Value(m_pVariance); } } //----------------------------------------------------- return( m_pGrid != NULL ); }
//--------------------------------------------------------- bool CGrid_RGB_Composite::On_Execute(void) { double rMin, rRange, gMin, gRange, bMin, bRange, aMin, aRange; //----------------------------------------------------- CSG_Grid *pR = _Get_Grid(Parameters("R_GRID")->asGrid(), Parameters("R_METHOD")->asInt(), Parameters("R_RANGE")->asRange(), Parameters("R_PERCTL")->asRange(), Parameters("R_STDDEV")->asDouble(), rMin, rRange); CSG_Grid *pG = _Get_Grid(Parameters("G_GRID")->asGrid(), Parameters("G_METHOD")->asInt(), Parameters("G_RANGE")->asRange(), Parameters("G_PERCTL")->asRange(), Parameters("G_STDDEV")->asDouble(), gMin, gRange); CSG_Grid *pB = _Get_Grid(Parameters("B_GRID")->asGrid(), Parameters("B_METHOD")->asInt(), Parameters("B_RANGE")->asRange(), Parameters("B_PERCTL")->asRange(), Parameters("B_STDDEV")->asDouble(), bMin, bRange); CSG_Grid *pA = _Get_Grid(Parameters("A_GRID")->asGrid(), Parameters("A_METHOD")->asInt(), Parameters("A_RANGE")->asRange(), Parameters("A_PERCTL")->asRange(), Parameters("A_STDDEV")->asDouble(), aMin, aRange); //----------------------------------------------------- CSG_Grid *pRGB = Parameters("RGB")->asGrid(); pRGB->Create(pRGB->Get_System(), SG_DATATYPE_Int); pRGB->Set_Name(_TL("Composite")); CSG_String s; s += CSG_String(_TL("Red" )) + ": " + pR->Get_Name() + "\n"; s += CSG_String(_TL("Green")) + ": " + pG->Get_Name() + "\n"; s += CSG_String(_TL("Blue" )) + ": " + pB->Get_Name() + "\n"; if( pA ) { s += CSG_String(_TL("Alpha")) + ": " + pA->Get_Name() + "\n"; } pRGB->Set_Description(s); DataObject_Set_Colors (pRGB, 100, SG_COLORS_BLACK_WHITE); DataObject_Set_Parameter(pRGB, "COLORS_TYPE", 5); // Color Classification Type: RGB Coded Values //----------------------------------------------------- for(int y=0; y<Get_NY() && Set_Progress(y); y++) { #pragma omp parallel for for(int x=0; x<Get_NX(); x++) { if( pR->is_NoData(x, y) || pG->is_NoData(x, y) || pB->is_NoData(x, y) || (pA && pA->is_NoData(x, y)) ) { pRGB->Set_NoData(x, y); } else { int r = (int)(rRange * (pR->asDouble(x, y) - rMin)); if( r > 255 ) r = 255; else if( r < 0 ) r = 0; int g = (int)(gRange * (pG->asDouble(x, y) - gMin)); if( g > 255 ) g = 255; else if( g < 0 ) g = 0; int b = (int)(bRange * (pB->asDouble(x, y) - bMin)); if( b > 255 ) b = 255; else if( b < 0 ) b = 0; if( pA ) { int a = (int)(aRange * (pA->asDouble(x, y) - aMin)); if( a > 255 ) a = 255; else if( a < 0 ) a = 0; pRGB->Set_Value(x, y, SG_GET_RGBA(r, g, b, a)); } else { pRGB->Set_Value(x, y, SG_GET_RGB (r, g, b)); } } } } return( true ); }
//--------------------------------------------------------- bool CGridding_Spline_Base::Initialise(void) { return( On_Initialise() && _Get_Grid() ); }
//--------------------------------------------------------- bool C_Kriging_Base::On_Execute(void) { bool bResult = false; m_pShapes = NULL; m_bLog = Parameters("BLOG") ->asBool(); m_Model = Parameters("MODEL") ->asInt(); m_Nugget = Parameters("NUGGET") ->asDouble(); m_Sill = Parameters("SILL") ->asDouble() - m_Nugget; m_Range = Parameters("RANGE") ->asDouble(); m_Block = Parameters("DBLOCK") ->asDouble() / 2.0; m_bBlock = Parameters("BLOCK") ->asBool() && m_Block > 0.0; m_BLIN = Parameters("LIN_B") ->asDouble(); m_BEXP = Parameters("EXP_B") ->asDouble(); m_APOW = Parameters("POW_A") ->asDouble(); m_BPOW = Parameters("POW_B") ->asDouble(); //----------------------------------------------------- if( _Get_Grid() && _Get_Points() && On_Initialise() ) { int ix, iy; double x, y, z, v; for(iy=0, y=m_pGrid->Get_YMin(); iy<m_pGrid->Get_NY() && Set_Progress(iy, m_pGrid->Get_NY()); iy++, y+=m_pGrid->Get_Cellsize()) { for(ix=0, x=m_pGrid->Get_XMin(); ix<m_pGrid->Get_NX(); ix++, x+=m_pGrid->Get_Cellsize()) { if( Get_Value(x, y, z, v) ) { m_pGrid->Set_Value(ix, iy, m_bLog ? exp(z) : z); if( m_pVariance ) { m_pVariance->Set_Value(ix, iy, v); } } else { m_pGrid->Set_NoData(ix, iy); if( m_pVariance ) { m_pVariance->Set_NoData(ix, iy); } } } } bResult = true; } //----------------------------------------------------- m_Points.Clear(); m_Search.Destroy(); m_G .Destroy(); m_W .Destroy(); if( m_pShapes && m_pShapes != Parameters("SHAPES")->asShapes() ) { delete(m_pShapes); } return( bResult ); }