TerraRadar Aplicativo para tratamento de imagem de Radar Utilizado através de dois tipos de...

14
TerraRadar Aplicativo para tratamento de imagem de Radar Utilizado através de dois tipos de interface : •TerraView - (QT) •Browser - (PHP)

Transcript of TerraRadar Aplicativo para tratamento de imagem de Radar Utilizado através de dois tipos de...

Page 1: TerraRadar Aplicativo para tratamento de imagem de Radar Utilizado através de dois tipos de interface : TerraView - (QT) Browser - (PHP)

TerraRadarAplicativo para tratamento de imagem de Radar

Utilizado através de dois tipos de interface :

•TerraView - (QT)•Browser - (PHP)

Page 2: TerraRadar Aplicativo para tratamento de imagem de Radar Utilizado através de dois tipos de interface : TerraView - (QT) Browser - (PHP)
Page 3: TerraRadar Aplicativo para tratamento de imagem de Radar Utilizado através de dois tipos de interface : TerraView - (QT) Browser - (PHP)
Page 4: TerraRadar Aplicativo para tratamento de imagem de Radar Utilizado através de dois tipos de interface : TerraView - (QT) Browser - (PHP)
Page 5: TerraRadar Aplicativo para tratamento de imagem de Radar Utilizado através de dois tipos de interface : TerraView - (QT) Browser - (PHP)

TerraRadarDesign patterns utilizados :

1. Strategy (para a família de algoritmos que operam sobre as imagens de Radar)

2. Template Method (para definir, através de subclasses, passos de um algoritmo sem mudar a estrutura do mesmo)

Page 6: TerraRadar Aplicativo para tratamento de imagem de Radar Utilizado através de dois tipos de interface : TerraView - (QT) Browser - (PHP)

TerraRadarDesign patterns utilizados :

3. Iterator (para realizar operação de convolução sobre uma imagem)

4. Singleton (garantir que o mapa de estratégias seja instanciado uma única vez)

Page 7: TerraRadar Aplicativo para tratamento de imagem de Radar Utilizado através de dois tipos de interface : TerraView - (QT) Browser - (PHP)

Strategyclass Estrategia {public:

virtual void Executa( TeRaster* radar ) = 0;virtual ~Estrategia(){}

protected:Estrategia(){}

};

class Convolucao {public:

Convolucao( const string& name, TeRaster* radar);~Convolucao(){ if( _estrategia ) delete _estrategia; }void Executar( TeRaster* radar );

private:Estrategia* _estrategia;

};

Page 8: TerraRadar Aplicativo para tratamento de imagem de Radar Utilizado através de dois tipos de interface : TerraView - (QT) Browser - (PHP)

Template Methodclass CoeficienteVariacao : public Estrategia {public:

CoeficienteVariacao(){}~CoeficienteVariacao(){}virtual void Executa( TeRaster* radar );

private:virtual double needSQRT(double) = 0;double CalcMedia(Vetor& v);

};

class CoeficienteVariacao_Amplitude : public CoeficienteVariacao {public:

CoeficienteVariacao_Amplitude(){}~CoeficienteVariacao_Amplitude(){}double needSQRT(double val) { return (val); }

private:static RegistraEstrategia<CoeficienteVariacao_Amplitude> _registra;

};

Page 9: TerraRadar Aplicativo para tratamento de imagem de Radar Utilizado através de dois tipos de interface : TerraView - (QT) Browser - (PHP)

Template MethodVoid CoeficienteVariacao::Executa( TeRaster* radar ){......

TeRaster::iterator it(0, 0, params.ncols_-n, params.nlines_-m, 1, radar);for (it = radar->begin(); it != radar->end(); ++it){

v = it.get_vector_mask(m,n);media = CalcMedia(v);cv = 0.;j = 0;........

cv = needSQRT(cv);

.......}

Page 10: TerraRadar Aplicativo para tratamento de imagem de Radar Utilizado através de dois tipos de interface : TerraView - (QT) Browser - (PHP)

Singleton

class MapEstrategias : public singleton< map<string, Estrategia*> >

{};

template< class T > class RegistraEstrategia{public:

RegistraEstrategia( const string& name, T* estrategia ){ MapEstrategias().instance()[name] = estrategia; }

};

Page 11: TerraRadar Aplicativo para tratamento de imagem de Radar Utilizado através de dois tipos de interface : TerraView - (QT) Browser - (PHP)

Iterator class TeRaster : public TeGeometry {......

class iterator {........

vector<double> get_vector_mask(int m, int n) { vector<double> vt; double val; for (int j=linCurrent_; j<linCurrent_+n; ++j) {

for (int i=colCurrent_; i<colCurrent_+m; ++i){

raster_->getElement(i,j,val,0); vt.push_back(val); }

} return vt; }

....... }

}

Page 12: TerraRadar Aplicativo para tratamento de imagem de Radar Utilizado através de dois tipos de interface : TerraView - (QT) Browser - (PHP)

Interface TerraViewVoidTerraView::radarToolsVariation_CoeficientAction_activated(){

TeLayer* layer = currentTheme()->layer();if(!layer){

cout << "Failed to get the current theme." << endl;exit(0);

}

TeRaster* radar = layer->raster();

Convolucao op("CoeficienteVariacao_Amplitude", radar);

delete layer;delete radar;

}

Page 13: TerraRadar Aplicativo para tratamento de imagem de Radar Utilizado através de dois tipos de interface : TerraView - (QT) Browser - (PHP)

Interface PHPint main(int argc, char* argv[]){ // Opens a connection to a database accessible though MySQL

string host = argv[1], dbname = argv[2], user = argv[3], layer = argv[4];

TeDatabase* db_ = new TeMySQL();if (!db_->connect(host,user,"",dbname)) exit(0);

// Loads a layer by its name TeLayer *layer = new TeLayer(layer);

if (!db_->loadLayer(layer)) {db_->close(); exit(0);}

TeRaster* radar = layer->raster();

Convolucao op("CoeficienteVariacao_Amplitude", radar);

return 0;}

Page 14: TerraRadar Aplicativo para tratamento de imagem de Radar Utilizado através de dois tipos de interface : TerraView - (QT) Browser - (PHP)