SlideShare uma empresa Scribd logo
1 de 35
Baixar para ler offline
Python:
 Cabe no seu bolso,
 cabe no seu micro,
cabe no seu cérebro!
       Rodrigo Dias Arruda Senra
          iMasters 2012 - SP
Python:
 Cabe no seu bolso,
 cabe no seu micro,
cabe no seu cérebro!
       Rodrigo Dias Arruda Senra
          iMasters 2012 - SP
Anatomia do Blá

• Python na prática:
 • Geoprocessamento
 • Automação Industrial
 • Bibliotecas Digitais
• Por que Python
Geoprocessamento
Geoprocessamento
NDVI: Índice de Vegetacão
NDVI: Índice de Vegetacão




Fonte:Perfis temporais NDVI MODIS, na cana-soca, de maturação tardia.
Fernando L. P. Ramme; Rubens A. C. Lamparelli; Jansle V. Rocha.
Eng. Agríc. vol.30 no.3 Jaboticabal June 2010
Operações Espaciais




                      6
Exemplo: Extração da Geometria
 shp = ogr.Open(filepath)‫‏‬

 # Layer correspondente ao Estado de São paulo
 layer = vf.shp.GetLayerByName('35mu500gc')

 # Feature correspondente ao município de Campinas
 feature = layer.GetFeature(501)

 # Extração dos pontos de controle do perímetro
 geometry = feature.GetGeometryRef()‫‏‬
 poly = geometry.GetGeometryRef(0)‫‏‬
 centroid = geometry.Centroid()‫‏‬
 centroid_geo = centroid.GetX(), centroid.GetY()‫‏‬

 # Definição do Retângulo Envoltório Mínimo (MBR)‫‏‬
 lg_left, lg_right, lt_bot, lt_up = poly.GetEnvelope()‫‏‬
 ul_geo, lr_geo = (lg_left, lt_up), (lg_right, lt_bot)‫‏‬
Automação
 Industrial
Automação
 Industrial
CLPs controlando Elevação de Óleo
CLPs controlando Elevação de Óleo
Fonte: www.triomotion.com
Fonte: www.triomotion.com
Fonte: www.triomotion.com
Fonte: www.triomotion.com
Fonte: www.triomotion.com
SFC+ST         Solução
  IDE

        TC6 XML

Compilador           SFC+ST→Ladder
  Python

         Modelo de Dados + Mapa de Variáveis

          Código
          Nativo
Bibliotecas Digitais
Bibliotecas Digitais
MFN: 1
69: Paper on: <plant physiology><plant transpiration><measurement and instruments>
70: Magalhaes, A.C.
70: Franco, C.M.
44: Methodology of plant eco-physiology: proceedings of the Montpellier Symposium
50: Incl. bibl.
24: Techniques for the measurement of transpiration of individual plants
26: ^aParis^bUnesco^c-1965
30: ^ap. 211-224^billus.
MFN: 1
69: Paper on: <plant physiology><plant transpiration><measurement and instruments>
70: Magalhaes, A.C.
70: Franco, C.M.
44: Methodology of plant eco-physiology: proceedings of the Montpellier Symposium
50: Incl. bibl.
24: Techniques for the measurement of transpiration of individual plants
26: ^aParis^bUnesco^c-1965
30: ^ap. 211-224^billus.
MFN: 1
69: Paper on: <plant physiology><plant transpiration><measurement and instruments>
70: Magalhaes, A.C.
70: Franco, C.M.
44: Methodology of plant eco-physiology: proceedings of the Montpellier Symposium
50: Incl. bibl.
24: Techniques for the measurement of transpiration of individual plants
26: ^aParis^bUnesco^c-1965
30: ^ap. 211-224^billus.
Projeto ISIS-NBP

                 Database




Console           Engine           Gateway



http://reddes.bvsalud.org/projects/isisnbp
Projeto ISIS-NBP

                 Database




Console
IPython           Engine           Gateway



http://reddes.bvsalud.org/projects/isisnbp
Projeto ISIS-NBP

                 Database


                            PyOpenSSL, PyCrypto


Console
IPython           Engine           Gateway
                                   Twisted
                                                  SSH
                                             HTTP
http://reddes.bvsalud.org/projects/isisnbp
Projeto ISIS-NBP

                  Database
               ISIS native DB

                   OIM
                            PyOpenSSL, PyCrypto


Console
IPython           Engine           Gateway
                                   Twisted
                                                  SSH
                                             HTTP
http://reddes.bvsalud.org/projects/isisnbp
Projeto ISIS-NBP

                  Database
               ISIS native DB

                   OIM
                            PyOpenSSL, PyCrypto


Console
IPython           Engine           Gateway
                                   Twisted
                                                  SSH
                      Django
                                XML-RPC HTTP
http://reddes.bvsalud.org/projects/isisnbp
Projeto ISIS-NBP

                  Database
               ISIS native DB

                   OIM
                            PyOpenSSL, PyCrypto


Console
IPython           Engine           Gateway
                                   Twisted
                                                  SSH
            PLY       Django
                                XML-RPC HTTP
http://reddes.bvsalud.org/projects/isisnbp
Projeto ISIS-NBP

                  Database
               ISIS native DB

                   OIM
                            PyOpenSSL, PyCrypto
            nosetest
Console
IPython           Engine           Gateway
                                   Twisted
                                                  SSH
            PLY        Django
                                XML-RPC HTTP
http://reddes.bvsalud.org/projects/isisnbp
Projeto ISIS-NBP
ZODB, Durus,...
                                             WebDAV
  BDB, XML,...       Database
                  ISIS native DB       RSS, OAI-PMH
                                              JSON
                      OIM
                              PyOpenSSL, PyCrypto
              nosetest
  Console
  IPython            Engine          Gateway
                                     Twisted
                                                    SSH
              PLY        Django
                                   XML-RPC HTTP
  http://reddes.bvsalud.org/projects/isisnbp
Exemplo: Compilador
def t_VFIELD(t):
    r'[vV]([0-9]+)'
    try:
         t.value = int(t.lexer.lexmatch.groups()[1])
    except ValueError:
         print "Field accessor", t.value
         t.value = 0
    return t

def p_field_subfield(p):
    """field : VFIELD "^" "*"
             | VFIELD "^" SUBCHAR """
    ch = p[3].lower()
    if ch=="*":
        p[0] = record[p[1]].subfields.value(pos=0)
    else:
        p[0] = record[p[1]].subfields[ch]
Por que Python ?

Produtividade do desenvolvedor
Legibilidade
Portabilidade
Integração: C, C++, C#, Java,...
Biblioteca Padrão
Tecno-diversidade
Maturidade
Obrigado a todos
                         pela atenção.

                            Rodrigo Dias Arruda Senra
                                 http://rodrigo.senra.nom.br
                                      rsenra@acm.org


As opiniões e conclusões expressas nesta apresentação são de exclusiva responsabilidade de Rodrigo Senra.

Não é necessário requisitar permissão do autor para o uso de partes ou do todo desta apresentação, desde que
não sejam feitas alterações no conteúdo reutilizado e que esta nota esteja presente na íntegra no material
resultante.

Imagens e referências para outros trabalhos nesta apresentação permanecem propriedade daqueles que detêm
seus direitos de copyright.

Mais conteúdo relacionado

Mais procurados

Mais procurados (6)

Mongodb: agregação
Mongodb: agregaçãoMongodb: agregação
Mongodb: agregação
 
Show Pyrotécnico - Keynote PythonBrasil[9] 2013
Show Pyrotécnico - Keynote PythonBrasil[9] 2013Show Pyrotécnico - Keynote PythonBrasil[9] 2013
Show Pyrotécnico - Keynote PythonBrasil[9] 2013
 
Uma breve história no tempo...da computação
Uma breve história no tempo...da computaçãoUma breve história no tempo...da computação
Uma breve história no tempo...da computação
 
Zabbix Conference LatAm 2016 - Andre Deo - SNMP and Zabbix
Zabbix Conference LatAm 2016 - Andre Deo - SNMP and ZabbixZabbix Conference LatAm 2016 - Andre Deo - SNMP and Zabbix
Zabbix Conference LatAm 2016 - Andre Deo - SNMP and Zabbix
 
TDC2018SP | Trilha IA - GANs - Redes neurais brincando de policia e ladrao
TDC2018SP | Trilha IA - GANs - Redes neurais brincando de policia e ladraoTDC2018SP | Trilha IA - GANs - Redes neurais brincando de policia e ladrao
TDC2018SP | Trilha IA - GANs - Redes neurais brincando de policia e ladrao
 
Postgresql +python
Postgresql +pythonPostgresql +python
Postgresql +python
 

Destaque

Destaque (9)

Python Brasil 2010 - Potter vs Voldemort - Lições ofidiglotas da prática Pyth...
Python Brasil 2010 - Potter vs Voldemort - Lições ofidiglotas da prática Pyth...Python Brasil 2010 - Potter vs Voldemort - Lições ofidiglotas da prática Pyth...
Python Brasil 2010 - Potter vs Voldemort - Lições ofidiglotas da prática Pyth...
 
Organicer: Organizando informação com Python
Organicer: Organizando informação com PythonOrganicer: Organizando informação com Python
Organicer: Organizando informação com Python
 
Rupy2014 - Show Pyrotécnico
Rupy2014 - Show PyrotécnicoRupy2014 - Show Pyrotécnico
Rupy2014 - Show Pyrotécnico
 
Cientista de Dados
Cientista de DadosCientista de Dados
Cientista de Dados
 
Tech talk about iswc2013
Tech talk about iswc2013Tech talk about iswc2013
Tech talk about iswc2013
 
Linked data at globo.com
Linked data at globo.comLinked data at globo.com
Linked data at globo.com
 
Rest - Representational State Transfer (EMC BRDC Internal Tech talk)
Rest - Representational State Transfer (EMC BRDC Internal Tech talk)Rest - Representational State Transfer (EMC BRDC Internal Tech talk)
Rest - Representational State Transfer (EMC BRDC Internal Tech talk)
 
Brainiak - uma API REST Hipermedia
Brainiak - uma API REST Hipermedia Brainiak - uma API REST Hipermedia
Brainiak - uma API REST Hipermedia
 
pa-pe-pi-po-pure Python Text Processing
pa-pe-pi-po-pure Python Text Processingpa-pe-pi-po-pure Python Text Processing
pa-pe-pi-po-pure Python Text Processing
 

Semelhante a Cases de Python no 7Masters 2012

Possibilidades com python
Possibilidades com pythonPossibilidades com python
Possibilidades com python
UFPA
 
Python com baterias incluídas v2.0
Python com baterias incluídas v2.0Python com baterias incluídas v2.0
Python com baterias incluídas v2.0
Jonh Edson
 

Semelhante a Cases de Python no 7Masters 2012 (20)

O que podemos fazer com Python?
O que podemos fazer com Python?O que podemos fazer com Python?
O que podemos fazer com Python?
 
Python e suas aplicações
Python e suas aplicaçõesPython e suas aplicações
Python e suas aplicações
 
PyData - Consumindo e publicando web APIs com Python
PyData - Consumindo e publicando web APIs com PythonPyData - Consumindo e publicando web APIs com Python
PyData - Consumindo e publicando web APIs com Python
 
Possibilidades com python
Possibilidades com pythonPossibilidades com python
Possibilidades com python
 
Raspberry Pi + Python
Raspberry Pi + PythonRaspberry Pi + Python
Raspberry Pi + Python
 
Semana Acadêmica ICET - Feevale - 12/04/2014
Semana Acadêmica ICET - Feevale - 12/04/2014Semana Acadêmica ICET - Feevale - 12/04/2014
Semana Acadêmica ICET - Feevale - 12/04/2014
 
Plack
PlackPlack
Plack
 
Desenvolvimento de aplicações PHP com MongoDB
Desenvolvimento de aplicações PHP com MongoDBDesenvolvimento de aplicações PHP com MongoDB
Desenvolvimento de aplicações PHP com MongoDB
 
Node.JS - Campus Party Brasil 2011
Node.JS - Campus Party Brasil 2011Node.JS - Campus Party Brasil 2011
Node.JS - Campus Party Brasil 2011
 
Python com baterias incluídas v2.0
Python com baterias incluídas v2.0Python com baterias incluídas v2.0
Python com baterias incluídas v2.0
 
Zabbix Conference LatAm 2019 - Automação: Ganhando produtividade
Zabbix Conference LatAm 2019 - Automação: Ganhando produtividadeZabbix Conference LatAm 2019 - Automação: Ganhando produtividade
Zabbix Conference LatAm 2019 - Automação: Ganhando produtividade
 
Canivete python
Canivete pythonCanivete python
Canivete python
 
Secomp 2011 - Node.JS - Introdução
Secomp 2011 - Node.JS - IntroduçãoSecomp 2011 - Node.JS - Introdução
Secomp 2011 - Node.JS - Introdução
 
Palestra DataFlow - II São Paulo Perl Workshop
Palestra DataFlow - II São Paulo Perl WorkshopPalestra DataFlow - II São Paulo Perl Workshop
Palestra DataFlow - II São Paulo Perl Workshop
 
Python para programadores Ruby
Python para programadores RubyPython para programadores Ruby
Python para programadores Ruby
 
RubyMasters 2011 - Beyond Ruby with NodeJS
RubyMasters 2011 - Beyond Ruby with NodeJSRubyMasters 2011 - Beyond Ruby with NodeJS
RubyMasters 2011 - Beyond Ruby with NodeJS
 
Nodejs - A performance que eu sempre quis ter
Nodejs - A performance que eu sempre quis terNodejs - A performance que eu sempre quis ter
Nodejs - A performance que eu sempre quis ter
 
TDC 2014 SP - E o DeltaSpike ?
TDC 2014 SP - E o DeltaSpike ?TDC 2014 SP - E o DeltaSpike ?
TDC 2014 SP - E o DeltaSpike ?
 
Gerando bindings de bibliotecas C++ para Python
Gerando bindings de bibliotecas C++ para PythonGerando bindings de bibliotecas C++ para Python
Gerando bindings de bibliotecas C++ para Python
 
Python No Terra (2006-12-21)
Python No Terra  (2006-12-21)Python No Terra  (2006-12-21)
Python No Terra (2006-12-21)
 

Cases de Python no 7Masters 2012

  • 1. Python: Cabe no seu bolso, cabe no seu micro, cabe no seu cérebro! Rodrigo Dias Arruda Senra iMasters 2012 - SP
  • 2. Python: Cabe no seu bolso, cabe no seu micro, cabe no seu cérebro! Rodrigo Dias Arruda Senra iMasters 2012 - SP
  • 3. Anatomia do Blá • Python na prática: • Geoprocessamento • Automação Industrial • Bibliotecas Digitais • Por que Python
  • 6. NDVI: Índice de Vegetacão
  • 7. NDVI: Índice de Vegetacão Fonte:Perfis temporais NDVI MODIS, na cana-soca, de maturação tardia. Fernando L. P. Ramme; Rubens A. C. Lamparelli; Jansle V. Rocha. Eng. Agríc. vol.30 no.3 Jaboticabal June 2010
  • 9. Exemplo: Extração da Geometria shp = ogr.Open(filepath)‫‏‬ # Layer correspondente ao Estado de São paulo layer = vf.shp.GetLayerByName('35mu500gc') # Feature correspondente ao município de Campinas feature = layer.GetFeature(501) # Extração dos pontos de controle do perímetro geometry = feature.GetGeometryRef()‫‏‬ poly = geometry.GetGeometryRef(0)‫‏‬ centroid = geometry.Centroid()‫‏‬ centroid_geo = centroid.GetX(), centroid.GetY()‫‏‬ # Definição do Retângulo Envoltório Mínimo (MBR)‫‏‬ lg_left, lg_right, lt_bot, lt_up = poly.GetEnvelope()‫‏‬ ul_geo, lr_geo = (lg_left, lt_up), (lg_right, lt_bot)‫‏‬
  • 19. SFC+ST Solução IDE TC6 XML Compilador SFC+ST→Ladder Python Modelo de Dados + Mapa de Variáveis Código Nativo
  • 22. MFN: 1 69: Paper on: <plant physiology><plant transpiration><measurement and instruments> 70: Magalhaes, A.C. 70: Franco, C.M. 44: Methodology of plant eco-physiology: proceedings of the Montpellier Symposium 50: Incl. bibl. 24: Techniques for the measurement of transpiration of individual plants 26: ^aParis^bUnesco^c-1965 30: ^ap. 211-224^billus.
  • 23. MFN: 1 69: Paper on: <plant physiology><plant transpiration><measurement and instruments> 70: Magalhaes, A.C. 70: Franco, C.M. 44: Methodology of plant eco-physiology: proceedings of the Montpellier Symposium 50: Incl. bibl. 24: Techniques for the measurement of transpiration of individual plants 26: ^aParis^bUnesco^c-1965 30: ^ap. 211-224^billus.
  • 24. MFN: 1 69: Paper on: <plant physiology><plant transpiration><measurement and instruments> 70: Magalhaes, A.C. 70: Franco, C.M. 44: Methodology of plant eco-physiology: proceedings of the Montpellier Symposium 50: Incl. bibl. 24: Techniques for the measurement of transpiration of individual plants 26: ^aParis^bUnesco^c-1965 30: ^ap. 211-224^billus.
  • 25. Projeto ISIS-NBP Database Console Engine Gateway http://reddes.bvsalud.org/projects/isisnbp
  • 26. Projeto ISIS-NBP Database Console IPython Engine Gateway http://reddes.bvsalud.org/projects/isisnbp
  • 27. Projeto ISIS-NBP Database PyOpenSSL, PyCrypto Console IPython Engine Gateway Twisted SSH HTTP http://reddes.bvsalud.org/projects/isisnbp
  • 28. Projeto ISIS-NBP Database ISIS native DB OIM PyOpenSSL, PyCrypto Console IPython Engine Gateway Twisted SSH HTTP http://reddes.bvsalud.org/projects/isisnbp
  • 29. Projeto ISIS-NBP Database ISIS native DB OIM PyOpenSSL, PyCrypto Console IPython Engine Gateway Twisted SSH Django XML-RPC HTTP http://reddes.bvsalud.org/projects/isisnbp
  • 30. Projeto ISIS-NBP Database ISIS native DB OIM PyOpenSSL, PyCrypto Console IPython Engine Gateway Twisted SSH PLY Django XML-RPC HTTP http://reddes.bvsalud.org/projects/isisnbp
  • 31. Projeto ISIS-NBP Database ISIS native DB OIM PyOpenSSL, PyCrypto nosetest Console IPython Engine Gateway Twisted SSH PLY Django XML-RPC HTTP http://reddes.bvsalud.org/projects/isisnbp
  • 32. Projeto ISIS-NBP ZODB, Durus,... WebDAV BDB, XML,... Database ISIS native DB RSS, OAI-PMH JSON OIM PyOpenSSL, PyCrypto nosetest Console IPython Engine Gateway Twisted SSH PLY Django XML-RPC HTTP http://reddes.bvsalud.org/projects/isisnbp
  • 33. Exemplo: Compilador def t_VFIELD(t): r'[vV]([0-9]+)' try: t.value = int(t.lexer.lexmatch.groups()[1]) except ValueError: print "Field accessor", t.value t.value = 0 return t def p_field_subfield(p): """field : VFIELD "^" "*" | VFIELD "^" SUBCHAR """ ch = p[3].lower() if ch=="*": p[0] = record[p[1]].subfields.value(pos=0) else: p[0] = record[p[1]].subfields[ch]
  • 34. Por que Python ? Produtividade do desenvolvedor Legibilidade Portabilidade Integração: C, C++, C#, Java,... Biblioteca Padrão Tecno-diversidade Maturidade
  • 35. Obrigado a todos pela atenção. Rodrigo Dias Arruda Senra http://rodrigo.senra.nom.br rsenra@acm.org As opiniões e conclusões expressas nesta apresentação são de exclusiva responsabilidade de Rodrigo Senra. Não é necessário requisitar permissão do autor para o uso de partes ou do todo desta apresentação, desde que não sejam feitas alterações no conteúdo reutilizado e que esta nota esteja presente na íntegra no material resultante. Imagens e referências para outros trabalhos nesta apresentação permanecem propriedade daqueles que detêm seus direitos de copyright.