Implementação do algoritmo da Máquina de Análise Geográfica (GAM) Equipe:Karla Donato Fook...

23
Implementação do algoritmo da Máquina de Análise Geográfica (GAM) Equipe: Karla Donato Fook Evaldinolia G. Moreira Pinto Paradigmas e Ferramentas de Desenvolvimento de Software Prof. Dr. Gilberto Câmara

Transcript of Implementação do algoritmo da Máquina de Análise Geográfica (GAM) Equipe:Karla Donato Fook...

Page 1: Implementação do algoritmo da Máquina de Análise Geográfica (GAM) Equipe:Karla Donato Fook Evaldinolia G. Moreira Pinto Paradigmas e Ferramentas de Desenvolvimento.

Implementação do algoritmo da Máquina de Análise Geográfica (GAM)

Equipe: Karla Donato Fook

Evaldinolia G. Moreira Pinto

Paradigmas e Ferramentas de Desenvolvimento de Software

Prof. Dr. Gilberto Câmara

Page 2: Implementação do algoritmo da Máquina de Análise Geográfica (GAM) Equipe:Karla Donato Fook Evaldinolia G. Moreira Pinto Paradigmas e Ferramentas de Desenvolvimento.

Roteiro GAM

Descrição Interface

Padrões implementados Strategy Singleton Iterator

Contextualização GAM x Padrões Diagramas Codificação

Conclusões

Page 3: Implementação do algoritmo da Máquina de Análise Geográfica (GAM) Equipe:Karla Donato Fook Evaldinolia G. Moreira Pinto Paradigmas e Ferramentas de Desenvolvimento.

GAM – Geographical Analysis Machine

Ferramenta para análise exploratória de dados espaciais aplicada a pontos ou pequenas áreas

Os setores de Saúde Pública e Criminal utilizam a Máquina de Análise Geográfica para indicar áreas com altas incidências de doenças ou crimes de naturezas diversas

Desenvolvida por Stan Openshaw e Ian Turton - University of Leeds, UK

Page 4: Implementação do algoritmo da Máquina de Análise Geográfica (GAM) Equipe:Karla Donato Fook Evaldinolia G. Moreira Pinto Paradigmas e Ferramentas de Desenvolvimento.

GAM – Geographical Analysis Machine

A partir de dados de interesse, gera um grande número de círculos de vários tamanhos que cobrem completamente uma determinada região

Os círculos se sobrepõem permitindo o efeito de bordas e fornecendo um grau de análise sensitiva

Os dados de cada círculo são armazenados e uma avaliação estatística é feita para saber se a taxa de incidência do dado em cada círculo é alta A análise estatística é realizada através do Teste de

Significância

Page 5: Implementação do algoritmo da Máquina de Análise Geográfica (GAM) Equipe:Karla Donato Fook Evaldinolia G. Moreira Pinto Paradigmas e Ferramentas de Desenvolvimento.

GAM – Interface

Mean Bootstrap

Monte Carlo Significance

Poisson Probability

Page 6: Implementação do algoritmo da Máquina de Análise Geográfica (GAM) Equipe:Karla Donato Fook Evaldinolia G. Moreira Pinto Paradigmas e Ferramentas de Desenvolvimento.

GAM – Interface

Page 7: Implementação do algoritmo da Máquina de Análise Geográfica (GAM) Equipe:Karla Donato Fook Evaldinolia G. Moreira Pinto Paradigmas e Ferramentas de Desenvolvimento.

GAM - Programa Frmgam.ui.h

Interface desenvolvida no QT Designer

TeGam.h Classe gam

TeSignificanceTest.h Classes significanceTest e cDivisor

Page 8: Implementação do algoritmo da Máquina de Análise Geográfica (GAM) Equipe:Karla Donato Fook Evaldinolia G. Moreira Pinto Paradigmas e Ferramentas de Desenvolvimento.

Padrões Implementados

Strategy

Singleton

Iterator

Page 9: Implementação do algoritmo da Máquina de Análise Geográfica (GAM) Equipe:Karla Donato Fook Evaldinolia G. Moreira Pinto Paradigmas e Ferramentas de Desenvolvimento.

Strategy

GAM

isSignificant( )...

gridGenerate( )

significanceTest

sigTest( )

bootstrapTest

sigTest( )

monteCarloTestsigTest( )

poissonTest

sigTest( )

Implementa o Teste de Significância no GAM O algoritmo possui comportamento diferente, conforme seleção

do usuário

Page 10: Implementação do algoritmo da Máquina de Análise Geográfica (GAM) Equipe:Karla Donato Fook Evaldinolia G. Moreira Pinto Paradigmas e Ferramentas de Desenvolvimento.

Strategy// TeSignificanceTest.hclass significanceTest { public:

virtual double sigTest(const double & sumIncidence, const double & incidenceExpected,const vector<int> & idsInterestDataCircle ) = 0;

protected: significanceTest(){}

};class poissonTest : public significanceTest{ public:

poissonTest(){}virtual double sigTest(const double & sumIncidence,

const double & incidenceExpected,const vector<int> &

idsInterestDataCircle);};

Page 11: Implementação do algoritmo da Máquina de Análise Geográfica (GAM) Equipe:Karla Donato Fook Evaldinolia G. Moreira Pinto Paradigmas e Ferramentas de Desenvolvimento.

Strategyclass monteCarloTest : public significanceTest{ public:

monteCarloTest(){}virtual double sigTest(const double & sumIncidence,

const double & incidenceExpected,const vector<int> & idsInterestDataCircle);

};

class bootstrapTest : public significanceTest{ public:

bootstrapTest(){}virtual double sigTest(const double & sumIncidence,

const double & incidenceExpected, const vector<int> & idsInterestDataCircle);

};

Page 12: Implementação do algoritmo da Máquina de Análise Geográfica (GAM) Equipe:Karla Donato Fook Evaldinolia G. Moreira Pinto Paradigmas e Ferramentas de Desenvolvimento.

Strategy// TeGam.hclass gam{ public:

gam(significanceTest* = NULL);virtual ~gam();...

protected:significanceTest* sig;bool sCreated;

};

Page 13: Implementação do algoritmo da Máquina de Análise Geográfica (GAM) Equipe:Karla Donato Fook Evaldinolia G. Moreira Pinto Paradigmas e Ferramentas de Desenvolvimento.

Strategygam::gam(significanceTest* p_sig){

if (p_sig == NULL) {sig = new bootstrapTest;sCreated = true;

}else {

sig = p_sig;sCreated = false;

}}gam::~gam(){

if (sCreated == true) delete sig;}

Page 14: Implementação do algoritmo da Máquina de Análise Geográfica (GAM) Equipe:Karla Donato Fook Evaldinolia G. Moreira Pinto Paradigmas e Ferramentas de Desenvolvimento.

Strategy// callbool gam::isSignificant( const double & sumIncidence,

const double & incidenceExpected, const vector<int> &

idsInterestDataCircle ){

ASSERT(sig !=NULL);...double prob = sig->sigTest(sumIncidence, incidenceExpected,

idsInterestDataCircle );...

}

Page 15: Implementação do algoritmo da Máquina de Análise Geográfica (GAM) Equipe:Karla Donato Fook Evaldinolia G. Moreira Pinto Paradigmas e Ferramentas de Desenvolvimento.

Implementa divisor que promove a geração do grid

Singleton

cDivisor

static int getDivisor( )

static int divisor

return divisor

Page 16: Implementação do algoritmo da Máquina de Análise Geográfica (GAM) Equipe:Karla Donato Fook Evaldinolia G. Moreira Pinto Paradigmas e Ferramentas de Desenvolvimento.

// TeSignificanceTest.hclass cDivisor{ public : static int getDivisor(); protected :

cDivisor(){} virtual ~cDivisor(){} static int divisor; // Static instance };int cDivisor::divisor=100;int cDivisor::getDivisor() { return divisor;}

Singleton

Page 17: Implementação do algoritmo da Máquina de Análise Geográfica (GAM) Equipe:Karla Donato Fook Evaldinolia G. Moreira Pinto Paradigmas e Ferramentas de Desenvolvimento.

// TeGam.h

void gam::gridGenerate( double & xmin, double & xmax, double &

ymin, double & ymax ){

...int div = cDivisor::getDivisor();...dx = (xmax - xmin) / div;dy = (ymax - ymin) / div;...

}

Singleton

Page 18: Implementação do algoritmo da Máquina de Análise Geográfica (GAM) Equipe:Karla Donato Fook Evaldinolia G. Moreira Pinto Paradigmas e Ferramentas de Desenvolvimento.

Iterator Utilizado no decorrer do programa para acesso a

elementos pertencentes a diferentes tipos de conteiners

interestData

begin()end()

...

int iddouble incidencedouble popRisk

it

first()second()

currentItem()

Page 19: Implementação do algoritmo da Máquina de Análise Geográfica (GAM) Equipe:Karla Donato Fook Evaldinolia G. Moreira Pinto Paradigmas e Ferramentas de Desenvolvimento.

Iterator// TeGam.hvoid gam::computeIncidenceRate ( ){

map<int, gridIndex>::iterator it = interestData.begin(); ...while (it != interestData.end()) {

p = it->second;sumIncidence += p.first;sumRiskPop += p.second;++it;

}

}

Page 20: Implementação do algoritmo da Máquina de Análise Geográfica (GAM) Equipe:Karla Donato Fook Evaldinolia G. Moreira Pinto Paradigmas e Ferramentas de Desenvolvimento.

Iterator// TeSignificanceTest.hdouble monteCarloTest::sigTest(const double & mean, const

double & x, const vector<int> & idsInterestDataCircle )

{typedef vector<int>::const_iterator itVector;

for( itVector itVec = idsInterestDataCircle.begin(); itVec != idsInterestDataCircle.end(); ++itVec)

{...idValue = * itVec;...

}}

Page 21: Implementação do algoritmo da Máquina de Análise Geográfica (GAM) Equipe:Karla Donato Fook Evaldinolia G. Moreira Pinto Paradigmas e Ferramentas de Desenvolvimento.

Conclusões Padrões de Projeto propiciam um alto nível de

programação, tornando o código mais prático e elegante

A implementação dos padrões proporcionou maior robustez ao código da Máquina de Análise Geográfica

O trabalho sedimentou o que foi abordado na disciplina

A visualização da superfície de densidade encontra-se em fase de implementação

Page 22: Implementação do algoritmo da Máquina de Análise Geográfica (GAM) Equipe:Karla Donato Fook Evaldinolia G. Moreira Pinto Paradigmas e Ferramentas de Desenvolvimento.

Referências BAILEY, T.; GATRELL, A. “Interactive Spatial Data Analysis”. Longman Scientific and

Technical, London, 1995.

DRUCK, S.; CARVALHO, M. S.; CÂMARA, G.; MONTEIRO, A.V.M. (eds) "Análise Espacial de Dados Geográficos". Brasília, EMBRAPA, 2004.

GAMA, E.; HELM, R.; JOHNSON, R.; VLISSIDES, J. “Design Patterns: Elements of Reusable Object-Oriented Software”. Addison Wesley, 1994.

G. Câmara, A.Monteiro, “Geocomputation Techniques for Spatial Analysis: Is it the Case for Health data Sets?” .  Revista Nacional de Saúde Pública, 2001.

OPENSHAW, S.; TURTON I.; MaCGill, J.; DAVY, J. “Putting Geographical Analysis Machine on the Internet”. University of Leeds, Leeds.

STROUSTRUP, B. “A Linguagem de Programação C++” - 3. ed. Bookman, 2000.

http://www.ccg.leeds.ac.uk/smart/gam/gam1.html

http://www.codeproject.com/cpp/#Design+and+Strategy

Page 23: Implementação do algoritmo da Máquina de Análise Geográfica (GAM) Equipe:Karla Donato Fook Evaldinolia G. Moreira Pinto Paradigmas e Ferramentas de Desenvolvimento.

Obrigada pela Atenção !!!