ESCOLA SUPERIOR ABERTA DO BRASIL - ESAB CURSO DE PÓS-GRADUAÇÃO LATO SENSU EM ENGENHARIA DE SISTEMAS EMERSON TENFEN DESENVOLVIMENTO DE UM SISTEMA WEB QUE MOSTRE AS OCORRÊNCIAS POLICIAIS DA CIDADE DE BLUMENAU-SC EM FORMA DE MAPAS DE CALOR EM UM MAPA DIGITAL USANDO SOFTWARE LIVRE VILA VELHA - ES 2012 EMERSON TENFEN DESENVOLVIMENTO DE UM SISTEMA WEB QUE MOSTRE AS OCORRÊNCIAS POLICIAIS DA CIDADE DE BLUMENAU-SC EM FORMA DE MAPAS DE CALOR EM UM MAPA DIGITAL USANDO SOFTWARE LIVRE Monografia apresentada ao Curso de PósGraduação em Engenharia de Sistemas da Escola Superior Aberta do Brasil como requisito para obtenção do título de Especialista em Engenharia de Sistemas, sob orientação da Profª. Me Janaina Costa Binda. VILA VELHA - ES 2012 EMERSON TENFEN DESENVOLVIMENTO DE UM SISTEMA WEB QUE MOSTRE AS OCORRÊNCIAS POLICIAIS DA CIDADE DE BLUMENAU-SC EM FORMA DE MAPAS DE CALOR EM UM MAPA DIGITAL USANDO SOFTWARE LIVRE Monografia aprovada em ... de ... de 2012 . Banca Examinadora _____________________________ _____________________________ _____________________________ VILA VELHA - ES 2012 RESUMO Para auxiliar no policiamento ostensivo da cidade de Blumenau, a presente monografia apresenta o desenvolvimento de um sistema WEB a partir da utilização de software livre que possibilita a visualização das ocorrências policiais registradas na cidade de Blumenau/SC pelo 10° Batalhão de Polícia Militar de Santa Catarina. O sistema apresenta as ocorrências em forma de mapa de calor em um mapa digital. Para tanto, utilizou-se a metodologia da pesquisa exploratória. Foram efetuadas consultas em livros, artigos, internet, monografias, teses e dissertações com informações sobre as ferramentas de software livre para desenvolvimento WEB e a integração dessas ferramentas para a geração de um mapa digital. Após a pesquisa, foi apresentado um estudo de caso com o desenvolvimento de uma versão do sistema. A análise dos dados demonstrou que a ferramenta desenvolvida e sugerida para uso da Polícia Militar pode contribuir para o estudo da concentração das ocorrências registradas sem onerar os cofres públicos por se tratar de um aplicativo em plataforma livre. Palavras-chave: Plataforma WEB. Software livre. Mapa de calor. Segurança pública. LISTA DE FIGURAS Figura 1 - Cópia de ocorrência policial ........................................................................ 9 Figura 2 - Mapa de alfinetes ...................................................................................... 10 Figura 3 - Esquema básico de funcionamento de um sistema de informação. ......... 14 Figura 4 - Semelhança entre os conceitos de organização e Sistemas de Informação .................................................................................................................................. 17 Figura 5 - Sistema de Banco de Dados ..................................................................... 21 Figura 6 - Sintaxe dos comandos para Criar e Excluir um banco de dados .............. 22 Figura 7 - Sintaxe do comando para criar Tabela ..................................................... 22 Figura 8 - Inserção, Exclusão e Seleção de registros de uma Tabela ...................... 23 Figura 9 - Exemplo de código PHP ........................................................................... 24 Figura 10 - Página PHP ............................................................................................ 25 Figura 11 - Funcionamento dos scripts PHP ............................................................. 26 Figura 12 - Comando If ............................................................................................. 29 Figura 13 - Comando switch...................................................................................... 30 Figura 14 - Comando While....................................................................................... 30 Figura 15 - Comando do-while .................................................................................. 31 Figura 16 - Sintaxe do comando for .......................................................................... 31 Figura 17 - Código para gerar mapa simples com a API do Google Maps ............... 33 Figura 18 - Mapa simples de Blumenau .................................................................... 34 Figura 19 - Heat Maps para mostrar cliques em uma página WEB........................... 35 Figura 20 - Heat Maps para mostrar Ilhas de calor na cidade de Manaus ................ 36 Figura 21 - Mapa de Ocorrências do 10º BPM .......................................................... 37 Figura 22 - Parte do arquivo criaxml.php que faz conexão com banco de dados ..... 38 Figura 23 - Segunda parte do arquivo criaxml.php.................................................... 39 Figura 24 - Saída do arquivo criaxml.php .................................................................. 40 Figura 25 - Tag HTML para criar a área onde o mapa será mostrado. ..................... 41 Figura 26 - Função load() do arquivo mapablumenau.php ........................................ 41 Figura 27 - Função GDownloadURL() ....................................................................... 42 Figura 28 - Função initHeatMap().............................................................................. 43 Figura 29 - Densidade de ocorrências policias na cidade de Blumenau-SC mostradas através de mapas de calor ...................................................................... 44 Figura 30 - Densidade de ocorrências policias na cidade de Blumenau-SC mostradas através de mapas de calor ...................................................................... 44 Figura 31 - Densidade de ocorrências policias na cidade de Blumenau-SC mostradas através de mapas de calor ...................................................................... 45 LISTA DE QUADROS Quadro 1 - Operadores de Comparação ................................................................... 28 SUMÁRIO INTRODUÇÃO ............................................................................................................ 7 1.1 OBJETIVO GERAL .......................................................................................... 11 1.2 OBJETIVOS ESPECÍFICOS ............................................................................ 11 2 SISTEMAS DE INFORMAÇÃO E SOFTWARE LIVRE ......................................... 13 2.1 SISTEMAS DE INFORMAÇÃO ........................................................................ 13 2.2 SOFTWARE LIVRE ......................................................................................... 17 3 FERRAMENTAS DE SOFTWARE LIVRE UTILIZADAS PARA DESENVOLVER O SISTEMA .................................................................................................................. 19 3.1 APACHE .......................................................................................................... 19 3.2 MYSQL ............................................................................................................ 20 3.3 HYPERTEXT PREPROCESSOR – PHP ......................................................... 24 3.4 GOOGLE MAPS .............................................................................................. 32 3.5 HEAT MAPS .................................................................................................... 34 4 DESENVOLVIMENTO DO SISTEMA .................................................................... 37 4.1 CRIAÇÃO DO ARQUIVO XML......................................................................... 38 4.2 MONTANDO O MAPA DIGITAL ...................................................................... 40 4.3 CRIANDO OS MAPAS DE CALOR.................................................................. 42 CONCLUSÃO ........................................................................................................... 46 REFERÊNCIAS ......................................................................................................... 48 7 INTRODUÇÃO O aumento da criminalidade é um dos fatores que mais tem preocupado os cidadãos do Brasil nos últimos anos. Crimes antes tidos como raros e singulares, hoje são frequentes e diariamente são veiculados nos mais diversos meios de comunicação. O poder público, através dos órgãos de segurança pública, tenta coibir a violência. Uma das instituições que participam do combate ao crime é a Polícia Militar. A Polícia Militar atua no combate à criminalidade de duas formas: repressivamente e preventivamente. A primeira forma pode ocorrer de duas maneiras, quando os policiais militares flagram uma situação de crime e atuam para coibir tal ação, ou quando qualquer pessoa da comunidade flagra o ato delituoso e entra em contato com a Polícia Militar através dos telefones de emergência. As duas maneiras que a Polícia Militar age repressivamente têm algo em comum: o crime já ocorreu, ou seja, a vítima já sofreu o dano material ou físico. Mesmo que a Polícia Militar prenda os suspeitos, nem sempre a vítima terá seu patrimônio, ou sua integridade física restabelecidos. Por este motivo, os órgãos de segurança pública, em especial a Polícia Militar, vêm atuando bastante na prevenção aos crimes, para impedir que eles ocorram. A prevenção se dá através do policiamento ostensivo. Élio (2011, np) define policiamento ostensivo como: O policiamento ostensivo, de competência da Polícia Militar, são todos os meios e formas de emprego da Polícia Militar, onde o policial é facilmente identificado pela farda que ostenta, como principal aspecto, e de equipamentos, aprestos, armamento e meio de locomoção, para a preservação da ordem pública, observando critérios técnicos, táticos, variáveis e princípios próprios da atividade, visando à tranqüilidade e o bem estar da população. O policiamento ostensivo tem como função principal realizar a prevenção dos crimes, contravenções penais e de violações de normas administrativas em áreas específicas, como o trânsito, meio ambiente, poluição sonora entre outras. O policiamento ostensivo se constitui em medidas preventivas e de segurança, para evitar o acontecimento de delitos e de violações de normas. O objetivo principal do policiamento ostensivo é atuar na eliminação da crença de que a oportunidade faz o ladrão. Se não existir oportunidade de delinqüir, então o crime também não existirá. Nunca será possível eliminar todas as oportunidades de delinqüir, mas pela atuação eficaz da polícia ostensiva, com policiamento ostensivo bem planejado e 8 executado, estas podem ser extremamente minimizadas e diminuídas, muito mais pela sensação de presença, do que de efetiva presença real. Mas como saber onde o crime vai ocorrer? Como planejar o local onde deve ser efetuado o policiamento ostensivo para coibir delitos? Em uma cidade como Blumenau-SC, por exemplo, que possui 520 Km² e atende a média diária de 290 ocorrências policiais, como um policial militar poderia estar justamente no ponto onde um delinquente está prestes a cometer um delito? Na verdade, a Polícia Militar de Blumenau, através do 10º Batalhão de Polícia Militar (10º BPM), há tempos vem tentando se antecipar aos criminosos através da leitura dos dados retirados da Central Regional de Emergência (CRE). A CRE registra os dados referentes a cada atendimento feito pela Polícia Militar: a) Número da ocorrência: número único utilizado para identificar cada ocorrência; b) Natureza da ocorrência: código utilizado para identificar o delito praticado na ocorrência, por exemplo: C114 indica que se trata de uma tentativa de homicídio, C212, trata-se de um furto de veículo; c) Data e hora que ocorreu o fato; d) Endereço onde aconteceu o delito; e) Policiais que atenderam a ocorrência; f) Histórico final da ocorrência: encaminhamento que foi dado à ocorrência, ou seja, providências tomadas pelos Policiais que estiveram no local. Um exemplo de registro de ocorrência utilizado pela CRE pode ser observado na figura 1. 9 Figura 1 - Cópia de ocorrência policial Fonte: Central de Emergência 190 de Blumenau-SC Alguns dados contidos nas ocorrências registradas na CRE servem como parâmetros para intensificar o policiamento ostensivo em uma ou outra região da cidade, por exemplo, os endereços onde acontecem os crimes. Se de cada 100 (cem) ocorrências na cidade de Blumenau, 10 (dez) acontecem na rua X, o policiamento ostensivo deve ser empregado naquela rua até que os índices de violência sejam reduzidos à normalidade. Até pouco tempo, a solução utilizada pela Polícia Militar para visualizar a incidência de crimes em uma mesma região da cidade eram os mapas de alfinetes, conforme ilustrado na figura 2. 10 Figura 2 - Mapa de alfinetes Fonte: Santos (2011) A cada ocorrência atendida, um alfinete era colocado no endereço em um mapa pendurado na parede. Essa solução tornou-se inviável quando o 10º BPM começou a atender a média diária de 290 ocorrências. A informatização trouxe nova perspectiva para os mapas de alfinetes. Para Bornhofen e Tenfen (2009), com o auxílio dos computadores, é possível transportar os mapas para o mundo digital, mais veloz e mais preciso, e realizar, em fração de segundos, o trabalho que antes levaria horas para ser concluído. Tendo em vista os aspectos acima mencionados, propôs-se responder a seguinte questão: Será possível o desenvolvimento de um sistema WEB que mostre as ocorrências policiais da cidade de Blumenau-SC em forma de mapas de calor em um mapa digital usando softwares livres, auxiliando assim, o 10º Batalhão de Polícia Militar e a cidade de Blumenau no planejamento e distribuição do efetivo policial, a fim de combater o aumento da violência de forma mais eficaz? Este trabalho já se justificaria somente pelo fato de que, depois de pronto e implementado, auxiliará no combate à violência - visível em todas as regiões do Brasil - não sendo diferente na cidade de Blumenau-SC. Porém, possui mais um 11 diferencial. Em seu desenvolvimento, foram utilizadas tecnologias de software livre, deixando de onerar os cofres públicos. 1.1 OBJETIVO GERAL O objetivo desta pesquisa é desenvolver um sistema WEB, utilizando softwares livres, que mostre um mapa da cidade de Blumenau-SC com suas ocorrências policiais em forma de mapas de calor. 1.2 OBJETIVOS ESPECÍFICOS Para corroborar com o alcance desse objetivo, propõem-se: a) descrever as ferramentas de software livre para desenvolvimento WEB; b) pesquisar a integração entre essas ferramentas para a geração de um mapa digital; c) apresentar a necessidade do desenvolvimento de um sistema WEB para auxiliar na avaliação das ocorrências policiais na cidade de Blumenau-SC; e d) apresentar um protótipo funcional do sistema. A metodologia utilizada foi a pesquisa exploratória. Foram efetuadas consultas em livros, artigos, internet, monografias, teses e dissertações com informações sobre as ferramentas de software livre para desenvolvimento WEB e a integração dessas ferramentas para a geração de um mapa digital. Após a pesquisa, apresenta-se um estudo de caso com o desenvolvimento de uma versão do sistema. Para a apresentação de toda a pesquisa realizada, a monografia está estrutura em 4 (quatro) capítulos e conclusão. O primeiro capítulo refere-se à apresentação do tema, os objetivos geral e específico e a justificativa. No segundo capítulo efetua-se a revisão bibliográfica abordando o tema sistemas de informação e software livre. No terceiro capítulo lista-se toda a descrição das ferramentas de software livre utilizados para o desenvolvimento do estudo de caso, suas características e alguns comandos usados no desenvolvimento. No quarto capítulo, o pesquisador mostra o 12 desenvolvimento do estudo de caso, suas fases e o resultado final. Por fim, são apresentadas as conclusões desta pesquisa e as recomendações para pesquisas futuras. 13 2 SISTEMAS DE INFORMAÇÃO E SOFTWARE LIVRE A proposta deste capítulo é apresentar a revisão de literatura dos temas sistemas de informação (SI) e software livre, e a descrição das ferramentas de software livre disponíveis para desenvolvimento WEB, suas características e alguns comandos que serão utilizados no desenvolvimento do estudo de caso. 2.1 SISTEMAS DE INFORMAÇÃO Para Polloni (2000 apud CÔRTES, 2008, p. 24), um sistema de informação “é qualquer sistema usado para prover informações (incluindo seu processamento), qualquer que seja sua utilização”. Conforme Laudon e Laudon (2001 apud CÔRTES, 2008, p. 24), sistema de informação é “um conjunto de componentes inter-relacionados que coleta (ou recupera), processa, armazena e distribui informação para dar suporte à tomada de decisão e ao controle da organização”. Um SI trata “a entrada ou coleta de dados, seu processamento e a geração de informações” (CÔRTES, 2008, p. 25). De acordo com Stair e Reynolds (2011, p. 3), “sistema de informação (SI) é um conjunto de componentes inter-relacionados que coleta, manipula, armazena e dissemina dados e informações e fornece um mecanismo de realimentação para atingir um objetivo”. Percebe-se que as definições convergem para o entendimento de que um sistema de informação (SI) é formado pela inter-relação de entradas, processos e saídas com o propósito de auxiliar num momento de decisão. 14 Nas definições apresentadas de SI, é possível verificar que há uma diferença entre dados e informações. Para esclarecer, traz-se a definição desses dois elementos. De acordo com Côrtes (2008, p. 26), dados “são sucessões de fatos brutos que não foram organizados, processados, relacionados, avaliados ou interpretados, representando apenas partes isoladas de eventos ou ocorrências”. Exemplo disso poderia ser a apresentação de um número x de furtos, sem qualquer vinculação ao período e local da ocorrência. Quando esses dados são relacionados, avaliados, interpretados ou organizados, pode-se entender que foi gerada a informação. Assim, com um dado transformado em informação, pode-se utilizá-lo para uma tomada de decisão (CÔRTES, 2008). Exemplo disso é saber em que período e local ocorreu um número x de furtos, para que decisões possam ser tomadas em relação aos eventos. Pode-se ver o esquema básico de como funciona um SI a partir da figura 3. Figura 3 - Esquema básico de funcionamento de um sistema de informação. Fonte: Cortes (2008, p. 27) Para uma eficiente aplicação, um SI pode ser classificado de acordo com a forma de suporte à organização nos seus diferentes níveis de atividades, tais como sistemas de informação operacional, gerencial e estratégico (REZENDE, 2003; TURBAN et al., 2010). Um SI operacional trata das operações diárias, abrangendo o processamento de operações e transações rotineiras e manipula informações detalhadas, geralmente utilizado por supervisores, operadores e funcionários administrativos. 15 Para a manipulação de informações agrupadas, os sistemas de informação são classificados como gerenciais, auxiliando no planejamento, organização e controle das atividades, servindo como fonte de consulta e geração de relatórios. Um SI estratégico dá suporte a decisões que podem determinar o planejamento organizacional a longo prazo. Todo esse suporte dependerá da infra-estrutura de informação que a organização dispuser, que consiste em instalações físicas, serviços e gestão. O principais componentes dessa infra-estrutura são: a) hardware de computador; b) software; c) redes e recursos de comunicação; d) bancos de dados e trabalhadores de dados; e e) equipe de gestão de informação (TURBAN et al., 2010). Outro aspecto a ser considerado na implementação de um sistema de informação é quanto à arquitetura da tecnologia de informação, visto ser “um mapa ou um plano de alto nível ou dos ativos de informação em uma organização incluindo o projeto físico do edifício que contém o hardware” (TURBAN et al., 2010, p. 74). A arquitetura da tecnologia de informação está vinculada à arquitetura do negócio, baseando-se nos planos organizacionais, visões, objetivos, problemas e as informações necessárias de apoio (TURBAN et al., 2010). Dentro da infra-estrutura, ainda é necessário considerar os sistemas baseados na WEB, que referem-se aos “aplicativos ou serviços residentes em um servidor por meio de um navegador WEB e, portanto, acessíveis de qualquer lugar do mundo pela WEB” (TURBAN et al., 2010, p. 74). Outras funcionalidades da WEB são a facilidade de atualização dos dados em tempo real e que são acessíveis universalmente por usuários da WEB (TURBAN et al., 2010). 16 A todo momento, as organizações recebem um turbilhão de dados que podem influenciar direta ou indiretamente na rotina de suas decisões. É difícil pensar em não dispor de ferramentas que auxiliem na sistematização desses dados. Nesse sentido, os SIs passaram a ser ferramentas integradas de suporte, por vezes on-line e interativas, às atividades de decisões das organizações (LAUDON; LAUDON, 2004). No entendimento de Rezende (2004), o maior objetivo de um SI em um negócio é o auxílio que proporciona nos processos de tomada de decisão e que se não se propuserem a isso, de nada valeria o investimento. Complementa que os benefícios proporcionados por um SI às organizações são indiscutíveis quando aplicados como ferramenta de suporte à solução de problemas. Quanto mais as informações forem personalizadas e disponíveis, mais a organização tende a se tornar competente em sua gestão. Para Stair e Reynolds (2011, p. 40), no universo das corporações, o conceito de organização se confunde com o conceito de SI, uma vez que: Uma organização é um sistema, o que significa que ela tem entradas, mecanismos de processamento, saídas e realimentação. Uma organização utiliza constantemente dinheiro, pessoas, materiais, máquinas e outros equipamentos, dados, informações e decisões. Ao observar essa coerência entre os dois conceitos, entende-se que as entradas do ambiente para o sistema organizacional seriam os recursos, como materiais, pessoas e dinheiro. Essas entradas passam por um mecanismo de transformação e depois resultam em saídas para o ambiente. Assim, bens e serviços passam a ser as saídas do mecanismo - de valor relativo mais elevado do que as entradas - por meio da adição de valor ou o equivalente, alcançando o objetivo das organizações. A figura 4 apresenta a semelhança entre os conceitos de organização e SI. 17 Figura 4 - Semelhança entre os conceitos de organização e Sistemas de Informação Fonte: Adaptado de Stair e Reynolds (2011, p. 41) 2.2 SOFTWARE LIVRE Para entender o que é um software livre, é preciso primeiramente conhecer o processo de desenvolvimento de um software. Para desenvolver um software, o programador, utilizando uma linguagem de programação, escreve uma sequência de instruções lógicas que o computador deve executar. Esse conjunto de instruções escritas pelo programador é chamado de código fonte. O código fonte é compilado pelo computador, traduzindo a sequência de instruções em linguagem de máquina, uma sequência de 0 (zeros) e 1 (uns), chamada de código objeto, que o computador “entende” (FALCÃO et al., 2005). Procurando fazer uma analogia com a culinária, o código fonte seria semelhante a uma receita de bolo. A base da receita é sempre a mesma, porém pode ser alterada conforme as regiões em que é feita. O que difere uma receita da outra são as necessidades ou a disponibilidade de ingredientes de cada região. Cada cozinheiro altera sua receita conforme a necessidade e repassa a outro cozinheiro (DUARTE, 2009). 18 Da mesma forma é o código fonte. Este é o conjunto de instruções para o computador (receita) que formam o programa (bolo), o software é considerado livre se este dispor a receita para todos, ou seja, se o código fonte for disponível publicamente, sem restrições, para que outras pessoas possam usá-lo, copiá-lo, estudá-lo e modificá-lo (DUARTE, 2009, p1). Software livre é o software que pode ser usado, copiado, estudado, modificado e redistribuído sem restrição alguma, e ainda, disponibilizado seu código fonte. Para ser classificado como livre, o software deve satisfazer 04 (quatro) requisitos de liberdade ao seu usuário: a) A liberdade de executar o programa, para qualquer propósito (liberdade nº 0); b) A liberdade de estudar como o programa funciona, e adaptá-lo para as suas necessidades (liberdade nº 1). Acesso ao código-fonte é um pré-requisito para esta liberdade; c) A liberdade de redistribuir cópias de modo que você possa ajudar ao seu próximo (liberdade nº 2); e d) A liberdade de aperfeiçoar o programa, e liberar os seus aperfeiçoamentos, de modo que toda a comunidade se beneficie (liberdade nº 3). Acesso ao código-fonte é um pré-requisito para esta liberdade (CAMPOS, 2006). Para diferenciar software livre de software grátis, GNU (2011, np) explica que “software livre é uma questão de liberdade, não de preço. Para entender o conceito, você deve pensar em liberdade de expressão e não em cerveja grátis”. Ou seja, software livre não é aquele que é somente disponibilizado sem custo algum ao usuário, mas sim, o software que o usuário pode utilizar, estudar, modificar seu código fonte conforme suas necessidades e redistribuí-lo, com ou sem as modificações. 19 3 FERRAMENTAS DE SOFTWARE LIVRE UTILIZADAS PARA DESENVOLVER O SISTEMA A proposta do trabalho é desenvolver um sistema WEB, utilizando softwares livres, para isso, neste item são apresentados comandos, funções e características que auxiliaram no desenvolvimento do projeto e, consequentemente, no alcance do objetivo específico do trabalho. As ferramentas utilizadas neste projeto são o servidor WEB Apache, o gerenciador de banco de dados MySQL e a linguagem de programação PHP, além das APIs do Google Maps e do Heat Maps. O objetivo deste trabalho não é de esgotar o assunto sobre essas ferramentas, mas sim, desenvolver um sistema específico de geração de mapas de calor para mostrar as ocorrências policias da cidade de Blumenau-SC. 3.1 APACHE Sempre que alguém acessa uma página da internet, há um servidor WEB por trás desse acesso para fazer o tratamento das requisições do navegador 1. Segundo Alecrim (2006, p. 01): Um servidor Web é um computador que processa solicitações HTTP (HyperText Transfer Protocol), o protocolo padrão da Web. Quando você usa um navegador de internet para acessar um site, este faz as solicitações devidas ao servidor Web do site através de HTTP e então recebe o conteúdo correspondente. Para Ribeiro (2012, np), “o servidor web é um programa responsável por disponibilizar páginas, fotos, ou qualquer outro tipo de objeto ao navegador do cliente”. 1 Navegador, ou browser, é um programa de computador que permite visualizar as páginas da internet. 20 O Apache é um servidor de páginas WEB de fonte aberta, com um projeto modular, altamente configurável. Trabalha muito bem com linguagens de scripts2, como o PHP. É multiplataforma, que pode ser executado em vários sistemas operacionais diferentes (ALECRIM, 2006). Nasceu de um projeto incial do National Center for Super Computing Applications (NCSA) no ano de 1995. Após o seu principal desenvolvedor deixar o NCSA, o projeto do servidor WEB caminhou vagarosamente. Enquanto isso, as pessoas do NCSA que utilizavam o servidor WEB começaram a trocar suas correções e logo perceberam a necessidade de criar um fórum para organizar as correções. O grupo utilizou o código do servidor WEB do NCSA e criou um novo servidor WEB, o Apache. O Apache Group se expandiu e foi incorporado como um grupo sem fins lucrativos. Embora o grupo decida o que será implementado ou não no projeto, o Apache não é limitado, qualquer pessoa que tenha os conhecimentos necessários pode participar do desenvolvimento do servidor ou de seus módulos (KABIR, 2002). Para Hoag (2002), o servidor Apache é um produto sólido e robusto, mesmo que tenha surgido a partir de uma série de correções. O servidor Apache tem capacidade de executar códigos em diversas linguagens como PHP, Perl, Shell Script e ASP e, ainda, pode atuar como servidor FTP, HTTP, entre outros (ALECRIM, 2006). Para esta pesquisa, o importante é que sua maior utilização é na combinação do Apache com a linguagem PHP e o banco de dados MySQL. 3.2 MYSQL Com a chegada da informatização, surgiu também a necessidade de armazenar uma grande quantidade de dados em locais de fácil acesso, onde se poderia incluir, 2 Scripts são sequencias de comandos executados dentro de programas, não se restringindo a esses programas. Servem para estender as funcionalidades dos programas e são comumente usados como ferramentas de instalação e configuração. 21 excluir, alterar e consultar esses dados. Surgiram então os bancos de dados. Para se ter uma idéia de como os bancos de dados estão inseridos no dia a dia das pessoas, basta saber que os dados bancários, informações de compras no comércio, documentos pessoais e muito mais estão todos armazenados em grandes bancos de dados. Segundo Cardoso (2009, p. 01), “banco de dados é um sistema de armazenamento de dados, ou seja, um conjunto de registros que tem como objetivo organizar e guardar as informações”. Para realizar operações com os dados armazenados, são necessários os sistemas gerenciadores de banco de dados (SGBD). De acordo com Tonsig (2006, p. 19), “um sistema gerenciador de banco de dados deve oferecer recursos para se criar, alterar, excluir e consultar não apenas os dados que as aplicações irão utilizar, mas também os atributos de tais dados”. O banco de dados e o software gerenciador de banco de dados compõem o sistema de banco de dados (TAKAI, 2005). A figura 5 mostra um esquema conceitual de sistema de banco de dados. Figura 5 - Sistema de Banco de Dados Fonte: Adaptado de Takai (2005) 22 O MySQL é um sistema gerenciador de bancos de dados compatível com a linguagem SQL3. Ele oferece uma plataforma prática, rápida, eficiente, de fácil manuseio e extremamente confiável. Sua instalação pode ser obtida gratuitamente na Internet. Existem versões para diferentes sistemas operacionais (MILANI, 2006). A criação de um banco de dados no MySQL é feita através do comando CREATE DATABASE. Por sua vez, a exclusão de um Banco de Dados é feita através do comando DROP DATABASE (TONSIG, 2006). A sintaxe dos comandos é apresentada na figura 6. O que se encontra entre colchetes é instrução facultativa. Figura 6 - Sintaxe dos comandos para Criar e Excluir um banco de dados Fonte: Adaptado de Tonsig (2006) No MySQL, a estrutura de bancos de dados é semelhante à estrutura de diretórios de um sistema operacional. Cada banco de dados possui diretórios em seu interior que correspondem às tabelas. Assim, quando o comando CREATE é executado, é criado um diretório abaixo do diretório de dados do MySQL (TONSIG, 2006). A sintaxe do comando para criação de tabelas no MySQL possui muitos recursos, vários deles opcionais. A figura 7 mostra a sintaxe do comando para criação de uma tabela com os requisitos básicos e os comandos para a criação de uma tabela chamada TabCliente com alguns atributos de um cliente. Figura 7 - Sintaxe do comando para criar Tabela Fonte: Adaptado de Milani (2006) 3 Structured Query Language, ou SQL, é um a linguagem de pesquisa declarativa para bancos de dados relacionais. 23 O exemplo da figura 7 cria uma tabela chamada TabCliente com os três atributos identificados pelos nomes: ID, NOME e ENDERECO. O atributo ID é do tipo inteiro (INT). Os atributos NOME e ENDERECO são do tipo string (VARCHAR) e podem conter no máximo 50 caracteres. Todos os atributos são não nulos (NOT NULL), ou seja, esta tabela não pode conter valores nulos. O comando PRIMARY KEY (ID) transforma o atributo ID em uma chave primária. ENGINE = MyISAM define que o mecanismo de armazenamento desta tabela será o MyISAM. E, por fim, o comando CHARACTER SET = latim1 define o conjunto de caracteres para a tabela. O latin1 é uma das opções para a língua portuguesa. Para excluir uma tabela, usa-se o comando DROP TABLE <nome_da_tabela> (MILANI, 2006). De nada adianta criar bancos de dados, tabelas nos bancos de dados se não for possível inserir, excluir e selecionar registros nestas tabelas. A inserção de dados em uma tabela no MySQL é feita através do comando INSERT. registros, utiliza-se o comando DELETE. Para excluir E para fazer seleções de registros, o comando utilizado é o SELECT (SOARES, 2001). Os comandos mostrados na figura 8 inserem 5 registros na tabela TabCliente, criada na figura 7. São criados os registros dos clientes: José, João, Maria, Mauro e Marcio. A cláusula where do comando delete indica que o registro a ser excluído é o de número 1. Por fim, o comando select retorna o registro de número 4, obedecendo ao critério de filtragem inserido na cláusula where do comando. Figura 8 - Inserção, Exclusão e Seleção de registros de uma Tabela Fonte: Adaptado de Tonsig (2006) 24 3.3 HYPERTEXT PREPROCESSOR – PHP PHP ou “Hypertext Preprocessor” é uma linguagem de programação WEB que permite criar sites dinâmicos, possibilitando uma interação com o usuário através de formulários, parâmetros e links. Com o PHP, criam-se scripts embutidos no HTML, que rodam no lado do servidor. Permite incorporar fragmentos de código em páginas HTML normais. Esse código é interpretado à medida que as páginas são oferecidas aos usuários (CONVERSE; PARK, 2003). Uma das características mais marcantes no PHP é a sua capacidade de se misturar ao HTML, tornando mais fácil a geração de páginas WEB dinâmicas (SOARES, 2004). As figuras 9 e 10 mostram, respectivamente, a possibilidade dessa integração. Figura 9 - Exemplo de código PHP Fonte: Soares (2004) 25 Figura 10 - Página PHP Fonte: Soares (2004) Conforme Anselmo (2002), o PHP é um linguagem de scripts, ou seja, é uma parte de código especial que é interpretada pelo navegador ou pelo servidor WEB. Os scripts interagem com o servidor, criando páginas dinâmicas na WEB. Anselmo (2002, p.24) ainda descreve o funcionamento dos scripts: a) passo 1: o cliente, através do seu navegador, faz uma solicitação para uma página; b) passo 2: essa solicitação viaja pela rede internet e chega ao servidor WEB dono das páginas; c) passo 3: o servidor analisa e descobre que a resposta é dada através de uma página PHP; d) passo 4: verifica as solicitações em um banco de dados; e) passo 5: ocorre um processo no servidor, transformando aquela página PHP em uma página HTML; f) Passo 6: essa página resposta HTML é retornada para o navegador do cliente, caso o servidor julgue que a página é simplesmente uma nova página em HTML pura. A figura 11 mostra os passos descritos no parágrafo anterior. 26 Figura 11 - Funcionamento dos scripts PHP Fonte: Anselmo (2002) O PHP é gratuito e por ter essa característica, talvez alguns programadores tenham receio da qualidade ou a viabilidade da linguagem. Mas, produtos de código aberto, em especial o PHP, tornam-se cada vez mais fortes e confiáveis, concorrendo com os melhores produtos comerciais, ou em alguns casos, até superando-os em termos de funcionalidade e operacionalidade (CONVERSE; PARK, 2003). O PHP é auto-explicável, sendo que muitas das funções mais úteis são predefinidas. Possui um número muito grande de scripts completos responsáveis por partes importantes do programa, como abrir uma conexão com o banco de dados. É possível programar PHP somente modificando esses scritps (CONVERSE; PARK, 2003). Utilizar uma variável4 é a principal maneira de armazenar informações para recuperá-las mais tarde. Todos os nomes de variáveis em PHP devem iniciar com o 4 Variáveis armazenam dados que podem ser usados em qualquer parte do programa. 27 caractere “$”, seguido de uma letra ou do caractere “_”. O PHP é case-sensitive5, ou seja, a variável $exemplo é diferente da variável $EXEMPLO (TONSIG, 2007). O PHP suporta oito tipos básicos de dados: numéricos inteiros, números de dupla precisão, booleanos, strings, arrays, objetos, NULL e recursos. A seguir, tem-se a explicação de cada um deles: a) Inteiros: são todos os números integrais, sem ponto de fração decimal, por exemplo, o 123; b) Números de dupla precisão: ou doubles, são números de ponto flutuante, por exemplo, o 3,14159 ou 49,0; c) Booleanos: possuem somente dois valores válidos – VERDADEIRO ou FALSO; d) NULL: É um tipo especial que só tem um valor possível, o nulo; e) Strings: são sequências de caracteres, por exemplo, „o PHP suporta tipos strings’; f) Arrays: são coleções identificadas e indexadas de outros valores; g) Objetos: são instâncias de classes definidas pelo programador, as quais podem empacotar tantos outros tipos de valores como funções que são específicas à classe; e h) Recursos: são variáveis especiais que armazenam referências para recursos externos ao PHP. Exemplo, conexões de banco de dados (SOARES, 2004). Na linguagem de programação PHP não é necessário definir previamente o tipo de dados de uma variável. Isso ocorre durante a execução do programa, dinamicamente, na medida em que se vai atribuindo valor à variável. A mesma variável pode assumir tipos de dados diferentes, em momentos distintos, conforme a necessidade do programador (TONSIG, 2007). Na maioria dos sistemas desenvolvidos utilizando variáveis, a saída final do programa, ou o resultado apresentado ao usuário, depende do valor dessas variáveis. Por isso, todas as linguagens de programação oferecem estruturas de 5 Uma linguagem de programação é case-sensitive quando, na declaração de suas variáveis, distingue letras maiúsculas e minúsculas. 28 controle. Estruturas de controle são construções que direcionam a execução do programa dependendo do resultado de uma comparação, geralmente VERDADEIRO ou FALSO, feita pelo programador (SOARES, 2004). Para Rudek (2002, p. 19) “os comandos de controle permitem alterar a direção tomada por um programa (desvio), ou fazer com que partes específicas de um algoritmo seja executada mais de uma vez (loop)”. Os dois principais tipos de estruturas de controle são desvios e loops. Um desvio é uma escolha no caminho da execução de um programa. Dependendo de um ou outro teste, o programa executa esse ou aquele bloco de instruções, talvez seguindo um caminho diferente no restante do programa. Um loop é um tipo de desvio em que o programa executa um bloco de instruções repetidas vezes, até que uma condição seja satisfeita (CONVERSE, 2003). Para utilizar as estruturas de controle, devem-se comparar dois valores e obter um resultado VERDADEIRO ou FALSO. Os símbolos usados nessa comparação são chamados de Operadores de Comparação. Alguns operadores de comparação são apresentados no quadro 1: Símbolo == != Nome Igual Não igual Comportamento Resultado VERDADEIRO se os valores comparados forem iguais Resultado VERDADEIRO se os valores comparados não forem iguais < Menor que Resultado VERDADEIRO se o valor à esquerda do símbolo for menor que o valor à direita > Maior que Resultado VERDADEIRO se o valor à esquerda do símbolo for maior que o valor à direita <= Menor que ou Resultado VERDADEIRO se o valor à esquerda do símbolo for igual menor ou igual ao valor à direita >= Maior ou igual Resultado VERDADEIRO se o valor à esquerda do símbolo for maior ou igual ao valor à direita === Idêntico Resultado VERDADEIRO se os valores comparados forem iguais e de mesmo tipo Quadro 1 - Operadores de Comparação Fonte: Tonsig (2007) O comando If é um comando de controle de desvio. Ele avalia uma condição, obtendo um resultado lógico – VERDADEIRO ou FALSO – e em virtude deste resultado, executará ou não o bloco de instruções dentro do comando (CAMARGOS, 2008). 29 Na figura 12, pode-se observar que se o resultado da expressão for verdadeiro, os comandos 1, 2, e 3 serão executados, por outro lado, se o resultado for falso, serão executados os comandos 4, 5 e 6. Figura 12 - Comando If Fonte: Tonsig (2007) O comando switch também é um comando de controle de desvio. É uma alternativa ao comando if. Onde deveriam ser usados vários comandos if aninhados, pode-se usar o comando switch. A sintaxe do comando switch permite verificar vários conteúdos diferentes para uma mesma expressão. Satisfazendo um dos valores definidos, um conjunto de comandos é executado, senão serão executados os comandos da instrução default (CAMARGOS, 2008). Na figura 13, se o resultado da expressão for igual ao valor1, serão executados os comandos 1 e 2. Se o resultado da expressão coincidir com o valor2, os comandos executados serão os de número 3 e 4, porém, se a expressão não satisfizer nenhum dos valores, os comandos 5 e 6 é que serão executados. 30 Figura 13 - Comando switch Fonte: Tonsig (2007) O comando while é um comando de controle de loop. É utilizado quando se deseja executar um fragmento de código, repetidas vezes, até que uma condição seja verdadeira (SOARES, 2004). No exemplo da figura 14, quando o programa chega ao comando while, ele testa o valor da expressão, se for verdadeiro, executa os comandos 1 e 2 e retorna ao comando while, testando novamente a expressão e assim sucessivamente até que o valor da expressão seja falso. Figura 14 - Comando While Fonte: Tonsig (2007) O comando do-while também é um comando de controle de loop. O funcionamento do comando do-while é bem similar ao comando while, exceto pelo fato de que o comando do-while testa a expressão no final do bloco de comandos. Isso garante que, pelo menos uma vez, o bloco de comandos será executado (ZANDSTRA, 2006). 31 No código da figura 15, os comandos 1 e 2 serão executados pelo menos 1 vez, e depois repetidos ou não, até que o resultado da expressão seja falso. Figura 15 - Comando do-while Fonte: Tonsig (2007) Outra alternativa para os comando de repetição é o comando for. Loops for são os laços mais complexos em PHP. A figura 16 mostra a sintaxe de um comando for. Figura 16 - Sintaxe do comando for Fonte: Adaptado de Converse e Park (2003) No exemplo da figura 16, ao iniciar a instrução for, a expressão_inicial é avaliada somente uma vez, geralmente inicializando uma variável. Então, a verificação_de_término é avaliada, se for falsa, a instrução for é concluída, se for verdadeira, os comandos 1 e 2 são executados e, por fim, a expressão_de_final_de_loop é executada, iniciando o ciclo outra vez com a verificação_ de_término. O comando for é bastante utilizado para loops limitados, que possuem um valor exato de loops a serem executados. Atualmente, vê-se que a grande maioria das páginas da internet são desenvolvidas integradas com banco de dados. Muitas utilizam o banco de dados somente para armazenar informações de seus clientes, produtos ou vendas. Porém, a necessidade de dinamizar as páginas WEB força os desenvolvedores a utilizarem banco de dados até na hora de mostrar a própria página WEB. Gowans (2012) lista alguns exemplos de utilização de scripts com banco de dados no desenvolvimento de páginas WEB: 32 a) Apresentação de banners na página. Os banners ficariam armazenados em banco de dados e seriam mostrados aleatoriamente a cada acesso, chamados por um script PHP; e b) Criação de fóruns6. As mensagens seriam armazenadas em banco de dados, em vez de ser criada uma página para cada mensagem. 3.4 GOOGLE MAPS Google Maps é um serviço gratuito e online de mapeamento da Terra criado pela empresa Google. Além da visualização de mapas e imagens de satélite, o serviço disponibiliza rotas de quase todas as partes do mundo, com possibilidade de zoom nos grandes centros e até mesmo de um passeio virtual pelas ruas das maiores cidades do planeta (WIKIPÉDIA, 2010). A característica que mais se destaca no serviço oferecido pelo Google Maps é a sua interatividade. Pode-se clicar várias vezes no mapa, movendo-se pelo mundo, dar zoom e escolher o tipo do mapa sem recarregar as páginas, tornando a navegação mais rápida e intuitiva (CHAURE, 2007). O Google ainda disponibiliza uma Application Programming Interface7 (API) para quem quiser desenvolver seus próprios mapas e publicá-los em suas páginas WEB, gratuitamente – desde que para fins não comerciais. A API do Google Maps permite usar JavaScript8 para incorporar o Google Maps em uma página WEB. A API fornece uma série de utilitários para manipular mapas e adicionar conteúdo ao mapa por meio de diversos serviços (GOOGLE MAPS JAVASCRIPT API V3, 2012). 6 Fóruns são ferramentas para páginas da internet destinadas a promover debates através de mensagens publicadas abordando uma mesma questão. 7 Application Programming Interface, ou API, é um conjunto de rotinas e padrões estabelecidos por um software para a utilização das suas funcionalidades por aplicativos que não pretendem envolverse em detalhes de sua implementação, mas apenas usar seus serviços. 8 JavaScript é uma linguagem de scripts utilizada para criar pequenos programas encarregados de realizar ações dentro de páginas WEB. 33 O Google Maps disponibiliza uma chave identificadora para cada usuário que queira desenvolver mapas com a sua API, chamada de API Key. O usuário deve se cadastrar no site do Google Maps, recebendo uma sequência de caracteres que identificará as páginas desenvolvidas por aquele usuário (FAMÍLIA DA GOOGLE MAPS API, 2011). A figura 17 mostra um trecho de código utilizando a API do Google Maps com JavaScript e PHP para gerar um mapa simples da cidade de Blumenau-SC. Figura 17 - Código para gerar mapa simples com a API do Google Maps Fonte: Google Maps Na linha 5, da figura 17 apresentada foi utilizado um comando do PHP para inserção de um arquivo externo chamado chave.php. O arquivo chave.php contém a sequência de caracteres disponibilizada pelo Google Maps e que irá identificar as páginas desenvolvidas. Da linha 7 à linha 13, do exemplo, está o trecho de código que efetivamente cria o mapa digital. É uma função escrita em JavaScript e disponibilizada pela API do Google Maps. Os números decimais na linha 10 são a latitude e longitude referentes à área central da cidade de Blumenau-SC. Para mostrar qualquer outra parte do mundo coberta pelo Google Maps, é necessário somente inserir os respectivos números de latitude e longitude do local desejado. O número 14 indica o nível de zoom que o mapa deve ser mostrado, quanto maior o número, maior o nível de detalhes mostrados no mapa. 34 Por fim, a linha 17 do código contém uma tag9 HTML que recebe informações da função JavaScript e desenha o mapa na página WEB. O resultado dessa programação pode ser visto na figura 18. Figura 18 - Mapa simples de Blumenau Fonte: Elaboração própria (2011) 3.5 HEAT MAPS Heat Maps ou mapas de calor são representações gráficas de dados (X, Y e valor), onde os valores assumidos pelas variáveis em uma tabela são representados em uma superfície bidimensional usando cores. A finalidade dos mapas de calor é auxiliar na visualização da densidade. Mapas comuns mostram pontos temáticos, 9 Tags são rótulos usados para informar ao navegador como devem ser apresentadas as páginas WEB 35 mas para uma melhor visualização da densidade, sugere-se utilizar mapas de calor (WIKIPÉDIA, 2011). Mapas de calor são representações bi-dimensionais de dados. representados por cores. Os valores são Em um mapa de calor simples, as informações são visualizadas imediatamente. Em mapas de calor mais elaborados, conjuntos de dados mais complexos podem ser compreendidos facilmente pelo usuário (TECHTARGET TECHNOLOGY-SPECIFIC IT MEDIA AND EVENTS, 2011). Pode haver muitas maneiras de mostrar mapas de calor, mas todas elas tem uma coisa em comum - eles usam cores para comunicar relações entre valores de dados que seriam muito mais difícil de entender se apresentados numericamente em uma planilha (TECHTARGET TECHNOLOGYSPECIFIC IT MEDIA AND EVENTS, 2011, p. 01). Pode-se pensar em várias representações para utilizar mapas de calor. Araújo (2011, np) apresenta uma dessas alternativas: Resumidamente, podemos definir os heatmaps com relação a sítios e blogs como uma representação estrutural (esquemática) multicolorida para mostrar a um analisador as áreas onde os visitantes mais prestam atenção – através de cliques e/ou movimentos do mouse. A figura 19 mostra a utilização de mapas de calor para localizar áreas mais visitadas em um website. Figura 19 - Heat Maps para mostrar cliques em uma página WEB Fonte: Araújo (2009) 36 Syltao (2009) utiliza mapas de calor para identificar a distribuição de ilhas de calor na cidade de Manaus, conforme mostra a figura 20. Figura 20 - Heat Maps para mostrar Ilhas de calor na cidade de Manaus Fonte: Syltao (2011) 37 4 DESENVOLVIMENTO DO SISTEMA Neste capítulo, apresentaram-se as fases do desenvolvimento do sistema WEB e o resultado final do sistema. O mapeamento digital das ocorrências no 10º BPM não é novidade. Pode-se verificar em Bornhofen e Tenfen (2009) o desenvolvimento de um website que aponta as ocorrências policiais da cidade de Blumenau-SC em um mapa digital. A figura 21 mostra o sistema em funcionamento, o que também pode ser conferido no endereço eletrônico http://www.mapaocorrencias.site40.net. Figura 21 - Mapa de Ocorrências do 10º BPM Fonte: Bornhofen e Tenfen (2009) Para o desenvolvimento do projeto proposto neste trabalho, algumas etapas utilizadas no desenvolvimento do sistema referenciado na figura 20 foram reaproveitadas. As tabelas da base de dados e o arquivo para atribuição da latitude e longitude aos endereços no mapa foram usados como base para gerar os mapas de calor. Ainda segundo Bornhofen e Tenfen (2009), as ruas da cidade de Blumenau-SC não estão totalmente inseridas nos mapas do Google Maps. Assim, no processo de atribuição de latitude e longitude, uma rua pode ficar sem referência e não fazer parte da estatística criminal. 38 Os parágrafos seguintes apresentam o desenvolvimento do sistema WEB para visualizar as ocorrências policias da cidade de Blumenau-SC em um mapa digital em forma de mapas de calor, com a base de dados pronta e os campos de latitude e longitude devidamente preenchidos. 4.1 CRIAÇÃO DO ARQUIVO XML XML é a abreviação de Extensive Markup Language (linguagem extensível de formatação). É uma especificação técnica que a W3C (World Wide WEB Consortium – entidade responsável pela definição da área gráfica da internet) desenvolveu para superar as limitações do HTML, que é o padrão das páginas WEB. Defini-se a XML como o formato universal para dados estruturados na WEB. A linguagem define regras que permitem escrever documentos de forma adequadamente visíveis ao computador (WEB 2.0, 2008). O arquivo criaxml.php busca as informações de latitude e longitude no banco de dados e formata em um arquivo XML que possa ser interpretado na hora de montar o mapa digital. A primeira parte do arquivo criaxml.php cria a conexão necessária com o banco de dados Mysql e usa uma instrução select para buscar as informações de latitude e longitude armazenadas no banco de dados. A figura 22 mostra essa parte do código. Figura 22 - Parte do arquivo criaxml.php que faz conexão com banco de dados Fonte: O Autor (2011) Na linha 3 o comando @mysql_connect faz a conexão com o banco de dados. São passados 3 parâmetros: 39 o host – local físico onde está o banco de dados. O banco de dados desse projeto está localizado no próprio computador, por isso o host usado foi o localhost; o usuário – para ter acesso ao banco de dados Mysql é necessária a utilização de um usuário e senha. O usuário utilizado para esse trabalho foi o root – que é um usuário padrão do banco de dados Mysql; e a senha – nesse projeto, optou-se por deixar a senha em branco. Da linha 4 à linha 8 há uma instrução condicional if para mostrar uma mensagem de erro no caso de haver qualquer problema na conexão com o banco de dados. Na linha 11 foi utilizado um comando SELECT para agrupar as latitudes e longitudes e contá-las. Esse comando vai retornar quantos registros há no banco de dados de cada latitude e longitude que se repetem. No final da linha há um limitador para os registros retornados. LIMIT 50 diz ao comando SELECT para somente contar as cinquenta latitudes e longitudes que mais ocorrem no banco de dados. Esse limite é devido à HeatMapsAPI - que é gratuita somente até cinqüenta registros. A segunda parte do arquivo criaxml.php é responsável pela estruturação dos dados em formato XML. Através de comandos echo10 o PHP escreve no arquivo XML as informações trazidas do banco de dados. Um comando de repetição while é utilizado para percorrer todos os registros retornados pelo comando SELECT. Observa-se esse comando na figura 23, a seguir. Figura 23 - Segunda parte do arquivo criaxml.php Fonte: O Autor (2011) 10 Echo é um comando do PHP que serve para imprimir na tela qualquer tipo de informação, variável, sequência de caracteres ou números. 40 O resultado da execução do arquivo criaxml.php pode ser observado na figura 24. Figura 24 - Saída do arquivo criaxml.php Fonte: O Autor (2011) 4.2 MONTANDO O MAPA DIGITAL Com o arquivo XML formatado, pode-se iniciar agora a implementação do arquivo que vai ler as informações do arquivo XML, interpretá-las e montar o mapa digital. O arquivo mapablumenau.php está dividido em funções escritas na linguagem javascript. Cada função tem um objetivo especifico dentro do arquivo. A função load() é a que monta o mapa utilizando comandos da GoogleMapsAPI. Utiliza um comando condicional if para verificar se o browser é compatível com a API, se for compatível, executa os comandos de criação do mapa. O mapa é efetivamente criado na linha 19 com o comando new atribuindo uma instância do objeto GMap2 para a variável gmap. Conforme o comando new, o mapa será criado na área da página chamada map. Para a API do GoogleMaps encontrar o local onde possa mostrar o mapa, é necessária a declaração dessa área no corpo do arquivo HTML. Essa declaração pode ser vista na figura 25. 41 Figura 25 - Tag HTML para criar a área onde o mapa será mostrado. Fonte: O Autor (2011) O comando setCenter atribui ao mapa a latitude, longitude e zoom iniciais de visualização. O comando setUIToDefault() inclui no mapa elementos responsáveis pela interação do usuário com o sistema. São controles para arrastar o mapa, aplicar mais ou menos zoom. Por fim é chamada a função initHeatMap(). Essa função cria as imagens de mapas de calor que é sobreposta à imagem do mapa digital. Será mostrada e explicada adiante. Todos os comandos podem ser observados na figura 26. Figura 26 - Função load() do arquivo mapablumenau.php Fonte: O Autor (2011) A próxima função a ser explanada é a função GDownloadURL. A função GDownloadUrl() faz parte das ferramentas da API do GoogleMaps e oferece uma maneira conveniente de recuperar de forma assíncrona um recurso identificado por um endereço na internet, no caso em estudo, o arquivo XML criado anteriormente, ou seja, esta função lê as informações do arquivo XML e cria condições para que estas informações sejam mostradas no mapa. A função GDownloadURL pode ser vista na figura 27. 42 Figura 27 - Função GDownloadURL() Fonte: O Autor (2011) Através de um comando de repetição for, a função GDownlaodURL() lê as informações do arquivo XML e armazena em um array que será usado pela função initHeatMap() explicada a seguir. 4.3 CRIANDO OS MAPAS DE CALOR A função initHeatMap() faz parte da Heat Map API e é responsável pela criação da imagem de mapas de calor que será sobreposta à imagem do mapa digital criada pela API do Google Maps. É uma função bastante abstrata para o programador. Através de comandos de atribuição e inserção de controles, torna-se fácil criar seus próprios mapas de calor. A função pode ser vista na figura 28. 43 Figura 28 - Função initHeatMap() Fonte: O Autor (2011) Para a criação dos mapas de calor, foi passado como parâmetro à função initHeatMap() o array de dados – chamado na função de “d” - implementado pela função GDownloadURL(). Similar à função load(), a função initHeatMap() cria uma instância do objeto GEOHeatmap() e armazena na variável myHM, através do comando new. O comando Init serve para atribuir as dimensões da imagem dos mapas de calor. Importante salientar aqui que as dimensões devem ser iguais às do mapa criado pela função load(), uma vez que a imagem criada irá sobrepor a imagem do mapa do Google Maps. Para poder utilizar os dados do array passado como parâmetro, deve-se informar à função através do comando SetData, descrito na linha quarenta e oito. Os comandos das linhas 49, 50 e 51 buscam a imagem dos mapas de calor e a sobrepõem à imagem do Google Maps. Os resultados podem ser vistos nas figuras 29, 30 e 31. Cada movimento feito no mapa influi na visualização dos mapas de calor, uma vez que a API do Heat Maps considera somente o que é visualizado na tela e não os dados como um todo. 44 Figura 29 - Densidade de ocorrências policias na cidade de Blumenau-SC mostradas através de mapas de calor Fonte: O Autor (2011) Figura 30 - Densidade de ocorrências policias na cidade de Blumenau-SC mostradas através de mapas de calor Fonte: O Autor (2011) 45 Figura 31 - Densidade de ocorrências policias na cidade de Blumenau-SC mostradas através de mapas de calor Fonte: O Autor (2011) 46 CONCLUSÃO A disponibilização da localização das ocorrências policiais serve como instrumento de auxílio ao combate à criminalidade. Quanto mais informações a Polícia Militar obtiver, maior será a possibilidade de atuar com mais eficiência e eficácia garantindo a aplicabilidade de seu lema “servir e proteger”. No trabalho realizado, entende-se que o objetivo do trabalho foi atingido no momento em que o pesquisador apresentou o sistema WEB desenvolvido, sendo que utilizou um software livre que possibilitou mostrar um mapa da cidade de Blumenau-SC com suas ocorrências policiais em forma de mapas de calor. Os objetivos específicos foram fundamentais para a conclusão do projeto, que possibilitaram estudar as ferramentas de software livre para desenvolvimento WEB, a pesquisa da integração entre essas ferramentas para a geração de um mapa digital e o estudo de caso que mostrou a necessidade do desenvolvimento de um sistema WEB para auxiliar na avaliação das ocorrências policiais na cidade de Blumenau-SC. Ao final, o autor apresentou o protótipo funcional do sistema com a aplicabilidade na instituição pesquisada. O apontamento das ocorrências policiais da cidade de Blumenau em forma de mapa de calor permitirá ao comando do 10º Batalhão de Polícia Militar traçar estratégias de ação mais eficazes, pois poderá visualizar de uma forma mais rápida os pontos críticos da cidade, deslocando forças policiais aos locais com maior índice de acontecimento de delitos, fazendo uso da prevenção, evitando assim que ocorra o crime. Com a aplicação da ferramenta sugerida, um fator limitante para a implementação do sistema é que a API do Heat Maps garante gratuidade somente para 50 registros. A partir do 51° registro o uso da API passa a ser pago, onerando o Estado. 47 Outro fator limitante é que quando o Google Maps não encontra uma rua, em vez de não atribuir latitude e longitude, ele atribui uma latitude e longitude centrais da cidade, isso ocasiona que um número significativo de ocorrências são atribuídas à região central da cidade erroneamente. Durante o processo de desenvolvimento da pesquisa, percebeu-se a dificuldade de manter a fidelidade dos dados no momento em que as ocorrências são geradas na Central de Emergência 190. Nem sempre as pessoas que ligam para solicitar atendimento policial sabem com exatidão o número do endereço da ocorrência e passam somente um ponto de referência. Quando isso ocorre, por convenção, o atendente da Central de Emergência 190 lança “10” para o número não identificado. Para uma rua de curta extensão, não há problema, porém, se considerarmos uma rua extensa, que atravessa alguns bairros, esse procedimento influenciará no resultado final do sistema. Para novos estudos, sugere-se o desenvolvimento de um algoritmo próprio para geração de mapas de calor e visualização de concentração de pontos. Pode-se também, criar mecanismos para garantir a fidelidade dos dados inseridos no banco de dados, através de algoritmos que filtrem a seleção das ocorrências. 48 REFERÊNCIAS ALECRIM, Emerson. Conhecendo o servidor Apache ( HTTP Server Project). Disponível em: < http://www.infowester.com/servapach.php>. Acesso em: 15 nov. 2011. ANSELMO, Fernando. PHP4 e MySQL. Maior, melhor e totalmente sem cortes. Florianópolis, VisualBooks, 2002. 242 p. ARAÚJO, Júlio. Entendendo os seus visitantes (Heat Maps). Disponível em: < http://documentario.embasex.net/analise/entendendo-os-seus-visitantes-heatmaps>. Acesso em: 15 nov. 2011. BORNHOFEN, Paulo Roberto; TENFEN, Emerson. Mapeamento criminal por meio da plataforma Google Maps. Revista Brasileira de Segurança Pública, São Paulo, ano 3, edição 5, p. 82-98, 2009. CAMARGOS, Luiz Fernando Macedo; MENEZES, Marco Antonio Figueiredo. Introdução à HTML e PHP. Rio de Janeiro, Ciência Moderna, 2008. 105 p. CAMPOS, Augusto. O que é software livre. BR-Linux. 2006. Disponível em <http://br-linux.org/linux/faq-softwarelivre>. Acesso em: 30 jan. 2012. CARDOSO, Marcelo Abib. Conceito – Banco de Dados. 2009. Disponível em: < http://marceloabibcardoso.wordpress.com/2009/03/16/conceito-banco-de-dados/>. Acesso em: 07 fev. 2012. CHAURE, Javier. O básico para começar a desenvolver com Google Maps. 2007. Disponível em: < http://www.criarweb.com/artigos/basico-comecardesenvolver-google-maps.html>. Acesso em: 15 nov. 2011. CONVERSE, Tim; PARK, Joyce. PHP 4, a Bíblia. 2. ed. Rio de Janeiro: Campus, 2003. 868 p. CÔRTES, Pedro Luiz. Administração de sistemas de informação. São Paulo: Saraiva, 2008. 503 p. DUARTE, Sinara. Compreendendo os tipos de software existentes. 2009. Disponível em: <http://softwarelivrenaeducacao.wordpress.com/2009/05/01/ compreendendo-os-tipos-de-softwares-existentes/>. Acesso em: 01 fev. 2012. ÉLIO, Manoel de Oliveira. Policiamento Ostensivo - Definição. Disponível em: < http://capnight.vilabol.uol.com.br/po.htm> Acesso em: 14 nov. 2011. FALCÃO, Joaquim et al. Estudo sobre o Software Livre. 2005. Disponível em: < http://bibliotecadigital.fgv.br/dspace/bitstream/handle/10438/2673/FGV-CTS%20%20Software%20livre.pdf?sequence=1>. Acesso em: 31 jan. 2011. FAMÍLIA DA GOOGLE MAPS API. Disponível em: <http://code.google.com/intl/ptBR/apis/maps/signup.html>. Acesso em: 15 nov. 2011. 49 GNU. O que é Software Livre? Tradução: Fernando Lozano. Disponivel em: <http://www.gnu.org/philosophy/free-sw.pt-br.html>. Acesso em: 31 jan. 2011. GOOGLE MAPS JAVASCRIPT API V3. Disponível em: <http://code.google.com/intl/ pt-BR/apis/maps/documentation/javascript/>. Acesso em: 15 nov. 2011. GOWANS, David. PHP/MySQL Tutorial. Part 1 – Introduction. Disponível em: <http://www.freewebmasterhelp.com/tutorials/phpmysql>. Acesso em: 08 fev. 2012. HOAG, Melanie. Servidor WEB usando Apache. São Paulo: Editora Berkeley, 2002. 472 p. KABIR, Mohammed J.. Apache 2 server, a Bíblia. Rio de Janeiro: Campus, 2002. 823 p. LAUDON, Kenneth; LAUDON, Jane P. Sistemas de informação gerenciais: administrando a empresa digital. São Paulo: Pearson Prentice Hall, 2004. 562 p. MILANI, André. MySQL: Guia do Programador. São Paulo: Novatec Editora, 2006. 397 p. REZENDE, Denis A. Planejamento de sistemas de informação e informática: guia prático para planejar a tecnologia da informação integrada ao planejamento estratégico das organizações. São Paulo: Atlas, 2003. 185 p. RIBEIRO, Leandro. Estudo geral sobre Apache. Disponível em: < http://imasters.com.br/artigo/3697/linux/estudo_geral_sobre_apache/>. Acesso em: 07 fev. 2012. RUDEK, Marcelo et al. Apostila de técnicas de programação. 2002. Disponível em: < http://www.las.pucpr.br/rudek/Aulas/arquivos/Apostila_TP.pdf>. Acesso em: 03 fev. 2012. SANTOS, Leonardo Sousa dos. Mapeamento da criminalidade – do alfinete ao computador. 2011. Disponível em: < http://geopara.blogspot.com/2011/05/ mapeamento-da-criminalidade-do-alfinete.html>. Acesso em: 21 dez. 2011. SOARES, Walace. PHP 5: Conceitos, Programação e Integração com Banco de Dados. 1. ed. São Paulo: Érica, 2004. 523 p. SOARES, Walace. MySQL: Conceitos e aplicações. São Paulo: Érica, 2001. 294 p. STAIR, Ralph M.; REYNOLDS, Georg W. Princípios de sistemas de informação. 9. Ed. São Paulo: Cengage Learning, 2011. 590 p. SYLTAO. Ilha de calor e saúde em Manaus: Abordagem com geoprocessamento. 2011. Disponível em: < http://yepca.org/wp3/?p=48>. Acesso em: 15 nov. 2011. TAKAI, Osvaldo Kotaro et al. Introdução a Banco de Dados. 2005. Disponível em: < http://www.ime.usp.br/~jef/apostila.pdf> Acesso em: 07 fev. 2012. 50 TECHTARGET TECHNOLOGY-SPECIFIC IT MEDIA AND EVENTS. Disponível em: < http://searchbusinessanalytics.techtarget.com/definition/heat-map>. Acesso em: 06 fev. 2012. TONSIG, Sérgio Luiz. PHP cm Ajax na Web 2.0. Rio de Janeiro: Ciência Moderna, 2007. 337 p. TONSIG, Sérgio Luiz. MySQL – Aprendendo na prática. Rio de Janeiro: Ciência Moderna, 2006. 227 p. TURBAN, Efraim et al. Tecnologia da informação para gestão: transformando os negócios na economia digital. 6. ed. Porto Alegre: Bookman, 2010. 720 p. WEB 2.0. Guia rápido para uma estratégia web 2.0 de sucesso. 2008. Disponível em: < http://www.focusnetworks.com.br/guias/focusnetworks_guia_web2.pdf>. Acesso em: 21 dez. 2011. WIKIPÉDIA. Google Maps. 2010. Disponível em: < http://pt.wikipedia.org/wiki/ Google_ Maps>. Acesso em: 15 nov. 2011. WIKIPÉDIA. Heat Maps. 2011. Disponível em: < http://en.wikipedia.org/wiki/ Heat_map>. Acesso em: 15 nov. 2011. ZANDSTRA, Matt. Entendendo e dominando o PHP: construa aplicações profissionais usando esta poderosa linguagem. São Paulo: Digerati Books, 2006. 430 p.