OOP com python – Uma breve introdução.
Olá pessoal, tudo bem?
Tem muita novidade vindo, mas não é hora, nem lugar, nem o tema para falar sobre. Mas como o show tem que continuar, trago para vocês uma breve introdução sobre Orientação a Objetos com Python. Confesso que já venho estudando Python a algum tempo, mas nunca com tanta intensidade quanto agora, isso por que surgiram projetos para trabalhar com geodjango (uma framework web em python) e a descobri pyqgis.
Deixando de enrolação...
Bem, Python é uma liguagem Orientada a Objetos, mas que permite que você desenvolva aplicativos programando estrutural, é uma liguagem interpretada, que não exige que você indique o tipo da variável (dinamicamente tipada), possui fácil controle de bloco, o que te prende só ao código, sem ter que perder tempo analisando símbolos em casos de erro de sintaxe, e o melhor de tudo, é livre!
Para melhor compreensão, precisamos entender alguns conceitos, como classe, objeto, atributo e método. Para ser diferente (ou não!), começo falando de objetos. Objetos são todas as coisas as quais você deseja abstrair. Bem, você é um objeto! Como assim eu tou louco? É verdade, você é um objeto. Melhor, você alem de ser um objeto, você faz parte de uma classe... Não, esquece a geografia por equanto, que mané classe social... eu estou afirmando que você faz parte de uma classe, a dos Humanos. Legal né? Continuando, seus atributos, de fato são seus atributos (ou características, como queiram.), e os métodos, bem, esses se referem as ações tomadas por você hoje. Acho que você acordou, comeu, andou... Isso são os métodos, as ações tomadas pelos objetos!
E como desenvolver usando OOP com Python?
Para o desenvolvimento em Python usando OOP, é preciso conhecer algumas palavras reservadas, como class, que se refere a uma classe de objetos abstraídos, self que é um parametro que possibilita você fazer referencia a um argumento, substitui o this do Java, dentre outras que veremos conforme a necessidade.
Para exemplificar vou criar aqui um programa bastante simples que pede para você inserir uma mensagem, e esta mensagem é retornada para você. Vejamos:
class Mensagem:
def __init__ (self,pessoa,texto):
self.nome = pessoa
self.opniao = texto
def __str__(self):
saida = self.nome+ ' escreveu: \n' +self.opniao
return saida
nome_saida = raw_input ('Digite seu nome: ')
opniao_saida = raw_input ('O que você achou? \n')
print Mensagem(nome_saida,opniao_saida)
Explicando o código:
No método __init__ da classe Mensagem, foram jogados dois parametros: pessoa e texto. O self, primeiro parametro apresentado é padrao da linguagem, entao é conveniente utilizá-lo.
O trecho self.nome e self.opniao, sao referencias (instanciação)dos objetos antes apresentados: pessoa e texto.
O método __str__(), é mais um método mágico do Python, que determina o que será retornado do objeto.[1]
Perceba que este código sempre que invocado, ira inserir valores setados pelo usuário nos mesmo objetos, o que pra mim, é o segredo da OOP.
Finalizando
Bem, acho que deu para ter noção de como usar OOP em Python. Para maiores referencias sobre o assunto, aconselho visitar a Página da comunidade brasileira
Em breve, outras ferramentas Python... mas isto fica para um próximo post.
P.S.: Agradeço as correções sugeridas pelo amigo George, feitas no código, e ainda os ensinamentos sobre OOP.
Abraço a todos.
Vicente Martins
O Geoprocessamento e Suas Tecnologias – Parte 2
Conforme vimos na primeira parte deste post, o Geoprocessamento é um conjunto de tecnologias dinâmicas com alto potencial de aplicação.
Até aqui vimos que Geoprocessamento e SIG não são as mesma coisa. O SIG é apenas uma importante tecnologia dentre as diversas incluídas no Geoprocessamento.
Vimos também que programas como o gvSIG e ArcGis não são "SIGs" mas softwares para SIG. Assim como o Geoprocessamento possui várias ramificações tecnológicas o SIG é um sistema composto por softwares, hardwares, metodologias, recursos humanos e dados.
Ficamos de ver o que são e pra servem tecnologias como o Banco de Dados Geográfico e o WebMapping.
Banco de Dados Geográficos
Bom, vamos por partes. O que é um Banco de Dados (BD)?
Todo local, físico ou virtual onde estão armazenados dados, pode em certo sentido, ser chamado de banco de dados. Por exemplo, uma enciclopédia pode ser considerada um banco de dados. Mas para nós aqui da área de Geoprocessamento é mais importante o conceito especial de banco ou base de dados relacional. Ou seja um banco onde dados são armazenados na forma de tabelas relacionáveis entre si através campos chaves.
As mais diversas facetas de atividades, desde locadoras de DVD até grandes indústrias metalúrgicas usam-se deste tipo de base para ter um maior controle sobre fatores como cadastro de clientes e sua condição em relação à empresa (Inadimplência, por exemplo).
Neste ponto, é importante evitar confundir o BD em sí (conjunto de tabelas relacionáveis) com o programa que o gerenciará, o Sistema Gerenciador de Banco de Dados (SGBD). EM outras palavras, softwares como Access, MySQL, Oracle, PostgreSQL não são BD, mas sim SGBD.
Mas ainda não falamos no assunto deste tópico. O que é e para que serve um Banco de Dados Geográfico (BDG)?
O BDG, também chamado de Banco de Dados Espacial (BDE), é semelhante ao descrito acima (relacional), com a grande e importante diferença de suportar feições geométricas em suas tabelas.
Este tipo de base com geometria oferece a possibilidade de análise e consultas espaciais. É possível calcular nestes casos, por exemplo, áreas, distâncias e centróides, além de realizar a geração de buffers e outras operações entre as geometrias.
Como dica de estudos para você obter uma boa base conceitual sobre BDG, indico o livro "Banco de Dados Geográficos" do INPE, que está disponível para download em PDF aqui.
Atualmente, alguns programas de SGBD desenvolveram extensões que inserem no software características de Sistemas Gerenciadores de Banco de Dados Geográficos (SGBDG) o PostgreSQL, MySQL, e Oracle, sendo os dois primeiros softwares livres e o último proprietário.
Vamos falar um pouco mais do PostgreSQL e como ele passa a agir como SGBDG. O PostgreSQL é desenvolvido atualmente pela PostgreSQL Global Development Group. Quando se percebeu a necessidade de extender este SBGD para suportar dados espaciais desenvolveu-se a extensão conhecida como PostGis.
Sendo assim, vamos entender que o PostGis não é um BDG ou um SGBDG, ele é apenas uma extensão, um plugin, do PostgreSQL que lhe confere funções para armazenamento e manipulação de dados geográficos.
A figura abaixo procura mostrar a diferença entre o PostgreSQL e "seu filho". Note que para termos um BDG no PostgreSQL faz-se necessária a devida instalação da extensão PostGis.
Você pode importar arquivos vetoriais shapefile (*.shp) para dentro de um "Banco PostGis" utilizando recursos oferecidos pelo próprio programa ou utilizando algum software de SIG com essa funcionalidade. O shapefile será convertido em uma tabela espacial que pode ser integrada com as convencionais contidas na base, além de poder ser visualizada e manipulada através de programas como o gvSIG, Kosmo, Quantum Gis, Udig e muitos outros desta safra. Para baixar tutoriais sobre como realizar esta operação com alguns destes softwares, clique aqui.
Para baixar a versão mais recente do PostgreSQL e sua extensão espacial PostGis, acesse os links abaixo.
Para finalizar este post vamos considerar outra tecnologia do Geoprocessamento, a saber, WebMapping.
WebMapping (WebGis)
A internet vem se destacando nos últimos anos como uma excelente ferramenta para disponibilização e interligação de dados das mais diversas fontes e naturezas.
A geomática, como área do conhecimento, também encontrou na internet um nicho para suas atividades. A disponibilização de mapas digitais, os chamados WebGis ou WebMapping, tem-se tornado comum, permitindo que um maior número de usuários tenha acesso a dados espacializados, de forma hábil e atraente.
Talvez o estopim para o crescimento das aplicações SIG para internet tenha sido a popularização de serviços online gratuitos de localização como o Google Earth e Google Maps.
Os mapas na web se apresentam de três formas princiapais:
1) Mapas Estáticos - Mapas no formato de imagem (*.jpg, *.gif, *.png, etc) integrados à páginas da internet.
2) Mapas Gerados à partir de formulários - Fornece-se parâmetros para geração de mapas na forma de imagem.
3) Mapas Dinâmicos - O usuário seleciona uma área de seu interesse em um mapa geral, gerando uma navegação para outro mapa ou imagem mais específico com informações mais detalhadas desta região. Em geral apresentam interface atraente com ícones para consulta espacial calculo de distância e etc.
Para mais detalhes sobre tipos de mapas veja a publicação disponibilizada neste link.
Há muitos softwares e frameworks livres para o desenvolvimento de aplicações WebGis. Podemos destacar alguns: MapServer, GeoServer, i3Geo, Alov Map, Time Map, Open Layers e P.Mapper.
Diversos órgãos públicos fazem uso destas ferramentas para divulgação dos resultados de seus trabalhos.
A imagem abaixo mostra um exemplo de aplicação desenvolvida com MapServer e o framework P.Mapper. Clique aqui para acessar a página da aplicação (Este é um exemplo de mapa dinâmico).
Nesta visão geral sobre algumas das tecnologias do Geoprocessamento, pudemos dissipar alguns falsos conceitos em torno de termos como SIG, BDG, SGBDG, WebGis, etc. Espero que tenham gostado do que leram.
Fiquem à vontade para deixar sua sugestão de tema, críticas e impressões através do e-mail anderson[@]geoprocessamento.net
Anderson Medeiros
Tecnólogo em Geoprocessamento
O Geoprocessamento e Suas Tecnologias – Parte 1
Olá a Todos!
Sejam Bem Vindos ao Blog do Geo.NET.
Nesta minha primeira postagem no Blog do Geo.NET, vou apresentar de forma breve alguns conceitos básicos utilizados na área do Geoprocessamento. Você notará que, não raro, as pessoas costumam fazer confusão com muitos desses conceitos.
Geoprocessamento
É bom começar compreendendo o que é o próprio Geoprocessamento. Há quanto tempo você começou a enveredar nos estudos das geotecnologias?
Pessoalmente, lembro-me que quando iniciei no Curso Superior de Geoprocessamento, boa parte da minha turma de quarenta alunos não tinha nem idéia do que era o Geoprocessamento, alguns até achavam que teriam um curso direcionado para Geografia Física e outros achavam que não iriam nem precisar tocar no computador durante o curso!
Mas enfim, o que é o Geoprocessamento? Será que é a mesma coisa que o tão falado SIG? Não, não é!
O Geoprocessamento é um ramo da área do conhecimento denominada oficialmente de geomática. Ele emgloba o total conjunto de técnicas ligadas à informação espacial, quer seja no tocante a coleta, tratamento e análise desses dados. Algumas dessas técnicas são:
- Topografia;
- Fotogrametria;
- Cartografia;
- Sensoriamento Remoto;
- Posicionamento por Satélite;
- Geoestatística;
- Banco de Dados Geográficos;
- WebMapping;
- SIG
Ou seja o SIG, bem como as demais tecnologias mencionadas acima, são parte do conjunto maior de técnicas - O Geoprocessamento.
Acho muito interessante o comentário feito por Câmara e Davis de que “Se onde é importante para seu negócio, então Geoprocessamento é sua ferramenta de trabalho”. Essa frase resume bem a aplicabilidade do Geoprocessamento.
Agora, o que é o SIG?
SIG
Consideremos agora os usos do termo SIG (Sistema de Informação Geográfica) ou GIS (Geographic Information System).
Já percebeu que se usualmente se usa a mesma sigla para definir o SIG como os softwares utilizados como ferramentas para sua implementação? Por exemplo, já ouviu ou leu algo como: "Para desenvolver o SIG da prefeitura utilizamos o SIG Kosmo"? Notou o uso do mesmo vocábulo para descrever duas coisas diferentes?
Como dizia uma ex-professora minha da faculdade, a situação descrita acima é semelhante o uso da sigla DVD tanto para o aparelho como para o disco DVD (Digital Versatile Disc).
Talvez você ache até estranha essa idéia e pense: "Mas o Kosmo, gvSIG, ArcGis e tantos outros não sou "SIGs"? É verdade que alguns são até chamados como "Kosmo Gis" ou "GRASS Gis". Mas como a figura abaxo mostra, esses programas são apenas um elementos dos que constituem um SIG.
Conforme mostra a figura acima, um SIG (Sistema de Informação Geográfica), é composto não apenas de softwares, mas também por metodologias aplicadas, dados a serem coletados e tratados, hardwares específicos, como por exemplo scanners e coletores de dados GPS e recursos humanos.
Ou seja, o gvSIG, Kosmo, ArcGis, MapInfo, GRASS, Udig e tantos outros programas computacionais, proprietários ou livres são Softwares de SIG ou Softwares para SIG.
Quando se desenvolve um SIG, também chamada de aplicação SIG, dados de diversas fontes, de caráter espacial e tabular são integrados num único sistema onde estes dados podem ser cruzados gerando novas informações úteis. A figura abaixo mostra alguns dados visualizados no software gvSIG.
Na segunda parte deste post irei falar sobre outras tecnologias do Geoprocessamento, como o Banco de Dados Geográfico e o Webmapping e numa postagem futura considerei sobre exemplos práticos de como se implanta uma aplicação SIG e dos produtos e análises geradas através deste.
Por enquanto ficamos por aqui.
Anderson Medeiros
Tecnólogo em Geoprocessamento
Penn State University
Buenas noches pessoal,
Descobri hoje uma coisinha muito bacana: são as aulas de mestrado em GIS da Penn State University nos Estados Unidos. As aulas são gratuitas para qualquer um ler e ver os documentos relacionados com as aulas. Geralmente ekas são direcionadas a parte conceitual do geoprocessamento e geotecnologias em geral.
Existem muitas matérias interessantes e pra quem consegue ler em inglês pode ser uma mão na roda. As aulas são disponibilizadas através de um site chamado Open Educational Resources.
Estes links que estou passando, se referem somente ao departamento de EMS (Earth and Mineral Sciences). Devem existir com certeza outros departamentos que disponibilizem estas aulinhas excelentes.
Aqui vão alguns exemplos de aulas que o departamento de Geografia deixou na WEB:
Department of Geography
- GEOG 482/160: Nature of Geographic Information
Author/Instructor: David DiBiase - GEOG 485: GIS Programming and Customization
Author/Instructor: Jim Detwiler; Instructors: Frank Hardisty, Tim Enderlein, James O'Brien - GEOG 583: Geospatial System Analysis and Design
Author/Instructor: Todd Bacastow - GEOG 585: Open Web Mapping
Author/Instructor: Ian Turton - GEOG 588: Planning GIS for Emergency Managment
Author/Instructor: Anthony Robinson - GEOG 860: Comparative GIS
Author/Instructor: Adena Schutzberg - GEOG 862: GPS and GNSS for Geospatial Professionals
Author/Instructor: Jan Van Sickle - GEOG 863: GIS Mashups for GIS Professionals
Author/Instructor: Jim Detwiler
Só não dá pra fazer os exercícios. Pra isso você tem que ser aluno da Penn State. Mas enfim, fica aí a dica.
George Silva
Conceitos, aprenda-os!
Acompanho diversas listas de discussão internet afora e vejo que diversas dúvidas frequentes são fruto de uma fraca (ou inexistente) base teórica de Geoprocessamento. Todo mundo quer instalar um software e sair pilotando.
Isto é errado. Desvaloriza o profissional de GIS/SIG e polui as listas de discussão com dúvidas que poderiam ser simplesmente resolvida se a base téorica estivesse presente no cérebro do indivíduo. Faço esta postagem um apelo! Leiam os conceitos! Saiba cartografia, geodésia e os conceitos de geoprocessamento!
Aprender o software é fácil. O difícil é saber o que fazer com o ele, e novamente, por isso os conceitos são importantes. Em nosso blog publicarei (tentarei fazer disto algo semanal ou até mais frequente) uma reflexão sobre os principais conceitos de GIS/SIG, começando hoje.
Este pequeno texto foi feito para postagem no site Geo.NET com o título Conceitual 101. "Olá pessoal, Vou tentar explicar alguns conceitor básicos por trás do geoprocessamento, e clarear as idéias do pessoal, especialmente de quem está começando a trabalhar com esta ferramenta poderosa! Este mini-artigo tem um foco conceitual, e você não irá encontrar procedimentos de software aqui.
Em primeiro lugar, geoprocessamento é uma ferramenta utilizada em diversas ciências para resolver problemas de ordem espacial. Quando dizemos espacial ou espaciais, estamos nos referindo a dados de natureza geográfica, podem ser localizados em um plano ou globo de maneira precisa. Outra idéia importante do geoprocessamento é a sua capacidade de sobrepor informações em um plano. Esta habilidade é de extrema importância e constitui o motor da análise espacial como conhecemos hoje. A ferramenta do geoprocessamento é constituída por 4 grandes áreas, à saber: Cartografia Digital, Sensoriamento Remoto, Banco de Dados e Análise Espacial.
Através destes quatro ramos podemos desenvolver metodologias para solucionar problemas de ordem espacial, por exemplo:
- “Onde se concentram meus clientes?”
- “Qual estado mais desmata no Brasil?”
- “Qual estado tem maior cobertura vegetal de floresta amazônica?”
- “Qual é a distância média de meus consumidores em relação ao centro distribuidor?”
- “Qual melhor local para instalar uma antena de celular?”
Vamos dar uma pincelada em cada uma das grandes áreas:
Cartografia Digital
Nesta área do Geoprocessamento se encontra a capacidade de desenhar e construir mapas através do computador, utilizando-se pontos, linhas, polígonos, anotações, um sistema de referência, datum, combinando diversas informações, como estradas, hidrografia, localidades, perímetro urbano, cobertura vegetal e uso do solo, entre outras, dependendo da finalidade do mapa.
A cartografia digital é um sistema derivado dos CADs, que evoluiu e possibilitou aos cartógrafos e engenheiros a representar uma determinada área do globo de maneira mais próxima do real.Sua evolução de forma combinada com outras ferramentas nos traz aos SIGs (Sistemas de Informação geográfica) de hoje.
Sensoriamento Remoto
O sensoriamento remoto é uma ciência que se dedica ao estudo de alvos de forma...remota, sem contato direto com o objeto de estudo. É uma ciência bastante ampla, e utiliza diversos instrumentos para estudar as diversas características dos objetos alvo, como câmeras fotogramétricas, radares e uma variedade de sensores, cada qual com uma tarefa especifica.
A junção do Sensoriamento Remoto com a Cartografia Digital nos permite desenvolver mapas precisos e de forma ágil, pois elimina-se alguns processos de campo (note que não se deve eliminar trabalhos de campo na elaboração de nenhum mapa, o sensoriamente remoto apenas reduz esta necessidade, tornando o trabalho mais ágil – o campo, além disso, serve como confirmação para as informações dadas pelo sensor remoto e para metodologias de detecção automática).
Banco de Dados
Vamos analisar um desenho CAD. Ele é composto por pontos, linhas, polígonos, textos, etc. O desenho-objeto (ponto, linha ou polígono) não contém informações relacionadas à nenhum dos objetos reais representados naquele mapa. Quando é necessário mudar o mapa o que temos de fazer ? Redesenhá-lo.
Exemplo: Um mapa de estradas, contendo estradas de terra, estradas pavimentadas pista simples e estradas pavimentadas pista dupla. Se o estado duplicar uma das estradas, é necessário redesenhar aquela linha correspondente a estrada duplicada, como estrada duplicada.
Com a adição de Sistemas Gerenciadores de Banco de Dados (SGBD) à Cartografia Digital foi possível guardar diversas informações sobre os objetos ali representados de forma automatizada. Olhemos no caso descrito anteriormente: ao invés de desenharmos novamente a linha, precisaríamos apenas alterar o atributo da estrada correspondente para “Pavimentada de Duas Pistas” e o sistema entenderia que esta estrada precisa ser desenhada de maneira diferente.
Os SGBD nos permitem a pesquisar as feições e guardar diversas informações alfanuméricas sobre nossos objetos, facilitando a construção de mapas e administração de dados espaciais.
Um exemplo seria um banco de dados de estradas (shapefile, ou qualquer outro arquivo amplamente suportado por grandes fabricantes de software)
-- pseudo SQL CREATE TABLE estradas ( gid SERIAL NOT NULL, sigla VARCHAR(6) NOT NULL, extensao DOUBLE NOT NULL, no_faixas INTEGER, estado_conservacao VARCHAR(20), geometria_linha GEOMETRY, CONSTRAINT estradas_pk PRIMARY KEY(gid) ); INSERT INTO estradas VALUES(DEFAULT,'BR-101',3000.00,2,'BOM','LINESTRING(0 0, 1 1, 2 2, 3 3, 5 5)');
Podemos estruturar o sistema para ele atender nossas necessidades, contendo uma miríade de informações que nos ajudam durante a execução cartográfica de um trabalho, como nos permite trabalhar em sistemas complexos, localizar feições específicas (BR-101 ou a BR-153, por exemplo) e garantir a integridade dos dados espaciais (falaremos em outro tutorial sobre integridade de dados, pois este assunto já foge do escopo inicial do presente artigo).
Análise Espacial
Análise Espacial é o motor por trás do Geoprocessamento. É através dela que conseguimos prever e auxiliar na administração de empreendimentos (quando a palavra empreendimentos aparecer no texto estou me referindo a empresas privadas, públicas, órgãos governamentais, enfim, tudo que possa utilizar geoprocessamento com finalidades especificas).
Com a análise espacial, podemos aplicar pesos e trabalhar com superfícies de viabilidade, à fim de descobrir quais são as melhores alternativas para um problema, exemplo: onde instalar o próximo lixão da cidade?
Sabemos que ele deve ter tamanho x, para funcionar por pelo menos 15 anos, deve ter uma forma de acesso fácil, não deve ficar à montante da cidade, deve ficar à pelo menos 1000m de qualquer curso d’água, e o solo não deve ser arenoso.
No caso de nosso exemplo, combinando os temas de estradas, hidrografia, perímetro urbano e tipos de solo da região, podemos “somar” (estou usando termo somar, mas qualquer operação é possível) os pontos fracos e fortes de cada tema e descobrir o lugar ótimo para a instalação do lixão.
Este também não é o único tipo de análise espacial disponível, sendo possível utilizar outras metodologias para a realização de um trabalho. Bem, aqui listamos as principais ferramentas e ciências que o geoprocessamento pode utilizar para atingir seus resultados.
Em próximo artigo (prometo para próximo domingo) listaremos os tipos de arquivos e falaremos um pouco de sistemas de projeção e datums, assunto que muito confunde nossos leitores! Espero que gostem do artigo, e dêem suas opiniões!" É isto aí pessoal, na próxima postagem vou escrever um pouco sobre formatos e feições, raster e vetores. Deem suas opiniões e palpitis sobre este textículo!
George Silva




