A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

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

Apresentações semelhantes


Apresentação em tema: "TerraRadar Aplicativo para tratamento de imagem de Radar Utilizado através de dois tipos de interface : TerraView - (QT) Browser - (PHP)"— Transcrição da apresentação:

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

2

3

4

5 TerraRadar Design 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)

6 TerraRadar Design 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)

7 Strategy class 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; };

8 Template Method class 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 _registra; };

9 Template Method Void 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);....... }

10 Singleton class MapEstrategias : public singleton > { }; template class RegistraEstrategia { public: RegistraEstrategia( const string& name, T* estrategia ) { MapEstrategias().instance()[name] = estrategia; } };

11 Iterator class TeRaster : public TeGeometry {...... class iterator {........ vector get_vector_mask(int m, int n) { vector 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; }....... }

12 Interface TerraView Void TerraView::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; }

13 Interface PHP int 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; }

14


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

Apresentações semelhantes


Anúncios Google