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

escola superior aberta do brasil - esab curso de pós