1 / 23

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

Implementação do algoritmo da Máquina de Análise Geográfica (GAM). Paradigmas e Ferramentas de Desenvolvimento de Software Prof. Dr. Gilberto Câmara. Equipe: Karla Donato Fook Evaldinolia G. Moreira Pinto . Roteiro. GAM Descrição Interface Padrões implementados Strategy Singleton

hani
Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. Roteiro • GAM • Descrição • Interface • Padrões implementados • Strategy • Singleton • Iterator • Contextualização GAM x Padrões • Diagramas • Codificação • Conclusões

  3. 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

  4. 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

  5. GAM – Interface • Mean Bootstrap • Monte Carlo Significance • Poisson Probability

  6. GAM – Interface

  7. GAM - Programa • Frmgam.ui.h • Interface desenvolvida no QT Designer • TeGam.h • Classe gam • TeSignificanceTest.h • Classes significanceTest e cDivisor

  8. Padrões Implementados • Strategy • Singleton • Iterator

  9. GAM significanceTest isSignificant( ) ... gridGenerate( ) sigTest( ) bootstrapTest monteCarloTest poissonTest sigTest( ) sigTest( ) sigTest( ) Strategy • Implementa o Teste de Significância no GAM • O algoritmo possui comportamento diferente, conforme seleção do usuário

  10. Strategy // TeSignificanceTest.h class 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); };

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

  12. Strategy // TeGam.h class gam{ public: gam(significanceTest* = NULL); virtual ~gam(); ... protected: significanceTest* sig; bool sCreated; };

  13. Strategy gam::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; }

  14. Strategy // call bool gam::isSignificant( const double & sumIncidence, const double & incidenceExpected, const vector<int> & idsInterestDataCircle ) { ASSERT(sig !=NULL); ... double prob = sig->sigTest(sumIncidence, incidenceExpected, idsInterestDataCircle ); ... }

  15. cDivisor static int getDivisor( ) return divisor static int divisor Singleton • Implementa divisor que promove a geração do grid

  16. Singleton // TeSignificanceTest.h class cDivisor { public : static int getDivisor(); protected : cDivisor(){} virtual ~cDivisor(){} static int divisor; // Static instance }; int cDivisor::divisor=100; int cDivisor::getDivisor() { return divisor; }

  17. Singleton // 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; ... }

  18. interestData it begin() end() ... first() second() currentItem() int id double incidence double popRisk Iterator • Utilizado no decorrer do programa para acesso a elementos pertencentes a diferentes tipos de conteiners

  19. Iterator // TeGam.h void gam::computeIncidenceRate ( ) { map<int, gridIndex>::iterator it = interestData.begin(); ... while (it != interestData.end()) { p = it->second; sumIncidence += p.first; sumRiskPop += p.second; ++it; } }

  20. Iterator // TeSignificanceTest.h double 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; ... } }

  21. 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

  22. 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

  23. Obrigada pela Atenção !!!

More Related