ministério da defesa exército brasileiro departamento - SE/8
Transcrição
ministério da defesa exército brasileiro departamento - SE/8
MINISTÉRIO DA DEFESA EXÉRCITO BRASILEIRO DEPARTAMENTO DE CIÊNCIA E TECNOLOGIA INSTITUTO MILITAR DE ENGENHARIA CURSO DE GRADUAÇÃO EM ENGENHARIA DE COMPUTAÇÃO FREDERICO CIANNELLA NUNES IGOR DE CASTRO LIMA LUCAS VELOSO SARAIVA IMPLEMENTAÇÃO DE UM SISTEMA DE NAVEGAÇÃO PARA DISPOSITIVOS MÓVEIS UTILIZANDO MAPAS ARMAZENADOS EM BANCOS DE DADOS GEOGRÁFICOS Rio de Janeiro 2009 SUMÁRIO LISTA DE ILUSTRAÇÕES .................................................................................. 4 LISTA DE SIGLAS .............................................................................................. 6 RESUMO ............................................................................................................. 9 ABSTRACT ....................................................................................................... 10 1. INTRODUÇÃO ........................................................................................... 11 2. OBJETIVOS ............................................................................................... 12 2.1. 3. JUSTIFICATIVA ....................................................................................................12 FUNDAMENTAÇÃO TEÓRICA ................................................................. 14 3.1. SISTEMAS DE NAVEGAÇÃO E BASES CARTOGRÁFICAS DIGITAIS .............................14 3.1.1. Global Navigation Satellite System – GNSS ................................................................... 14 3.1.2. Características do Sistema NAVSTAR GPS ................................................................... 15 3.1.3. GPS Diferencial (DGPS) .................................................................................................. 17 3.1.4. Mapas .............................................................................................................................. 17 3.1.5. Estruturação de Dados Gráficos Digitais ......................................................................... 18 3.1.6. Banco de Dados Geográficos .......................................................................................... 20 3.1.7. Open Geospatial Consortium (OGC) ............................................................................... 21 3.1.8. Geograhic Markup Language - GML ............................................................................... 23 3.1.9. OGC Web Services - OWS.............................................................................................. 25 3.2. TECNOLOGIA DE IMPLEMENTAÇÃO EM DISPOSITIVOS MÓVEIS ................................27 3.2.1. Formatos Vetoriais ........................................................................................................... 27 3.2.2. Sistemas de Geoinformação ........................................................................................... 30 3.2.3. Fontes de Dados Geográficos ......................................................................................... 31 3.2.4. Tecnologias de Implantação ............................................................................................ 34 3.2.5. Sistemas Operacionais .................................................................................................... 36 3.2.6. Módulos de Desenvolvimento.......................................................................................... 39 3.2.7. Configurações (Configurations) ....................................................................................... 42 3.2.8. Perfis (Profiles) ................................................................................................................ 43 3.2.9. Máquinas Virtuais ............................................................................................................ 47 4. METODOLOGIA ........................................................................................ 49 4.1. EQUIPAMENTOS ..................................................................................................49 4.2. SOFTWARES .......................................................................................................50 4.3. JSR’S ................................................................................................................51 2 4.4. DESENVOLVIMENTO DO SOFTWARE......................................................................52 4.4.1. Exibição do mapa ............................................................................................................ 52 4.4.2. Recepção de coordenadas do receptor .......................................................................... 53 4.4.3. Manipulação de mapas SVG ........................................................................................... 55 4.4.4. Integração de todas as funcionalidades .......................................................................... 66 4.5. EXTRAS ..............................................................................................................68 4.5.1. Envio das coordenadas para o servidor .......................................................................... 68 4.5.2. Chat ................................................................................................................................. 70 4.5.3. Integração com Google Map ........................................................................................... 70 5. CONCLUSÕES .......................................................................................... 73 6. TRABALHOS FUTUROS .......................................................................... 75 7. REFERÊNCIAS BIBLIOGRÁFICAS .......................................................... 78 8. ANEXOS .................................................................................................... 82 8.1. ANEXO A ............................................................................................................82 8.2. ANEXO B ............................................................................................................83 8.3. ANEXO C ............................................................................................................91 8.4. ANEXO D ............................................................................................................93 8.5. ANEXO E ............................................................................................................98 3 LISTA DE ILUSTRAÇÕES Figura 1 - Constelação de Satélites[13] .................................................................... 15 Figura 2 - Vetorial versus Raster[1] .......................................................................... 19 Figura 3 - Código GML com o schema de uma cidade[9]. ....................................... 24 Figura 4 - Arquivo SVG[27]....................................................................................... 29 Figura 5 - Modelo de banco de dados integrados com várias instituições transferindo dados entre si [Adaptado de Néri[19]] ...................................................................... 33 Figura 6 - Estrutura do J2SE[27]. ............................................................................. 40 Figura 7 - Estrutura do J2EE[27]. ............................................................................. 41 Figura 8 - Estrutura do J2ME[27].............................................................................. 41 Figura 9 - Configuração CLDC[27] ........................................................................... 42 Figura 10 - Estrutura de JVM, Configurações e Perfis no J2ME[4] .......................... 45 Figura 11 - Plataforma JavaME com suas configurações, perfis e API's[4].............. 46 Figura 12 - Máquina virtual[27] ................................................................................. 48 Figura 13 - Classe responsável pela exibição do mapa svg ..................................... 52 Figura 14 - Método responsável por desenhar o mapa na tela ................................ 53 Figura 15 - Coordenadas do receptor....................................................................... 54 Figura 16 - Instanciação de um receptor e obtenção de coordenadas ..................... 54 Figura 17 - Rotação .................................................................................................. 56 Figura 18 - Zoom ...................................................................................................... 56 Figura 19 - Arraste do mapa ..................................................................................... 57 Figura 20 - Métodos de tratamento de interações com o usuário............................. 58 Figura 21 - Localizacao Atual ................................................................................... 59 Figura 22 - Plotagem do ponto referente às coordenadas do receptor .................... 60 Figura 23 - Seleção de feições ................................................................................. 61 Figura 24 - Seleção de feição ................................................................................... 61 Figura 25 - Seleção de feição e representação de atributos na tabela..................... 62 Figura 26 - Seleção de layers ................................................................................... 63 Figura 27 - Seleção de layer..................................................................................... 64 Figura 28 - Tracklog ................................................................................................. 65 4 Figura 29 - Tracklog ................................................................................................. 65 Figura 30 - Acesso ao sistema de arquivos .............................................................. 66 Figura 31 - Arquitetura do sistema ........................................................................... 68 Figura 32 - Envio de coordenadas para o servidor ................................................... 69 Figura 33 - Chat........................................................................................................ 70 Figura 34 - Integração com Google Map .................................................................. 71 Figura 35 - Diagrama de Classes ............................................................................. 92 Figura 36 - Pré-Conversor ........................................................................................ 94 Figura 37 - Código Fonte Conversor SVG ................................................................ 97 Figura 38 - Classe Principal...................................................................................... 97 Figura 39 - Extrato de um arquivo em formato SVG, referente ao mapa do bairro de Botafogo – RJ, gerado a partir do Geoserver ........................................................... 98 Figura 40 - Extrato de um arquivo em formato SVG, referente ao mapa do bairro de Botafogo – RJ, gerado a partir do conversor da Carto.Net[2]. .................................. 98 Figura 41 - Extrato do arquivo SVG gerado a partir dos dois arquivos anteriores utilizando-se o conversor próprio.............................................................................. 99 Figura 42 - Mapa do bairro de Botafogo – RJ obtido pelo conversor próprio. .......... 99 Figura 43 - Mapa do bairro do Centro - RJ obtido a partir do conversor próprio. ... 100 Figura 44 - Mapa do bairro do Centro – RJ gerado a partir do conversor da Carto.Net[2]. ........................................................................................................... 100 5 LISTA DE SIGLAS API – APLICATION PROGRAMMING INTERFACE BDG – BANCO DE DADOS GEOGRÁFICO BD – BANCO DE DADOS CAD – COMPUTER AIDED DESIGN DGPS – GPS DIFERENCIAL DTD DOCUMENT TYPE DEFINITION – GNSS – GLOBAL NAVIGATION SATELLITE SYSTEM GPS – GLOBAL POSITIONING SYSTEM ISO – INTERNATIONAL ORGANIZATION FOR STANDARDIZATION JCP – JAVA COMMUNITY PROCESS JSR – JAVA SPECIFICATION REQUESTS KML – KEYHOLE MARKUP LANGUAGE OGC – OPEN GEOSPATIAL CONSORTIUM OGIS – OPEN GEODATE INTEROPERABILITY SPECIFICATION PDA – PERSONAL DIGITAL ASSISTANT SGBD – SISTEMA GERENCIADOR DE BANCO DE DADOS SIG SISTEMA DE INFORMAÇÃO GEOGRÁFICA – SOAP – SIMPLE OBJECT ACCESS PROTOCOL SVG – SCALABLE VECTORIAL GRAPHICS UDDI – UNIVERSAL DESCRIPTION, DISCOVERY AND INTEGRATION XML – EXTENSIBLE MARKUP LANGUAGE W3C – WORLD WIDE WEB CONSORTIUM WSDL – WEB SERVICES DEFINITION LANGUAGE 6 GLOSSÁRIO API – Conjunto de rotinas, estruturas de dados, classes de objetos e protocolos provido por bibliotecas para dar suporte ao desenvolvimento de aplicações. Especifica uma interface e o comportamento dos objetos desta interface. Quando um software provê a funcionalidade de uma API ele é dito uma implementação desta API. CARTA – Representação no plano, em escala média ou grande, dos aspectos artificiais e naturais de determinada área, subdividida em folhas articuladas de maneira sistemática. DATUM – Ponto de interseção entre a Terra e a superfície de referência utilizada para realizar cálculos de posição. DTD – Definições de padrões para a estrutura de um xml. JCP – Comitê formado por membros da comunidade JavaTM responsável por analisar e aprovar ou não uma JSR. JSR – Especificações para a plataforma Java. Podem ser submetidas por qualquer desenvolvedor e é analisada pela JCP. JSR179 – API Location. Utilizada para a obtenção de coordenadas a partir de um receptor GPS. JSR226 – API SVG Graphic 2D Canvas. Utilizada para a renderização e tratamento de um arquivo SVG. JSR75 – File Connection. Utilizada para o acesso ao sistema de arquivos do dispositivo. LAYERS – São as camadas de um mapa. Podem formar vários temas. MAPA – Representação no plano, em escala pequena, dos aspectos geográficos, naturais, culturais e artificiais de determinada área destinada aos mais variados usos. 7 KML – Linguagem xml para descrição de dados em mapas bidimensionais ou tridimensionais. SOAP – Consiste em um arquivo xml utilizado para a troca de informações e estruturado segundo uma das especificações recomendadas pela W3C. W3C – Desenvolve especificações, padrões, ferramentas e softwares para a interoperabilidade de tecnologias a fim de extrair o máximo potencial da Web. Funciona também como um fórum de pesquisas, informações, negócios e aprendizado. WSDL – Linguagem baseada em xml para descrever WebServices. 8 RESUMO Este projeto implenta um sistema de navegação, em JavaME, para dispositivos móveis com configuração mínima CLDC 1.1 MIDP 2.0 utilizando-se soluções em padrões abertos e empregando-se o conceito de software livre. O presente sistema de navegação consiste em uma aplicação capaz de fornecer na tela do dispositivo móvel sua posição sobre um mapa vetorial em formato aberto carregado pelo usuário, ou sobre os dados do Google Maps, no caso de disponibilidade de conexão via http. A implementação deste protótipo prevê a obtenção deste mapa a partir de um banco de dados geográfico ou de um arquivo, com possibilidade futura de adquiri-lo a partir de outros formatos já adotados pelos produtos comerciais de geoprocessamento. O sistema permite a manipulação do mapa, sobre o qual é locada a posição do dispositivo, por meio de zoom, arraste, rotação, seleção de feições, seleção de níveis de informação (layers) e visualização de atributos. Uma das potencialidades do sistema consiste em permitir o lançamento dos dados obtidos em campo sobre o mapa, visando a carga no banco de dados para fins de atualização cartográfica. A aplicação do projeto se dá em várias áreas que exijam o conhecimento da posição em tempo real, ou nas quais seja útil o armazenamento de pontos obtidos em campo. Citam-se, como exemplo, atividades turísticas, práticas de trilha, deslocamentos de automóvel ou até mesmo atividades de levantamento de pontos expeditos em um terreno, como ferramenta de auxílio na cartografia. O software foi desenvolvido com arquitetura modular, de modo a permitir a inserção futura de novas funcionalidades. A localização é atualmente feita através de satélites pelo Sistema de Posicionamento Global Navistar GPS, podendo ser expandido, futuramente, para o uso de outras tecnologias. 9 ABSTRACT This project implements a navigation system in Java ME for mobile devices with minimal configuration CLDC 1.1 MIDP 2.0 solutions using open standards and using the concept of free software. This navigation system consists of an application capable of providing the screen of the mobile device's position on a map vector carried by the user, or on data from Google Maps, where the availability of connection via http is required. The implementation of this prototype provides for the achievement of this map from a geographic database or file, with the future possibility of achievement of others formats as adopted by the commercial GIS products. The system allows the manipulation of the map, which is leased to position the device, by zooming, dragging, rotation, selection of features, selection of levels of information (layers) and visualization of attributes. One of the capabilities of the system is to allow the release of the data obtained on the map, in order to load the database for update mapping. The implementation of the project takes place in several areas that require knowledge of the position in real time, or in which it is useful for storage of points obtained in the field. For example, tourist activities, tracking, the car shifts or even raising activities expedited points on land, as a tool to aid in cartography. The software was developed with a modular architecture in order to allow future integration of new features. The location is currently done through the satellite Global Positioning System GPS Navistar, which can be expanded in future to the use of other technologies. 10 1. Introdução Com o crescente avanço tecnológico, têm-se dispositivos móveis com grande capacidade de processamento gráfico permitindo a visualização de coordenadas sobre um mapa na tela dos mesmos. Entretanto, os diversos dispositivos atuais com sistemas de navegação utilizam mapas em formato proprietário limitando a cobertura à regiões de interesse comercial do fabricante, obrigando o usuário a gastos freqüentes com atualizações e impedindo-o, ou ao menos dificultando-o, a visualização de seus próprios mapas. Atualmente, os sistemas de navegação estão se tornando cada vez mais acessíveis. Este fato se deve principalmente ao barateamento dos dispositivos receptores GPS e a possibilidade do uso destes com dispositivos móveis de uso cotidiano, como celulares e PDAs. Isto permitiu uma expansão do universo de aplicações que podem ser oferecidas tanto para o meio civil quanto para o meio militar, como por exemplo, a orientação de tropas, onde a clareza, a rapidez na leitura das informações e a portabilidade se tornam vitais, bem como servir de guia para turistas em viagens. Nesse contexto, faz-se necessário o desenvolvimento de um software de navegação, genuinamente brasileiro, que atenda às necessidades atuais das Forças Armadas e em aplicações civis, além de servir como plataforma de desenvolvimento de novas tecnologias na área. Este sistema deve ser capaz de não apenas fornecer a localização, como também de permitir a implementação de algoritmos de roteamento entre dois pontos utilizando mapas em formato aberto. Por fim, tal sistema de navegação possui um alto valor agregado, devido à importância das informaçoes tratadas, e encontra-se em um setor da tecnologia em franca expansão. Tal fato comprova-se com a crescente oferta de aparelhos que convergem para a integração entre telefones celulares, PDAs e receptores GPS a preços cada vez mais acessíveis. 11 2. Objetivos Este trabalho pretende desenvolver um sistema capaz de: a) Carregar na tela de um dispositivo móvel cartas vetoriais convertidas a partir de uma base cartográfica armazenada segundo o padrão OpenGIS e realizar a navegação sobre estas cartas; b) através das coordenadas transmitidas a partir de um receptor GPS, plotar na tela do dispositivo a posição; c) armazenar pontos e trilhas e relacioná-los a atributos e a metadados, de forma que possam ser utilizados na produção e na atualização cartográfica a partir de sua transferência para um BDG compatível com o padrão OpenGIS; 2.1. Justificativa O trabalho a ser desenvolvido neste PFC se enquadra no Plano Setorial de Ciência e Tecnologia (PSCT) junto ao Grupo de Comando e Controle, na área de Sistemas de Informações Geográficas (SIG) e possui as seguintes premissas: a) Aderência ao Plano Setorial de Ciência e Tecnologia (PSCT) do Departamento de Ciência e Tecnologia (DCT) do Exército Brasileiro; b) Utilização de programas de código aberto; c) Compatibilidade com o padrão aberto OpenGIS; d) Dualidade de aplicação (civil-militar), possibilitando a implantação de um sistema de navegação que possa ser utilizado junto ao protótipo 12 SigDesktop desenvolvido no GC2/PBCT, um SIG que objetiva o emprego pelas Organizações Militares e pela comunidade civil. e) Possibilita a redução de custos na aquisição pelas Forças Armadas de equipamentos para os fins citados (posicionamento, navegamento e levantamentos cartográficos expeditos), uma vez que o sistema permitirá o uso de dispositivos do cotidiano, tais como smartphones e PDAs. 13 3. Fundamentação Teórica Nesta seção, será feita uma introdução teórica necessária para a compreensão do cenário técnico-científico, no qual se insere esta projeto e dos resultados obtidos. 3.1. Sistemas de Navegação e Bases Cartográficas Digitais 3.1.1. Global Navigation Satellite System – GNSS Sistema Global de Navegação por Satélite (GNSS) é um sistema que utiliza técnicas de posicionamento por satélites para fornecer aos usuários informações de posição e de tempo. Os principais exemplos de GNSS na atualidade são: o NAVSTAR GPS (Navigation Satellite with Time and Ranging - Global Positioning System, EUA), o GLONASS (Sistema de Navegação Global por Satélite, Rússia), o GALILEO (União Européia), o Beidou (China) e o IRNSS (Indian Regional Navigational Satellite System, Índia). O sistema NAVSTAR GPS tem origem nos Estados Unidos e é controlado pelo Departamento de Defesa norte-americano (Departament of Defense – DoD). Esse sistema está completo e em pleno funcionamento com uma constelação de 27 satélites, sendo que 3 deles são reservas. Ele é atualmente o sistema de navegação mais utilizado no mundo[31]. O sistema GLONASS foi desenvolvido pela Rússia e é controlado pela Federação Russa. Ainda hoje não está totalmente implantado. O sistema Galileo é um projeto da União Européia. Ele será uma alternativa civil ao GPS existente atualmente que é controlado pelos militares americanos. Serão colocados em órbita 30 satélites até 2010 (prorrogaçao de 2 anos do projeto 14 original). Há a expectativa de que esse novo sistema seja mais preciso que o GPS e que possua uma maior área de cobertura de satélites. Além desses existem, os sistemas Beidou, Chinês, e o IRNSS, Indiano, que estão ainda em fase de testes de projeto. 3.1.2. Características do Sistema NAVSTAR GPS Cada satélite transmite duas ondas portadoras: bandas L1 e L2. Elas são geradas a partir da freqüência fundamental de 10,23 MHz, que é disponibilizada pelos relógios atômicos a bordo do satélite. Multiplicando a freqüência fundamental por 154 tem-se a freqüência da portadora L1, e multiplicando por 120 tem-se a freqüência da portadora L2. L1 = 1575,42 MHz e λ = 19 cm. L2 = 1227,60 MHz e λ = 24 cm. Figura 1 - Constelação de Satélites[13] 15 Cada satélite na constelação Navstar transmite simultaneamente as duas bandas L. Na mensagem são transmitidas informações sobre as efemérides dos satélites, o tempo GPS, comportamento do relógio e mensagens da saúde (status) do sistema. Os códigos são modulados, em fase, sobre essas duas portadoras. Essa técnica permite realizar medidas de distâncias a partir da medida do tempo de propagação da modulação[32]. É uma seqüência binária de +1 e -1, ou 0 e 1, que parece ter características aleatórias. Como é gerado por um algoritmo, pode ser univocamente identificado. Interessam ao presente trabalho os códigos C/A e P. O código C/A (Coarse Acquisition – aquisição bruta), está disponível livre de custos para usuários civis em todos os cantos do globo terrestre. Possui o comprimento de onda por volta de 300m, é transmitido na taxa de 1 milhão de bits por segundo, com o intervalo de repetição de 1.023 bits. Portanto é repetido depois de aproximadamente um milésimo de segundo. O código P (Precise or Protected – preciso ou protegido) tem sido reservado para o uso das Forças Armadas norte-americanas e dos usuários autorizados. Ele é protegido por técnicas de criptografia que restringe o acesso e nega precisão total aos usuários não autorizados. É transmitido numa taxa de 10 milhões de bits por 12 segundo, seu intervalo de repetição é de aproximadamente 6x10 bits. Essa diferença faz com que as medições com o código P sejam bem mais precisas. Cada um dos satélites da constelação Navstar possui um código C/A e um código P. Isso poderia causar dificuldades para um receptor GPS distinguir entre todos os códigos possíveis. No entanto, o código C/A faz parte de uma família de códigos (Gold codes), que tem como característica básica a baixa correlação entre seus membros. Isso possibilita a rápida distinção dos sinais recebidos, simultaneamente, de vários satélites[32]. 16 3.1.3. GPS Diferencial (DGPS) Diz-se que as medições de coordenadas feitas por um único receptor a partir apenas dos sinais emitidos pelos satélites do sistema GPS são obtidas por posicionamento absoluto. O GPS Diferencial é o método utilizado em receptores GPS para isso capacitados, com o objetivo de determinar a diferença entre a posição informada pelo sistema GPS e a sua posição geográfica verdadeira na superfície terrestre. Tem por finalidade obter uma precisão superior às obtidas pelos receptores em modo absoluto de posicionamento. As correções DGPS se dividem em dois grupos: em tempo real e pósprocessadas. No DGPS em tempo real os receptores utilizam dispositivos de transmissao em tempo real tais como: transmissores de ondas de rádio e telefone celular. É capaz de obter posicionamento com precisão de metro no local e na hora do procedimento, desde que um dos receptores se encontre estacionado sobre um ponto de coordenada conhecida. No DGPS pós-processado armazenam-se todas as informações fornecidas pelos satélites da rede GPS para que os dados obtidos pelo receptor sejam confrontados posteriormente com o sinal rastreado por uma estação base de rastreamento GPS (fornecedora do ponto de coordenadas conhecidas). Assim, os erros sistemáticos do rastreio feito pelo receptor móvel (também conhecidos como ROVER) são minimizados e em grande parte eliminados. 3.1.4. Mapas O conhecimento, a observação e a representação da superfície terrestre têm papel fundamental nas atividades de organização das sociedades. Da antigüidade até os tempos atuais, informações espaciais têm sido observadas por guerreiros, navegadores, geógrafos, pesquisadores e descritas de 17 forma gráfica pelos cartógrafos. Seguramente, o que hoje se conhece como mapa, nada mais é que uma das mais antigas formas de comunicação visual da humanidade. Um mapa consiste na representação de uma área curva sobre uma superfície plana ressaltando relações entre elementos do espaço como objetos, feições do terreno, regiões e temas. Geralmente, constitui-se em uma representação de um espaço tri-demensional em outro correspondente bidimensional. Apresenta-se em folhas de papel ou digitalmente. No último caso, torna-se dinâmico, interativo e pode ser apresentado tridimensionalmente. Mapas digitais podem ser estruturados em um ou mais níveis ou camadas (layers). Um dos elementos fundamentais dos mapas é a escala, que permite determinar as dimensões reais de objetos e medir distâncias. Escala é o quociente entre a medida no mapa e a medida real correspondente. Quanto maior é a escala, maior o detalhe. A maioria das análises do terreno pode ser feita sobre uma carta, denominando-se Cartometria. Este processo é realizado de forma visual, com o emprego de instrumentos gráficos extraindo um conjunto limitado de informações como perfis topográficos, distâncias, áreas de visibilidade, entre outros. Este processo é demorado e dispendioso, além de normalmente se trabalhar com um grande conjunto de cartas, aliada a um conjunto de informações dispostas em relatórios em papel. 3.1.5. Estruturação de Dados Gráficos Digitais Os dados gráficos em meio digital podem ser estruturados basicamente de duas formas: matricial e vetorial. Dizemos que o dado está na forma matricial quando está estruturado com pixels de diferentes cores, ou tonalidades (no caso de imagens monocromáticas), dispostos como uma matriz. Estes pixels, quando vistos em conjunto em uma escala menor, formam uma imagem contínua. A imagem 18 matricial ocupa maior espaço já que contém a informação de cor para cada pixel que compõe a imagem. Já a representação vetorial pode ser expressa pelas três primitivas geométricas básicas: pontos, linhas e polígonos. Estes elementos podem ser associados a um rótulo que permite identificá-los. Como são armazenadas apenas as coordenadas dos pontos que definem cada forma geométrica, ocupa-se menor espaço de armazenamento representando um ganho para dispositivos com limitação de recursos. Segue abaixo uma figura que mostra a distinção entre as representações matricial e vetorial. Repare na figura que cada feição da porção esquerda é representada por polígonos (vetorial), ao passo que a porção direita é dividida em pequenos pedaços que quando vistas em conjunto formam as diferentes feiçoes na figura. Figura 2 - Vetorial versus Raster[1] Outra vantagem da representação vetorial sobre a raster é a escalabilidade, o que permite a ampliação ou redução do mapa sem perda de qualidade A representação vetorial permite, ainda, realizar transformações de rotação, transladação e de multiplicação por uma constante de forma simples já que suas instruções de desenho são independentes de resolução. Essa característica permite a multiplicação ou divisão da figura vetorial por uma constante possibilitando a 19 transformação desta figura de modo que se adapte aos diferentes tipos de resolução dos diversos dispositivos. No caso de representação raster deve-se criar um conjunto de imagens, figuras e de ícones separados para cada tipo de resolução de tela. Em animações utilizando-se raster, na mudança de um quadro de exibição, a imagem muda a cada quadro de animação. Em contrapartida, animações vetoriais incluem apenas as instruções que indicam quais dos elementos sofrerão mudanças e quando eles as sofrerão. Dessa forma, as animações vetoriais são da ordem de duas vezes menores que as animações rasteres, o que torna as primeiras bastante atrativas para a transmissão e apresentação em dispositivos móveis. 3.1.6. Banco de Dados Geográficos A introdução de conceitos referentes a um banco de dados geográficos (BDG) se faz necessária visto que a base cartográfica do sistema de navegação para o qual levantar-se-ão seus requisitos, é armazenada em um BDG. A diferença entre um BDG e um banco de dados (BD) se deve à manipulação e armazenamento de dados compostos por atributos espaciais junto aos convencionais, aspectos sobre os quais um BD convencional não oferece suporte, ou o oferece de forma não otimizada. Um BDG representa atualmente uma tendência em Sistemas de Informação Geográfica (SIG) no que diz respeito ao armazenamento, consulta e análise de dados georreferenciados e é entendidocomo uma extensão dos bancos de dados relacionais que incorporam ferramentas para gerenciamento de informações espaciais [18]. Presente nos BDG e SIG, o dado geográfico é um dado espacial georreferenciado, ou seja, possui uma localização sobre a superfície terrestre em um certo intervalo de tempo. 20 3.1.7. Open Geospatial Consortium (OGC) O Open Geospatial Consortium (OGC) - Consórcio Geoespacial Aberto é um consórcio industrial internacional com mais de 348 companhias, agências do governo e universidades participando em um processo concensual para desenvolver especificações de uma interface disponivel publicamente. Com o intuito de padronizar o acesso a esses dados e assim permitir a interoperabilidade entre SIG’s, o OGC estabeleceu um padrão aberto conhecido como OpenGIS (Open Geodate Interoperability Specification). A utilização do padrão OpenGIS para o armazenamento e acesso de dados geográficos garante a interoperabilidade entre diferentes Bancos de Dados e Sistemas de Informações Geográficas, não se atendo a um aplicativo específico. Interoperabilidade é a capacidade de comunicar, executar rotinas ou transferir informações através de unidades funcionais de modo que o usuário tenha o mínimo ou nenhum conhecimento das características específicas de cada unidade [ISO 2382-1]. O OGC foi fundado devido justamente ao problema de não haver interoperabilidade entre sistemas da indústria geoespacial. O consórcio OpenGIS implementa soluções para aplicações espaciais seguindo um padrão aberto internacional e possui membros trabalhando colaborativamente no desenvolvimento de tecnologias de informação e localização espacial. As especificações OpenGIS existentes até o momento da pesquisa são: implementação de feições simples (Simple Features Implementation), implementação de feiçoes espaciais (Spatial Features Implementation), implementação de serviços de catálogo (Catalogue Service Implementation) e apresentação (Presentation). A implementação de feições simples diz respeito à criação de uma ferramenta para manipular ruas, terrenos, linhas que são representadas em um mapa como figuras vetoriais. Suas interfaces terão uma geometria (pontos, linhas e polígonos compostos por vetores), uma referência espacial (sistema geodésico e de projeção) e atributos. Exemplos são classificação de um município por zona ou de uma 21 rodovia por tipo (pavimentação, federal, estadual, municipal, entre outros). Essas especificações possibilitarão qualquer usuário fazer o intercâmbio de dados ou sua manipulação, utilizando qualquer software que esteja em acordo com tais especificações OpenGIS, independente do software utilziado para gerá-los. A implementação de feições espaciais lida com dados gráficos do tipo matricial (por exemplo, imagens geradas por satélites e fotos aéreas). O usuário de qualquer software que atenda a tais especificações pode, por exemplo,utilizar uma foto aérea digital para sobrepor a ela feições de um mapa vetorial ou, caso se possua uma imagem em que diferentes intensidades de cores representem as diferenças de temperatura numa região, pode-se efetuar uma consulta para saber quais células do grid possui temperatura da água entre 15 e 18 graus Celsius. A implementação de serviços de catálogo estabelece um padrão para criar entradas em serviços de buscas espaciais que descrevam informações geoespaciais e metadados online permitindo, assim, a indexação de milhares de web sites que versem sobre o mesmo tema. Isso torna mais rápida a consulta por informações sobre uma região ou um ponto do planeta. Essas entradas podem versar, por exemplo, sobre o tipo de solo da região descrita, temperatura média, vegetação, elevações, escolas próximas, resolução da imagem, ou qualquer outro dado de natureza espacial. A apresentação especifica protocolos de requisição e resposta entre um cliente e um servidor de mapas da seguinte forma: um cliente faz uma consulta ao serviço de buscas, segundo as especificações dos serviços de Catálogo para descobrir URLs contendo a informação desejada. O serviço de catálogo retorna URLs. O cliente aciona um ou mais servidores acessíveis pelas URLs retornadas pelo serviço de catálogo e as acessa remotamente. Cada servidor de mapas requisitado acessa a informação desejada pelo cliente e retorna um mapa com uma ou mais camadas ou níveis (layers) dependendo da consulta. Os produtos do trabalho do OGC nesta área estão apresentados sob forma e especificações de interfaces, como, por exemplo, WMS, WFS (Web Services), SFS (para SQL) e padrões de intercâmbio de dados (GML). 22 3.1.8. Geograhic Markup Language - GML O OpenGIS usa o padrão XML (eXtensible Markup Language) para definir uma forma de codificar dados geográficos. Especificou-se, então, a linguagem GML (OGC,2004). A GML foi especificada para a codificação da informação geográfica visando o armazenamento e o transporte desta, incluindo propriedades espaciais e não espaciais das feições. O objetivo da GML é oferecer um conjunto de regras com as quais um usuário pode definir quais informações (por meio de campos) serão armazenadas, gerando assim sua própria linguagem para descrever seus dados sendo, dessa forma, baseada em esquemas XML. O esquema XML define os elementos (tags) usados em um documento que descreve os dados. Os principais esquemas em GML são: a. BasicTypes: componentes simples e genéricos para representação de atributos; b. Topology: definições do esquema topológico; c. Coordinate Reference System: sistema de referência de coordenadas; d. Temporal Information and Dynamic Feature:estende as características temporais dos dados geográficos; e. Definitions and Dictionaries:definições de condições de uso e dicionário de dados; f. Metadata: metadados que descrevem os dados geográficos. De posse destes esquemas, um usuário pode definir o seu próprio esquema para sua aplicação. A GML prevê como tipos de dados geométricos: pontos, linhas, polígonos e coleções geométricas (MultiPoint, MultiPolygon) definidos por coordenadas cartesianas associados a um sistema de referência espacial. Seu uso permite bastante flexibilidade ao usuário na definição de campos por meio de ‘tags’ que expressam o significado do dado escrito. Entretanto, a utilização de uma mesma 23 entidade com nomes diferentes como em <rio> e <curso_de_água> possibilitará a troca de informações apenas pelo fato de ambos herdarem a classe <_Feature>, definida pelo esquema Feature.xsd da GML , e não pelo aspecto semântico. A solução para tal problema seria a inserção de tags que descrevam as entidades e suas relações, ou que identifiquem sinônimos. A GML é extensamente utilizada pela especificação WFS. Segue abaixo, um exemplo de um código GML descrevendo uma cidade. Figura 3 - Código GML com o schema de uma cidade[9]. 24 3.1.9. OGC Web Services - OWS Um Web Service é uma aplicação Web que realiza uma tarefa específica ou um conjunto de tarefas na forma de serviço, cuja interface é descrita através de uma notação XML que fornece os detalhes necessários para interagir com o serviço. Esta tecnologia independe de linguagem e de plataforma, o que facilita a interoperabilidade entre sistemas através da adoção de padrões abertos como http, XML, SOAP, WSDL e UDDI. Ao contrário das aplicações clientes/servidores tradicionais, um Web Service não fornece uma interface gráfica com o usuário. Ao invés disso, oferece uma interface de programação que pode ser utilizada através da rede. Um exemplo é o serviço de busca oferecido pelo Google[10], que fornece uma API através da qual programadores, utilizando a linguagem de programação desejada, podem construir aplicativos customizados que realizam remotamente consultas à base de dados do Google. 1. Web Map Service – WMS A especificação OpenGIS WMS(OGC, 2006) define um serviço para a produção de mapas dinâmicos na WEB. O mapa se torna, portanto, a abstração dos dados geográficos do usuário, uma vez que ele pode entrar com as coordenadas da região desejada, por exemplo, e podem ser obtidos nos formatos matriciais (raster) PNG, GIF e JPEG, ou em formatos vetoriais como o SVG ou KML. Quando o cliente requisita um mapa utilizando o serviço, um conjunto de parâmetros deve ser informado ao servidor: as camadas desejadas, os estilos que devem ser aplicados sobre as camadas, a área de cobertura do mapa, a projeção, o sistema de coordenadas geográficas e o formato do mapa gerado. Os servidores WMS podem ser de dois tipos: a. Básico: fornece suporte às operações GetCapabilities e GetMap, que são obrigatórias; 25 b. Completo: fornece suporte à operação GetFeatureInfo, que é opcional na implementação de um servidor WMS e que difere das anteriores por exibir os metadados das feições tais como: tamanho do arquivo, data de coleta, autor dos dados, entre outros. 2. Web Feature Service – WFS As três operações mencionadas na seção anterior (WMS) fornecem uma maneira interoperável de combinar e visualizar mapas de fontes diferentes, bem como de consultar informações a respeito de um elemento (feature) exibido nos mapas, porém estes últimos fornecidos sob a forma matricial. A especificação WFS (OGC, 2005b) define a interface de um serviço complementar: o acesso e manipulação de dados geográficos que estão por trás dos mapas na forma vetorial, empregando GML como formato de intercâmbio de dados. O serviço pode ser implementado de três formas: a. Básico: disponibiliza apenas operações de consulta; b. Com suporte a XLink: deve suportar a operação GetGmlObject, com Xlinks locais ou remotos; c. Transacional: implementa o serviço completo, que inclui operações de inserção, exclusão, atualização, consulta de objetos (features) geográficos, sendo opcional a implementação da operação GetGmlObject, que retorna as informações de determinado objeto estruturadas em tags internas ao referido objeto. Dessa forma, cabe aqui enfatizar a vantagem da utilização do WFS, uma vez que permite o intercâmbio de mapas sob a forma vetorial, possibilitando a inserção, edição e consulta de dados do mapa com menor complexidade em relação ao mapa matricial. Em especial para dispositivos móveis, o formato vetorial permitirá ainda a navegação sobre o mapa sem a necessidade de computação no servidor e portanto, sem a obrigatoriedade de conexão com o mesmo para operações de roteamento, um requisito para o sistema proposto. 26 3.2. Tecnologia de Implementação em Dispositivos Móveis Os sistemas de navegação são compostos por segmento de terra (estações de controle, receptores e usuários) e segmento espacial (satélite). Os receptores de sinal, conhecidos como navegadores ou, coloquialmente, GPS, reúnem o receptor e o decodificador de sinais do sistema GPS, podendo posicionar o usuário por meio de coordenadas ou sobre um mapa digital. Esses mapas podem ser codificados sobre a forma matricial ou vetorial. No caso desta primeira implementação do sistema, serão utilizados mapas vetoriais. 3.2.1. Formatos Vetoriais Servem para armazenar informação de localização e seus atributos, como nome, temperatura, data de coleta, digitalmente como vetores. O tipo de dados que mais será utilizado neste projeto é estruturado de forma vetorial. Dentre eles, podem-se destacar os formatos SHP (shapefile), DGN (Design), DXF (Drawing Exchange Format), SVG (Scalable Vector Graphics) e KML (Keyhole Markup Language). 1. ESRI Shapefile – SHP Formato de arquivo vetorial geoespacial não topológico mais utilizado em softwares de sistemas de informações geográficas. Desenvolvido pela ESRI como um padrão aberto de arquivo para interoperabilidade de dados tanto entre sistemas da ESRI como entre sistemas proprietários. É geralmente composto por três arquivos de extensões distintas: *.shp, *.shx e *.dbf. Em *.shp, descrevem-se as geometrias das feições do mapa (pontos, polilinhas e polígonos), sendo incompleto sem as outras extensões. Em *.shx, faz-se a indexação das feições com os seus atributos contidos no formato *.dbf. Existem, ainda, formatos opcionais como o *.prj que descreve o tipo 27 de projeção e o sistema de coordenadas utilizados, o *.sbn, que contém índices espaciais das feições, entre outros. Um entrave à sua utilização em dispositivos móveis provém de seu tamanho, normalmente inviável para dispositivos com limitações de armazenamento, até mesmo por ser um formato não topológico. Entretanto, a maior parte do seu conteúdo é despendido com as tabelas de atributos, armazenados no *.dbf. 2. Scalable Vector Graphics – SVG Formato de arquivo em XML, compatível com padrão aberto especificado pela W3C utilizado em aplicações com gráficos vetoriais e animações, inicialmente em ambiente web. As feições e comportamentos do mapa são definidos em textos XML. SVG oferece importantes vantagens quanto à representação em relação aos formatos bitmaps ou a outros formatos matriciais, como por exemplo, a identificação de feições para a aplicação de operadores topológicos e espaciais, tais como definição de melhor caminho, intersecção, conectividade e outros. Outras vantagens são a possibilidade de edição e seleção de textos de um arquivo SVG, o tamanho relativamente menor aos dos formatos matriciais, interatividade, interoperabilidade e internacionalização, já que se trata de um arquivo XML e padrão aberto. O conteúdo de um arquivo SVG é armazenado como um Document Object Model (DOM), o que permite o acesso aos seus atributos, bem como, modificá-los. Os elementos suportados são: <rect>, <circle>, <ellipse>, <line>, <path>, <use>, <image>, <text>, <a>, tag de representação de um elemento genérico, <g>, tag de representação a um conjunto de elementos gráficos. Segue abaixo o exemplo de um SVG com o código referente. 28 Figura 4 - Arquivo SVG[27]. No SVG acima foi criado um círculo e um retângulo. O primeiro possui os atributos ‘id’, utilizado no código para recuperar as suas informações, ‘cx’ e ‘cy’, posição x e posição y na tela, respectivamente, ‘r’, o raio, ‘fill’, a cor de preenchimento do círculo, ‘fill-opacity’, a definição de transparência da geomteria, ‘stroke’, a cor da borda e ‘stroke-width’, a largura da borda. a. SVG Tiny – SVGT Oferece um subconjunto das capacidades do SVG, voltado para implementações em dispositivos móveis. Permite a implementação de animações através de instruções encapsuladas no arquivo de imagem que possibilitam que ela se modifique em resposta a eventos ou entradas do usuário. b. SVG Basic – SVGB Assim como o SVGT, trata-se de um subconjunto dos recursos oferecidos pelo SVG, sendo que o SVGB foi definido para dispositivos com maiores recursos e com maior capacidade de processamento como os PDAs. 29 3. DGN Oriundo do acrônimo em inglês DesiGN, este é o formato de arquivo utilizado no programa Bentley Systems MicroStation. A maior parte das cartas disponibilizadas pelo IBGE está no formato DGN. Atualmente, já existem iniciativas para tornar o formato DGN em um padrão aberto, o OpenDGN[16]. Responde por grande parte da base cartográfica digital do Brasil, uma vez que foi um dos primeiros arquivos para codificação de mapas vetoriais, utilizado pelo programa CAD Mycrostation, originalmente de propriedade da Intergraph[12]. 4. DXF Oriundo do acrônimo em inglês Drawing eXchange Format, é também um formato utilizado no programa AutoCAD. Desenvolvido pela Autodesk com o intuito de possibilitar a interoperabilidade entre os desenhos gerados no AutoCAD e outros programas. À medida que o AutoCAD foi se tornando mais complexo em termos de objetos e de recursos, o formato DXF se tornou incompleto para representar tais mudanças, pois certos tipos de objetos não estão documentados. Apesar de ser simples, é bastante utilizado ainda. 3.2.2. Sistemas de Geoinformação Nos últimos anos, vem surgindo um grande número de tecnologias baseadas em software livre para manipulação de dados geográficos. Esta seção visa apresentar alguns sistemas livres e comerciais. 1. GeoServer Consiste em um servidor web de código livre que possibilita visualização de informações geográficas. 30 Possibilita, ainda, a edição e a publicação dessas informações espaciais utilizando padrões abertos. Suporta diferentes protocolos OpenGIS como WFS, WFS-T, WMS para a produção de dados geográficos em diversos formatos, sejam matriciais, vetoriais ou para impressão, tal como PDF. Neste projeto, o Geoserver será utilizado na exportação de dados armazenados no SGBD (Postgres) para o dispositivo móvel e vice-versa. 2. PostgreSQL e POSTGIS O PostgreSQL é um SGBD objeto-relacional de código aberto que começou a ser desenvolvido em 1986 na Universidade da Califórnia em Berkeley. Trata-se de um SGBD objeto-relacional por implementar, além das características de um SGBD relacional, algumas características de orientação a objetos, como herança e tipos personalizados. Um dos pontos fortes desse SGBD é seu potencial de extensibilidade, o que possibilitou o desenvolvimento de uma extensão geográfica mais completa, chamada PostGIS. Este módulo foi desenvolvido pela empresa canadense Refractions Research, segue as especificações da SFS–SQL (Simple Feature Specifications for SQL e dota o pgSQL da capacidade de armazenamento, manipulação e consultas sobre dados de natureza geográfica. 3.2.3. Fontes de Dados Geográficos No século XX, ampliou-se o desenvolvimento de mapas topográficos e temáticos. A fotogrametria e o sensoriamento remoto permitiram o mapeamento de amplas áreas, com elevado grau de exatidão. Surgiram os métodos matemáticos e computacionais para o tratamento dos dados contidos nos mapas visando as análises espacial e não-espacial. Estas técnicas de produção e análise tomaram grande impulso com a evolução dos computadores e vêm modificando a forma de produzir conhecimento. 31 Nesse contexto, os sistemas de informação têm um papel de suma importância quanto ao acesso e a busca da informação, podendo ser definido segundo [15], como: “Sistema de informação pode ser uma biblioteca, pública ou especializada; um centro de documentação de uma empresa; um arquivo, um museu ou um banco de dados, uma mapoteca digital. Seja qual for a sua denominação original, um sistema de informação tem por função coletar, tratar e disseminar a informação produzida”. O objetivo básico da informação é ajudar na tomada de decisão, utilizando recursos como materiais, tecnologia, equipamentos e pessoas, caracterizando assim, a existência de um sistema de informação. Seguem abaixo alguns dos principais órgãos e instituições responsáveis pela produção cartográfica atual. 1. BDGEX Segundo portaria número 034-DCT, de 17 de novembro de 2005 publicada no Boletim do Exército n° 51, de 23 de dezembro de 2005, Banco de Dados Geográficos do Exército (BDGEx) é o repositório do acervo de arquivos digitais de cartas topográficas e de imagens armazenados e em condições de serem recuperados, para atender o usuário interno do Exército. Este repositório será alvo de testes pelo sistema em desenvolvimento neste projeto. 2. Mapoteca Digital Com o auxílio dos sistemas de informação geográfica, o mapa passou do papel para o meio eletrônico. Com a utilização do computador, as tarefas antes realizadas para a confecção de mapas foram automatizadas. Esta automação possibilitou o armazenamento, a indexação e a consulta de uma maior quantidade de mapas servindo de fonte de informações para pesquisadores que trabalham com sistemas de informações em imagens, universidades e instituições governamentais. Isto possibilitou a implementação de mapotecas digitais. 32 Para Moretti[18], “Mapoteca digital é uma estrutura de armazenamento de dados geográficos digitais criada para facilitar o gerenciamento dos arquivos, incluindo níveis de acesso e procedimentos padronizados de checagem e atualização”. Já Viana&Neves[31], acreditam que a mapoteca digital “é um banco de dados composto pelos arquivos digitais de mapas, e imagens, junto com um sistema de identificação de busca”. Conforme Gonçalves[9], “é uma coleção não convencional de informações geográficas dispostas em arquivos digitais de imagens e mapas”. Semelhantes a outros sistemas geográficos, a mapoteca digital tem os seguintes componentes: Interface com o usuário; Entrada e integração de dados; Funções de procedimentos gráficos e de imagens; Visualização e plotagem; Armazenamento e recuperação de dados geográficos. No Brasil existe a Mapoteca do Instituto Brasileiro de Geografia e Estatística (IBGE). Figura 5 - Modelo de banco de dados integrados com várias instituições transferindo dados entre si [Adaptado de Néri[19]] 33 3. OpenStreetMap Comunidade virtual responsável por criar e prover mapas de ruas de forma gratuita. Seu intuito é tornar livre o acesso a mapas de regiões de qualquer parte do mundo antes restritos a clientes de um fornecedor proprietário. Sua produção é colaborativa permitindo qualquer um, cadastrado no sistema, a editar um mapa fornecido pelo OpenStreetMap. 4. TrackSource O Projeto Tracksource foi criado com o intuito de confeccionar mapas vetoriais do Brasil, através da produção colaborativa, para uso em aparelhos GPS da Garmin. O projeto surgiu porque os mapas fornecidos pela Garmin, no Brasil, não possuem um detalhamento suficiente das cidades e estradas. 3.2.4. Tecnologias de Implantação Uma vez apresentados os tipos de estruturação de dados espaciais, os padrões e os sistemas que os manipulam, assim como os GNSS, apresenta-se nesta seção uma introdução e uma distinção entre tecnologias e termos consagrados para o entendimento no desenvolvimento de sistemas para dispositivos móveis. 1. Sistemas Embarcados É um sistema desenvolvido para desempenhar uma tarefa dedicada, na maioria das vezes em tempo real, confinado em um hardware,. Em contraste, um PC pode realizar múltiplas tarefas dependendo de como o aplicativo que está sendo executado foi programado. A maioria dos dispositivos atuais é controlado por sistemas embarcados, desde dispositivos portáteis como relógios digitais, MP3 players até semáforos e controladores industriais. 34 Para ilustrar a diferença, um computador de mão possui um sistema operacional e microprocessadores que o alimentam. Dessa forma, não é considerado exatamente um sistema embarcado uma vez que executa diferentes aplicativos e é capaz de se conectar a periféricos. 2. Celular x PDA x SmartPhone O telefone celular, ou simplesmente celular é um dispositivo eletrônico portátil para a transmissão de voz ou dados através de uma rede de estações bases. Além da transmissão de voz comum ao telefone convencional, a maioria dos celulares oferecem funcionalidades adicionais como SMS para mensagens de textos, email, comutação de pacotes para o acesso à Internet, capacidade gráfica para jogos, comunicação Bluetooth, comunicação Wi-Fi, comunicação infra-vermelho, MMS para troca de fotos e de vídeos. Personal Digital Assistant (PDA) é um computador de mão que, geralmente, possui a propriedade de touch screen para a entrada de dados através de teclado virtual ou para a seleção de opções, tela a cores e som, o que o possibilita ser usado também como navegador para Internet ou até como celular (caso dos smartphones). Podem possuir teclado, cartão de memória para armazenar dados e no mínimo uma das seguintes tecnologias para conectividade: IrDA, Bluetooth e Wi-Fi. Essas tecnologias de conexão permitem conectar o PDA a teclados externos, receptores GPS, impressoras e outros acessórios, bem como para a troca de informações entre PDA’s. A presença de programas como agenda de compromissos, calendário, agenda de contatos e algum editor de texto conferem ao dispositivo a denominação de PDA. Uma importante função presente nos PDA’s é a sincronização de dados com o computador pessoal. Essa funcionalidade permite a atualização de dados para o PDA garantindo a utilização de informação como se estivesse utilizando o PC. Do mesmo modo, garante que o backup dos dados do PDA passando-os para o PC impedindo a perda das informações contidas no dispositivo móvel. A maioria dos PDA’s já vêm com um programa de sincronização como é o caso dos dispositos com sistema operacional Palm OS, os quais vêm com o HotSync e ou daqueles com Windows Mobile, que vêm com ActiveSync. Alguns desses programas de sincronização possuem a limitação de só sincronizarem informações de programas proprietários, como é o caso do ActiveSync da Microsoft. Dentre alguns PDA’s 35 disponíveis atualmente no Mercado, podemos citar Black Berry, Apple iPhone, Apple Newton, Palm Treo, Palm Pilot, Apple iPod e HP iPAQ séries 6900 e 9000. Um smartphone consiste em um telefone móvel que oferece recursos mais avançados do que aqueles oferecidos por um simples telefone celular. Não há uma definição padrão para smartphones. Uns consideram-no como um telefone com um sistema operacional que oferece uma plataforma para desenvolvimento de aplicativos. Outros consideram-no um telefone móvel com recursos avançados como correio eletrênico, Internet e teclado. Segundo o vice-presidente de dispositivos portáteis da HP, Rick Roesler, smartphones são computadores usados como telefones também. Smartphone, com letra maiúscula no início, faz referência ao sistema operacional. 3.2.5. Sistemas Operacionais 1. Symbian Symbian é um sistema operacional aberto, para dispositivos móveis, com bibliotecas, frameworks de interface com usuário e ferramentas próprias desenvolvidos pela Symbian Ltda. Executa exclusivamente em processadores ARM. Em 1998 a Symbian foi fundada com a intenção de explorar a convergência entre PDA’s e celulares e era formada por quatro grandes empresas: Ericsson, Nokia, Motorola e Psion. Em 2008, a Symbian Ltda foi adquirida integralmente pela Nokia. Recentemente anunciaram a intenção de desenvolver programas de código livre e de abrir o código do sistema operacional. Symbian OS é estruturado, como alguns sistemas operacionais para Desktop, com proteção de memória e com multitarefa preemptiva. Foi desenvolvido com base em três objetivos: segurança e integridade dos dados do usuário, menor Kernel possível com apenas as funções mais simples e essenciais e divisão absoluta entre o tempo de CPU e de aplicativos. A programação em Symbian é orientada a eventos. 36 Segundo pesquisa realizada no segundo trimestre de 2008 pela Canalys, empresa especializada em análise de lideranças de tecnologias no mercado, o Symbian OS lidera o mercado de sistemas para dispositivos móveis com 57.1% seguido de RIM BlackBerry com 17.4% , da Microsoft com Windows CE e com o Windows Mobile com 12%, do Linux OS com 7.3% e do iPhone OS, do Palm OS e do BREW representando o restante da participação no mercado. Todas os aplicativos que rodam no Symbian foram desenvolvidos sobre classes definidas na arquitetura de aplicação. Essas classes definem um ambiente básico para a execução de aplicativos. Recursos adicionais devem ser criados independentemente e suas API’s capazes de interagir com as classes originais, ficando a cargo dos fabricantes disponibilizarem plug-in’s para mais funcionalidades. A programação em C++ para Symbian requer o uso de técnicas especiais como descritores e gerenciamento de pilha, o que dificulta a implementação. É questionável também se o paradigma de gerência de memória é benéfico. Acreditase que essas técnicas foram desenvolvidas para o mais restritivo dispositivo móvel do século XX, aumentando desnecessariamente a complexidade de código fonte para os dispositivos atuais. A plataforma de desenvolvimento em Symbian é voltada para a programação em mais baixo-nível e para modelos de dispositivos móveis antigos, tornando o trabalho mais complexo. 2. Windows CE Oficialmente conhecido como Windows Embedded Compact é um dos sistemas operacionais da Microsoft para computadores de bolso e para sistemas embarcados. É um sistema otimizado para dispositivos que possuem limitações de armazenamento – o kernel do Windows CE pode rodar com menos de 1 MB de memória. É um sistema baseado em tempo real com a implementação de threads, simplificando a interface e otimizando o tempo de execução. Plataformas posteriores foram essencialmente desenvolvidas sobre o núcleo do Windows CE, como: Pocket PC 2000, Pocket PC 2002, Windows Mobile 2003, Windows Mobile 2003 SSE, Windows Mobile 5.0, Windows Mobile 6, Smartphone 2002, Smartphone 2003. Uma das vantagens do desenvolvimento para Windows CE consiste na distribuição de 37 grande parte do seu código fonte para fabricantes de dispositivos móveis de modo que possam adaptar seus hardwares para este sistema operacional. A plataforma baseada em Smartphone (Windows Mobile Standard) oferece sistema operacional estável e interface para celulares. Suportam funcionalidades como multimídia e email. Windows Mobile 5.0 suporta USB 2.0, o que significa que o PDA comporta-se como um pen-drive permitindo o acesso a suas informações de qualquer PC provido de entrada USB, sem a necessidade de qualquer programa extra de sincronização. 3. Pocket PC Trata-se de uma especificação de hardware para computadores de mão com sistema operacional Microsoft Windows Mobile. Deve ser capaz de suportar, também, outros sistemas operacionais como NetBSD, Linux, Android. Possui algumas das funcionalidades dos mais modernos desktop’s, como editores de texto, planilhas de dados, programas de email, editores de imagens, gerenciador de memória, entre outros. Segundo a Microsoft, o Pocket PC é um dispositivo de mão capaz de trocar e armazenar emails, contatos, agenda, executar arquivos multimídia, jogos, editores de texto e navegar pela Internet. Atualmente, existem vários aplicativos desenvolvidos para Pocket PC, alguns dos quais são gratuitos. Muitos desses dispositivos incluem a funcionalidade de telefones móveis e de receptores GPS podem, também, ser usados como leitores de textos e como câmeras fotográficas. Dispositivos sem a funcionalidade de celular são denominados Windows Mobile Classic ao invés de Pocket PC. Dispositivos com celular integrado e com a propriedade de comando por toque na tela são denominados Windows Mobile Professional. 4. Android É um sistema operacional baseado no sistema operacional Linux e desenvolvido pela Google e pela Open Handset Alliance, um consórcio formado por 34 empresas de software, hardware e de telecomunicação empenhadas em desenvolver padrões abertos para dispositivos móveis. Abrange 38 também uma plataforma de desenvolvimento possibilitando a escrita de códigos utilizando a biblioteca criada pela Google em linguagem Java. Dessa forma, possui a limitação de não permitir a escrita de códigos em Java ‘puro’. Suas tecnologias para conectividade são: GSM, CDMA, UMTS, Bluetooth e WiFi. Suporta, também, API’s para troca de mensagens SMS. Seu browser é baseado no software de código live Web Kit. Programas escritos em Java são executados utilizando-se a máquina virtual Dalvick Virtual Machine. Talvez por se tratar de uma plataforma muito recente, pois seu lançamento foi em meados de 2008, são observados a existência de bugs, documentação falha, sistema de FAQ precário e que nem todo o código(ou, as últimas releases) desta plataforma está disponível gratuitamente. 5. Binary Runtime Enviroment for Wireless – BREW É uma plataforma de desenvolvimento para dispositivos móveis desenvolvido nos Estados Unidos pela Qualcomm. Recentemente, recebeu novo impulso na Europa devido ao Skypephone terceira geração. 6. iPhone OS Sistema operacional baseado no MAC OS X. Aplicações de terceira geração foram originalmente desenvolvidas para este tipo de ambiente, como por exemplo, serviços WEB que só poderiam ser acessados pelo browser nativo neste sistema. Atualmente, entretanto, já é possível baixar aplicativos nativos deste sistema e executá-los. 3.2.6. Módulos de Desenvolvimento Inicialmente conhecida como Oak, a linguagem Java foi desenvolvida pela Sun Microsystems e com o intuito de programação para dispositivos. É notável pela facilidade em portabilidade de aplicações quando desenvolvidas nesta linguagem. 39 Arquiteturalmente, o compilador Java transforma a linguagem de programação Java em um conjunto de bytecodes, instruções para uma máquina abstrata de computação denominada máquina virtual (Virtual Machine – VM). A máquina virtual Java (Java Virtual Machine – JVM) interpreta os bytecodes para poder executar o programa. Desta forma, é tida também como um interpretador, apesar de o código Java poder também ser compilado a partir de uma máquina de código binário. Dadas as limitações de processamento, de memória e de apresentação gráfica de muitos dispositivos móveis, foram criadas especificações mais restritivas que as da linguagem Java padrão desenvolvidas para aparelhos como celulares, smartphones e PDA’s. Após estudos desenvolvidos pela Sun, a linguagem foi dividida em três edições, que são: 1. Java 2 Standard Edition – J2SE Voltado para o desenvolvimento em aplicações Desktop convencionais e portanto, munido dos principais recursos disponíveis para o ambiente Java como Swing, API para interface gráfica avançada. A figura abaixo ilustra todos os recursos do J2SE disposto em camadas. Figura 6 - Estrutura do J2SE[27]. 40 2. Java 2 Enterprise Edition – J2EE Superconjunto do J2SE orientado a aplicações institucionais e empresariais, e portanto, mais robustas, com ênfase no desenvolvimento de softwares que rodam em servidores de aplicações utilizando Enterprise JavaBeans (EJBs), aplicações WEB (servlets e Java Server Pages), CORBA e Extensible Markup Language(XML). A figura abaixo ilustra a disposição do J2EE. Figura 7 - Estrutura do J2EE[27]. 3. Java 2 Micro Edition – J2ME Subconjunto do J2SE orientado a dispositivos móveis que não suportam, por motivos de restrições de memória e ou de processamento, a implementação do J2SE completa. Figura 8 - Estrutura do J2ME[27]. 41 Cabe ressaltar que J2ME não define uma nova linguagem, apenas adapta a tecnologia Java para dispositivos com limitações de processamento. 3.2.7. Configurações (Configurations) Especifica um ambiente de execução básico para J2ME. Este ambiente inclui máquina virtual, a qual pode ser mais limitada que a utilizada pelo J2SE e subconjuntos de API’s do Java para uma família de dispositivos com capacidades similares. Atualmente, duas configurações estão definidas: Connected Limited Device Configuration (CLDC) e Connected Device Configuration (CDC). Em comum, estas duas configurações são para dispositivos com recursos de conexão em rede. 1. Connected Limited Device Configuration – CLDC Trata-se de um framework para aplicações desenvolvidas em Java ME rodando em dispositivos com limitação crítica de recursos, como pagers e celulares. Sua especificação tem origem no J2SE, sendo que várias API’s originais foram removidas, como por exemplo java.lang.Thread.interrupted(), que notifica a interrupção da thread corrente por outra thread e suporte a SWING, biblioteca gráfica criada em complemento à AWT. Além disso, não possui suporte a ponto flutuante, nem à finalização de objetos, responsável por evitar que objetos não referenciados consumam recursos. Figura 9 - Configuração CLDC[27] 42 No que diz respeito ao CLDC para aparelhos celulares, temos as seguintes características: Hardware requerido: mínimo de 160KB de memória para Java, um processador de no mínimo 16 bits com baixo consumo (adequado a baterias típicas de um celular) e conexão de rede (neste caso wireless – 9.6Kbps, 144Kbps ou 2Mbps). 2. Connected Device Configuration – CDC Este é outro framework para aplicações em sistemas embarcados na linguagem Java ME. Trata-se da especificação de um subconjunto do J2ME menos restritivo que o CLDC com uma configuração mais completa com API’s próprias do Java SE, com suporte a applets e a toda a AWT. 3.2.8. Perfis (Profiles) É uma extensão da configuração, que oferece bibliotecas específicas para aplicações em dispositivos específicos. Serve para prover funcionalidades que não estão presentes nas configurações. Vale ressaltar que qualquer aplicação escrita para a configuração CLDC funcionará também em uma plataforma CDC. A diferença entre configuração e perfil é que o primeiro descreve de forma geral uma família de dispositivos, enquanto que o segundo é específico para um tipo particular de aparelho em uma dada família. 1. Mobile Information Device Profile – MIDP Trata-se de uma especificação para o uso da linguagem de programação Java para dispositivos móveis tais como celulares e PDA’s. MIDP consiste em uma parte da plataforma de desenvolvimento Java ME e faz parte de um conjunto de 43 interfaces de programação de baixo nível (CLDC). MIDP foi desenvolvido pela Java Community Process nas versões MIDP 1.0 e MIDP 2.0. O MIDP 1.0 possui várias limitações, como: a. não possui API’s para renderização; b. não possui suporte para acesso a imagens (pixels RGB); c. não possui suporte para o modo de tela cheia; d. não possui suporte para áudio; e. a requisição a um servidor web é feita apenas por http. Uma das vantagens de utilizá-lo é garantir a portabilidade da aplicação haja vista a simplicidade dessa biblioteca. Algumas de suas API’s são a. javax.microedition.io (operações de entrada/saída); b. javax.microedition.lcdui (interface com usuário); c. javax.microedition.rms (persistência de dados); d. javax.microedition.Midlet (base para aplicações em Java ME). O MIDP 2.0 introduz API’s para jogos e multimídia representando um algo mais em implementações que o utilizam. São elas a. javax.microedition.media; b. javax.microedition.lcdui.game; c. javax.microedition.pki (para conexões seguras). Existem ainda outras API’s que não são implementadas pelo MIDP 1.0 nem pelo MIDP 2.0, mas que garantem funcionalidades extras aos dispositivos, como: a. javax.microedition.messaging (para mensagens SMS e MMS); b. javax.microedition.pim (para acesso a informações pessoais de PDA’s, como a agenda, por exemplo); c. javax.microedition.io.File (para acesso a arquivos do PDA). 44 2. Foundation Profiles Perfil base para dispositivos em rede sem recursos de interface com usuário sobre CDC. 3. Personal Basis Profiles Oferece suporte a gráficos e RMI (Remote Method Invocation) para dispositivos CDC e Foundation. A figura abaixo ilustra a disposição da arquitetura J2ME em camadas hierárquicas representando os recursos oferecidos por cada nível. A parte circulada mostra o ambiente utilizado neste projeto, a dizer: 1. Configuração: CLDC 1.1 2. Perfil: MIDP 2.0 Figura 10 - Estrutura de JVM, Configurações e Perfis no J2ME[4] Simplificando, toda aplicação Java desenvolvida para dispositivos móveis conectáveis possui uma configuração base: a CLDC e a CDC. A primeira serve para dispositivos com grandes limitações de armazenamento (até 160KB de memória não 45 volátil – RAM e 512 KB de memória volátil – ROM), de processamento, gráficas e de conexão de pequena largura de banda. Exemplos de dispositivos com configuração CLDC são os celulares e smartphones. Sobre a CLDC, podem-se aplicar perfis como o MIDP para acrescentar funcionalidades através de API’s implementadas por eles oferecendo assim, um ambiente de desenvolvimento mais completo. • O perfil MIDP existe até a versão 2.1 e serve somente para a configuração CLDC. A configuração CDC foi desenvolvida para dispositivos mais robustos: CPU de 32 bits, 2MB RAM, 2.5MB ROM, rede confiável e de desempenho razoável, mas que ainda assim possuem restrições de memória, processamento e outros. Sobre o CDC podem-se aplicar outros tipos de perfis que não o MIDP, quais sejam: Personal, Personal Basis ou Foundation. A figura abaixo ilustra a disposição das duas configurações e seus perfis. Figura 11 - Plataforma JavaME com suas configurações, perfis e API's[4]. 46 3.2.9. Máquinas Virtuais Consiste em um software que executa programas como se um computador fosse. Foi definido por Goldberg como uma eficiente e independente duplicata de uma máquina real. É responsável por prover serviços ao programa que está sendo executado em seu ambiente de execução, atuando como um sistema operacional ou hardware para os quais o programa havia sido escrito. A característica essencial de uma máquina virtual é que o software rodando nela está limitado aos recursos e às abstrações providos por ela. Máquinas virtuais separam-se em dois grupos, de acordo com seus usos e com seus níveis de abstração a uma máquina real: máquina virtual de sistema e máquina virtual de processo. A máquina virtual de sistema provê uma plataforma de sistema completa suportando, portanto, a execução de um sistema operacional. Este tipo de máquina permite compartilhar os recursos da máquina física para várias máquinas virtuais, cada uma rodando seu próprio sistema operacional. Em contrapartida, a máquina virtual de processo dedica-se à execução de um programa, ou seja, um único processo. Seu principal propósito é criar um ambiente de desenvolvimento independente de plataforma, abstraindo detalhes de hardware e de sistema operacional e permitindo que programas executem da mesma maneira em qualquer plataforma. Esse tipo de MV se tornou popular com a linguagem de programação Java, a qual é implementada usando a máquina virtual Java. Outro exemplo é o da framework .NET que utiliza a MV chamada Common Language Runtime. 1. CrE-ME Desenvolvida pela NSicom, trata-se de uma máquina virtual Java para dispositivos com Windows CE. Ela provê a implementação do CDC e é reconhecida como a máquina mais rápida para dispositivos com Windows Mobile e com requisição moderada de recursos. Mais informações disponíveis em [12]. 47 2. JeodeRuntimeTM Desenvolvida pela Insígnia Solutions pode ser instalada, utilizada ou copiada quando de acordo com os termos de licença. Segue as especificações do PersonalJava 1.2 da Sun, voltada para aparelhos com configuração CDC. Pode ser utilizada tanto para applets Java em Web Pages quanto para aplicações Java em Pocket PC’s. 3. Kilobyte Virtual Machine – KVM Consiste de uma máquina virtual desenvolvida pela Sun em linguagem C para dispositivos móveis. É derivada da JVM, possuindo um subconjunto de seus recursos. CLDC especifica o uso da KVM. O ‘K’ de KVM é um acrônimo de Kilobyte, significando que ela roda em kilobytes de memória. Figura 12 - Máquina virtual[27] 48 4. Metodologia Linguagem de Programação: Java ME Escolha motivada, principalmente, pela concepção de portabilidade que envolve o desenvolvimento Java. Isto se deve ao fato de o compilador Java não gerar instruções específicas a uma plataforma operacional. Gera-se um programa em código intermediário pelo compilador Java, denominado bytecode, que pode ser descrito como uma linguagem de máquina destinada a um interpretador de bytecodes, a Java Virtual Machine – JVM, a qual emula um processador. Portanto, torna-se necessário possuir uma JVM instalada para o sistema proposto executar, independentemente do sistema operacional utilizado no dispositivo. Destaca-se, também, o fato de esta ser uma linguagem que não necessita de licença para o seu uso, seu compilador ser livremente disponibilizado, a máquina virtual ser também disponibilizada gratuitamente, e não menos importante, a plataforma de desenvolvimento ser livre. Configuração: CLDC 1.1 MIDP 2.0 Essa escolha se deve ao fato de os dispositivos com essa configuração terem processamento suficiente mínimo para executar uma aplicação de navegação, bem como possuem as especificações necessárias para o desenvolvimento da aplicação, como a JSR’s Location e Scalability Vetorial Graphic. 4.1. Equipamentos A escolha por um celular, do tipo smartphone, se justifica por ser um equipamento portátil, compacto, com poder de processamento, inclusive gráfico, de custo relativamente baixo e de fáceis aquisição e disponibilidade no comércio. Além 49 disso, permite a conexão com receptores GPS via cabo ou rede sem fio (bluetooth), existindo até smartphones e PDAs com receptores embutidos. Dentre os equipamentos disponíveis no mercado, trabalhou-se com dispositivos que reunissem os requisitos necessários, tanto em armazenamento quanto em processamento, que possibilitassem o desenvolvimento em Java e que possuíssem um sistema operacional largamente utilizado, como o Windows Mobile e o Symbian. Os equipamentos utilizados foram: 1. Nokia N95 – escolha baseada nos requisitos de configuração mínima do sistema 2. Nokia E71 – escolha baseada nos requisitos de configuração mínima do sistema 3. HP6945 – desenvolvimento voltado para celulares e PDA’s 4. Garmin CS – utilizado na fase de ambientação 4.2. Softwares 1. Wireless Tool Kit 2.5.2 – emulador Sun 2. Eclipse + Plugin Eclipse ME – Plataforma OpenSource de desenvolvimento Java com módulo para Java ME 3. Geoserver – Servidor de mapas OpenSource 4. Jeode RunTime – máquina virtual para Pocket PC 5. Postgres + PostGIS – Banco de dados com módulo para objetos geográficos 6. S60 3rd Edition SDK Feature Pack 2 – emulador Nokia 7. Apache TomCat 5.5 – servlet container, utilizado para o funcionamento do servidor para o envio de coordenadas e para o chat. 50 A escolha dos softwares supra-listados se deve, fundamentalmente, por serem livres, não havendo a cobrança por licenças. Ainda assim, buscaram-se nessa escolha aqueles que fossem robustos, estáveis e de comprovada aceitação técnica. A escolha pelo GeoServer se deu, principalmente, por ser escrito em Java e possuir documentação disponível, o que facilita sua configuração. Além disso, possui mais funcionalidades que seu principal concorrente, o MapServer, como por exemplo, o WFS-Transacional, que permite a realização de inserções, atualização e exclusão de feições. A escolha pelo Postgres se deve pela disponibilidade do módulo PostGIS, o qual implementa as recomendações do padrão OpenGIS para a interoperabilidade de mapas. Dentre os softwares utilizados, aquele que não se adequou aos nossos testes foi a máquina virtual Jeode, utilizada no HP6945. Como essa máquina não possui as principais JSRs que utilizamos no sistema, como a JSR179 e a JSR226, a utilização de PDAs ficou comprometida no projeto. Pesquisaram-se outras máquinas disponíveis, mas a grande maioria necessita da aquisição de licenças. Dentre elas destacam-se a CrEme, J9 e Kaffe. 4.3. JSR’s Seguem-se as principais especificações Java utilizadas, sobretudo, com o intuito de acelerar o desenvolvimento do sistema e de focar em soluções para a arquitetura do sistema. 1. JSR266 – Scalable Vetorial Graphics: especifica métodos que manipulam o arquivo vetorial svg conferindo maior rapidez ao desenvolvimento 2. JSR179 – Location: especifica métodos necessários na comunicação entre o dispositivo móvel e o receptor GPS para a obtenção das coordenadas geográficas. 51 4.4. Desenvolvimento do Software Utilizou-se, no desenvolvimento deste sistema, arquitetura modular visando a maior facilidade de manutenção, bem como, a evolução do sistema com o acréscimo ou, até mesmo, a substituição de funcionalidades. À evolução deste sistema, destacam-se a obtenção de coordenadas sem o uso de GPS (como, por exemplo, o posicionamento por rede de celular, por rede sem fio ou por RFID), a inclusão de operadoresespaciais, a possibilidade de navegação sobre cartas em formato matricial e a correção DGPS em tempo real. Dentre os principais módulos implementados, destacam-se a exibição do mapa, a obtenção de coordenadas e a manipulação de mapas. 4.4.1. Exibição do mapa Utilizaram-se as especificações da JSR226 para a implementação da exibição de mapas vetoriais no dispositivo. Encontrou-se a limitação de 17.600 vértices. O construtor abaixo é o responsável por instanciar um objeto do tipo SVGImage com o svg passado pelo usuário através da variável path. O método paint é responsável por renderizar na tela o mapa agora instanciado, como mostra a figura 16. Figura 13 - Classe responsável pela exibição do mapa svg 52 Figura 14 - Método responsável por desenhar o mapa na tela 4.4.2. Recepção de coordenadas do receptor Realizada através de métodos especificados pela JSR179, como mostrado no código abaixo. Inicialmente, especifica-se a precisão requerida pelo usuário para o datum horizontal (latitude e longitude). Outras restrições podem ser feitas ao receptor como, por exemplo, a de ser um receptor com baixo consumo de bateria, ou ainda, que seja livre de tarifas. Em seguida, instancia-se um objeto do tipo LocationProvider, o qual fornecerá um receptor, conectado ao celular, com as características determinadas pelo objeto Criteria. Se houver mais de um receptor com as mesmas características, o LocationProvider selecionará o primeiro da lista de receptores. Feita a seleção do receptor que transmitirá as coordenadas segundo os critérios estabelecidos de precisão, instancia-se um objeto do tipo Coordinates, responsável por armazenar as coordenadas transmitidas pelo receptor. 53 Figura 15 - Coordenadas do receptor Figura 16 - Instanciação de um receptor e obtenção de coordenadas 54 4.4.3. Manipulação de mapas SVG Seguem-se algumas das funcionalidades do sistema quanto à manipulação dos arquivos SVG em tempo de execução. Arraste, zoom e rotação Essas três funcionalidades envolvem a edição, em tempo de execução, do arquivo svg que descreve o mapa. Utilizam-se funções de manipulação de arquivos xml, disponibilizadas no JavaME pelo pacote org.w3c.dom.svg.*. Através de uma instância do mapa em questão, utilza-se a função getDocument() para armazenar em uma variável do tipo Document o xml referente ao mapa. Todas as alterações no svg serão feitas por esta variável Document. Ela oferece acesso a todas as tags do xml. E, uma vez acessando cada elemento do arquivo, seus atributos podem ser modificados em tempo de execução. Para a rotação, o zoom e o arraste, utilizaramse, respectivamente, as funções setCurrentRotate(float), setCurrentScale(float) e setX(float) ou setY(float), dependendo da direção de arraste. 55 Figura 17 - Rotação Figura 18 - Zoom 56 Figura 19 - Arraste do mapa O método da figura 23 realiza o tratamento de interações entre o usuário e as teclas do dispositivo móvel. As teclas direcionais identificadas pelo Keycode -1, -2, 3 e -4 fazem o arraste do mapa nas direções norte, sul, leste e oeste, respectivamente, através dos métodos setX(float) e setY(float). A tecla ‘*’ invoca o método responsável pela seleção das feições. As teclas ‘2’ e ‘8’ realizam o zoom in out, respectivamente. Já a tecla ‘0’ faz a seleção de layers. 57 Figura 20 - Métodos de tratamento de interações com o usuário 58 Plotar ponto recebido do GPS Figura 21 - Localizacao Atual O método da figura 25 é responsável por criar um elemento dentro do arquivo svg em tempo de execução. Inicialmente, instancia-se um objeto do tipo Document que receberá o arquivo svg instanciado no método MapCanvas, visto anteriormente, e armazenado na variável svgMap. O tipo SVGSVGElement representa o corpo do svg onde estão declarados todas as feições. Cada feição possui um identificador único. No exemplo abaixo, o elemento criado consiste em um círculo usado para a representação das coordenadas oriundas do receptor GPS. Para não criar vários círculos sobrepostos, utilizou-se a variárel firstCall para que o círculo seja criado no svg uma única vez e que depois tenha apenas atualizadas as coordenadas do seu centro (cx,cy) de acordo com os valores passados pelo receptor GPS. A atualização do centro do círculo ocorre com a utilização do método getElementById(String), 59 implementado pela JSR226, responsável por encontrar o elemento “circle” dentro do arquivo svg. Em seguida, os métodos setFloatTrait(String, float) realiza a atualização da propriedade “cx” do elemento “circle” do svg. Figura 22 - Plotagem do ponto referente às coordenadas do receptor Seleção de feições O método da figura 26 é o responsável pela seleção de feições do mapa. Da mesma forma que nos métodos anteriores, inicialmente carrega-se o svg numa variável Document e, em seguida, acessa-se o conteúdo do svg através do getDocumentElement(), fornecido pela JSR226. A solução adotada foi percorrer todas as feições do svg iterativamente incrementando-se o valor do identificador passado como parâmetro em getElementById(). Uma vez instanciado o SVGElement “text” com determinado identificador, apenas altera-se a cor dessa feição através do método setRGBColorTrait(String, Color), também especificado na JSR226. O ideal seria que o usuário selecionasse a feição desejada através do cursor de tela, mas esse tipo de 60 solução só foi encontrada para svg’s para Desktop, que são visualizados em browsers e que, portanto, podem utilizar comandos em JavaScript. Figura 23 - Seleção de feições Figura 24 - Seleção de feição 61 Ainda no método changeFeature(), ocorre a renderização da tabela de atributos com os valores referentes à feição selecionada. Faz-se através do método getTrait(String) em que passa-se como parâmetro o identificador da variável SVGElement, no caso, “text” precedido por ‘#’. Esse método acessa os atributos associados com a feição selecionada do svg. Em seguida, insere-se o atributo na tabela de atributos. Figura 25 - Seleção de feição e representação de atributos na tabela A classe JMTable, responsável pela implementação da tabela de atributos, estende a classe CustomItem responsável por criar elementos customizados. A construção da tabela foi toda desenvolvida com métodos primitivos, como o drawLine(), e renderizada sobre o canvas, que consiste em uma tela gráfica em branco. 62 Exibição de vários layers (selecionável) Figura 26 - Seleção de layers O método da figura 30 é responsável por selecionar determinada layer do mapa. Faz-se iterativamente, percorrendo-se todos os identificadores de todas as layers do mapa, e apenas altera-se a propriedade “stroke” da feição para “none”. Isso torna um layer oculta em tempo de execução, mas não a exclui em definitivo. Tal layer continua fazendo parte do svg, apenas o contorno da feição fica oculta ao usuário. 63 Figura 27 - Seleção de layer Tracklog Utiliza a mesma idéia do item anterior, exceto que não há a atualização do mesmo objeto no arquivo svg, mas a inserção de vários outros novos pontos simulando o caminho percorrido. Atualmente, as coordenadas do tracklog são armazenadas no sistema de arquivos do celular utilizando-se o próprio registro de arquivos do celular, o Record Management Store – RMS. Entretanto, busca-se uma solução em que o tracklog seja salvo diretamente em um arquivo com formato svg, o que facilitará o intercâmbio de informações entre o dispositivo móvel e a base de dados no Desktop. 64 Figura 28 - Tracklog O método da fogira 32 é semelhante ao método editSVG(), apresentado anteriormente, exceto que a cada nova coordenada recebida, cria-se um novo círculo no conteúdo do svg, simulando-se o caminho percorrido. Figura 29 - Tracklog 65 Acesso ao sistema de arquivos Utiliza a JSR75, FileConnection, responsável pelo acesso ao sistema de arquivos do celular. Esta JSR é nativa a todas as configurações do JavaME, desde às mais limitadas, e portanto, sua implementação é válida em todos os celulares com máquina virtual java. Figura 30 - Acesso ao sistema de arquivos 4.4.4. Integração de todas as funcionalidades A figura 34 ilustra a arquitetura do sistema desde a fase de obtenção do mapa em Desktop, sua posterior conversão para svg e sua transferência ao celular através de um cabo, cartão SD ou conexão bluetooth. Os mapas que alimentam o sistema 66 são obtidos de um repositório de mapas em conformidade com o padrão OpenGis. Tal escolha deixa não elimina a dependência a mapas em formato proprietário e favorece a interoperabilidade de informações entre outros sistemas que também adotem o padrão OpenGis. Inicialmente, utilizou-se o servidor de mapas Geoserver para a aquisição dos mapas. Entrava-se com o shapefile do mapa e o servidor retornava o svg correspondente. Entretanto, todos os atributos do mapa eram perdidos quando da conversão pelo Geoserver. Como o foco do trabalho não é a conversão de formatos de mapas, mas sim o desenvolvimento de um sistema de navegação, utilizou-se outra solução. A partir de um conversor de terceiros, livre e disponível em [3], fez-se a conversão do shapefile para o svg com todos os atributos inclusos. Embora o svg gerado tenha sido visualizado corretamente em browsers, o mesmo não apresenta o padrão que as rotinas da JSR226 do JavaME conseguem interpretar. Dessa forma, fez-se um conversor próprio para que o mapa fosse visualizado nos aparelhos portáteis também. Por isso, a figura mostra a seta do BG Geográfico, que representa o Geoserver, em cor de destaque como sugestão para trabalho futuro. Ao final da figura, ilustra-se o sistema propriamente dito, o qual está implementado num dispositivo móvel conectado a um receptor GPS para a obtenção das coordenadas. 67 Figura 31 - Arquitetura do sistema 4.5. Extras Apresentam-se nesta seção algumas funcionalidades que a priori não fazem parte dos objetivos do projeto, mas que constituem pontos de verificação das potencialidades do JavaME. Nesse sentido, implementaram-se funcionalidades peculiares a um usuário de um sistema de navegação, como o envio de coordenadas para um servidor, a integração com o GoogleMap, possibilitando a utilização de mapas em formato de imagens e o chat, o qual explora o intercâmbio de informações em tempo real entre os usuários. 4.5.1. Envio das coordenadas para o servidor Ocorre através do protocolo HTTP, uma vez que ele existe em todos os celulares atuais. Ao selecionar ‘Enviar Coordenadas’, o sistema solicita a entrada do endereço 68 do servidor para o qual enviará as coordenadas. Este endereço consiste no endereço IP do servidor, o número da porta onde foi instalado o servlet container e o caminho da lógica da aplicação (http://EndereçoIP:Porta/servlet/EnviaCoordenadas). O servlet utilizado foi escrito em Java e consiste na lógica de funcionamento do envio de coordenadas. É a responsável por receber requisições dos dispositivos móveis e fazer o tratamento seguindo a lógica implementada. Esse servlet fica armazenado em um repositório, que é o servlet container. Utilizou-se neste projeto o TomCat 5.5, servidor OpenSource, de propriedade da Apache Foundation. Embora a solução implementada ao envio de coordenadas requeira disponibilidade de conexão via HTTP, existe a possibilidade de se utilizar outras tecnologias de envio, como, por exemplo, por conexão GPRS, através de redes de celulares. Apesar de não implementada, essa solução faz parte de trabalhos futuros ao projeto como forma de eliminar a necessidade de conexão à internet. Destaca-se como positivo à sua adoção, a grande disseminação de redes de celulares, atualmente abrangendo mais localidades que a rede IP. Figura 32 - Envio de coordenadas para o servidor 69 4.5.2. Chat Seu funcionamento consiste em um servlet, que possui a função de um servidor, de receber e tratar requisições, implementada em Desktop. Existe uma variável que armazena, em uma lista do tipo String, todas as conversas dos usuários. Qualquer acesso ao servlet, através do servidor, retorna essa lista de conversas simulando assim um chat. O servidor utilizado foi o Apache TomCat 5.5 o qual funciona como um armazenador de servlets. O acesso à servlet implementada é feita através do endereço http://EndereçoIP:Porta/servlet/IMEChat , onde EndereçoIP é o endereço IP da máquina do servidor, porta é o local onde o TomCat foi instalado, geralmente na porta 8080, e /servlet/IMEChat é o caminho que acessa a lógica do Chat. Figura 33 - Chat 4.5.3. Integração com Google Map 70 Nesse caso, envia-se uma requisição ao servidor da Google com os valores lat/long recebidos pelo receptor GPS através do módulo implementado com a JSR179 para localização e aquele servidor responde com uma imagem raster do local correspondente. Figura 34 - Integração com Google Map O método abaixo obtém o mapa a partir de uma requisição aos servidores da Google passando como parâmetros a latitude e a longitude recebidos da antena GPS. A passagem desses parâmetros ocorre através da chamada ao método mapaHttp(String). 71 Figura 23 - Integração com Google Map A requisição http é da forma : Figura 24 - Requisição Http 72 5. Conclusões Neste trabalho pode-se concluir que a linguagem JavaME representa um passo significativo para desenvolvimento em dispositivos portáteis. Ela consegue agregar o paradigma de programação orientado a objeto aos recursos limitados desses dispositivos. Apesar disso, ainda há um conjunto de particularidades que dificultam o desenvolvimento em JavaME. As principais delas são as diferenças de recursos existentes nos dispositivos atuais, o que dificulta a portabilidade de um sistema para vários dispositivos, e a grande quantidade de máquinas virtuais existentes com a falta de uniformidade entre elas. As JSRs existentes fornecem mecanismo para se implementar métodos de manipulação de SVG. Isto possibilitou o desenvolvimento das funcionalidades do sistema que permitem o manuseio do SVG, como rotação, translação, seleção de feição e arraste. A utilização do GeoServer para gerar o SVG não foi satisfatória, pois o SVG gerado não apresentava o formato esperado para manipulação de atributos com as bibliotecas do JavaME. Tal problema foi contornado utilizando-se o Parser implementado para obter os atributos do SVG manipuláveis. Este Parser consiste em um programa escrito em Java que manipula o SVG gerado pelo Geoserver para que ele contenha os atributos que identifiquem as feições do mapa, conforme explica o Anexo D. A captura da posição pelo GPS foi bem sucedida, apresentando o erro dentro do esperado para esta técnica de posicionamento. A restrição de utilização de coordenadas Geodésicas em WGS84 não inviabilizou o uso dos mapas existentes em outros sistemas. Exige-se sua conversão prévia para o referido sistema de coordenadas. 73 As funcionalidades de manipulação do SVG, como arraste, zoom, rotação e seleção de feições foram implementadas com êxito. O uso destas funcionalidades tornam o sistema próximo do encontrado em outros de natureza comercial, como é o caso da rotação e do arraste, ao mesmo tempo que permite a obtenção de informações de atributos de feições do mapa. Por fim, a Interface gráfica desenvolvida atende aos objetivos iniciais do sistema, quando visto sob a ótica de uma prova de conceito (com possibilidades de evolução, conforme sugerido na seção Trabalhos Futuros), pois possui um layout simples de fácil usabilidade. A dificuldade aparece na medida em que se deseja acrescentar mais funcionalidades ao sistema. Para isso, deve-se pesar o que se deseja acessar facilmente e o quanto de área livre para exibição se deseja ter na tela. 74 6. Trabalhos Futuros Atualmente, diversas funcionalidades podem agregar valor a um sistema de posicionamento. Algumas delas com aplicação tanto no meio militar quanto no meio civil. Por exemplo, saber quais caminhos percorrer para ir de um ponto a outro é importante tanto em manobras militares quanto no uso cotidiano. Isso torna o roteamento uma funcionalidade valiosa em sistemas de posicionamento. Pode-se incluir essa funcionalidade utilizando-se as feições como objetos de roteamento. Para tanto deve-se construir no svg uma lista de adjacências, estrutura de dados básica para algoritmos de roteamento. Nela, cada feição é formada por um conjunto de vértices, em que cada um deles possui uma lista de seus vizinhos. Dessa maneira, podem-se saber quais as feições são vizinhas de uma outra qualquer. Com a lista de adjacências construída, pode-se utilizar um dos algoritmos de roteamento conhecido para se encontrar o menor caminho entre duas feições do mapa. Algoritmos com essa capacidade podem ser: Dijkstra, Bellman-Ford.e FloydWarshall. Tais algoritmos permitem adotar pesos a cada uma das arestas do grafo. Isso agrega a funcionalidade de permitir escolher o menor caminho entre duas feições levando-se em conta diversos critérios. A importância desse recurso pode ser visualizada no processo de deslocamento de uma tropa, onde deseja-se escolher o caminho com menor quantidade de tropas inimigas, ou um caminho na cidade com pouco congestionamento. O sistema de funcionamento pode ter sua capacidade de uso ampliada tornando-o independente do GPS. Hoje, o número de aparelhos celulares com dispositivo GPS ainda é pequeno, mesmo que tenha se tornado comum em aparelhos novos de alto custo. Além disso, o consumo de energia decorrente do uso do GPS nesses aparelhos reduz sua autonomia em termos de tempo. Pesquisas revelam[26] que no uso cotidiano, o tempo que os usuários possuem cobertura GPS 75 representa uma parcela mínima do dia, dada a exigência do sistema por uma visada direta do céu. Sendo assim, uma tecnologia de posicionamento do dispositivo de modo independente do GPS se torna desejável em paralelo a este. Essa independência pode ser conseguida utilizando-se outro sistema emissor de ondas, tais como redes WiFi e da rede de telefonia móvel GSM, dentre outros. O método se baseia na triangulação do dispositivo com bases, no tempo de resposta entre as bases e o alvo ou pela comparação das fontes de sinais, a partir de suas respectivas intensidades, com uma base de dados georreferenciada levantada previamente[26]. Desse modo, sabendo-se a posição das bases, pode-se estimar a posição do dispositivo.Tal funcionalidade permitiria o posicionamento do sistema independente do GPS, e ainda possibilitaria o uso do mesmo em locais fechados, onde não se consegue obter os sinais do sátelite para localização via GPS. Atualmente existem diferentes tipos de mapas empregados nos diversos sistemas de posicionamento. O sistema oferece suporte apenas ao padrão OpenGIS. Isso é uma limitação, uma vez que algumas regiões estão mapeadas em outros padrões de arquivos como KML, utilizado pelo Google, mapas para uso em receptores GPS de navegação, DGN, empregado por órgãos oficiais da cartografia nacional – IBGE e DSG ou shapefiles, utilizado, sobretudo, em empresas da área de cartografia. Um ponto importante para uma melhor usabilidade do sistema é tornar a interface mais intuitiva para o usuário. Isso impacta diretamente na aceitação do sistema, uma vez que interfaces pouco intuitivas deixam o usuário confuso e dificulta a utilização de todas as fucionalidades do sistema. O desafio encontra-se em extrair o máximo proveito dos recursos limitados de um dispositivo portátil e tornar seu uso mais intuitivo. Esses dispositivos possuem recursos gráficos limitados, e em conjunto com a dimensão da tela, tornam o trabalho da elaboração da interface mais criterioso, para que as funcionalidades possam ser acessadas facilmente. Em resumo, sugere-se o desenvolvimento das seguintes funcionalidades: 76 Implementação de acesso ao protocolo n-Trip[21], através de conexão http, a fim de possibilitar o uso do DGPS[5] ao sistema, aumentando a precisão final obtida no posicionamento em tempo real; Obtenção de coordenadas a partir de outros emissores de Rádio Freqüência (rede Wi-Fi, redes de telefonia celular, RFID, bluetooth, entre outros), a fim de criar sistemas de posicionamento independentes do GPS; Levantar os requisitos para o desenvolvimento de interfaces mais intuitivas e fáceis de usar para uso em dispositivos com telas de dimensões reduzidas e com processamento gráfico limitado; Desenvolver rotinas para a conversão dos principais arquivos de mapas digitais vetoriais para o padrão empregado no atual sistema; Permitir o uso de cartas digitais em formato matricial georreferenciado ou não e o seu georreferenciamento no próprio dispositivo móvel; Adicionar operadores espaciais básicos, tais como consulta a feições por suas relações topológicas, operadores de álgebra de mapas e ferramentas de análise espacial e de roteamento, além da possibilidade de configuração do sistema de coordenadas e de projeção desejados e a conseqüente necessidade de funções de conversão de sistemas; Possibilitar anexar arquivos de multimídia georreferenciados a mapas no dispositivo; Visualização de mapas digitais tridimensionais; Edição do arquivo de mapa corrente no dispositivo (atualmente em formato SVG) para a introdução, em campo, de feições e de atributos para fins de atualização cartográfica e para o emprego como ferramenta de reambulação (vertente civil da produção cartográfica) ou de reconhecimento (vertente de emprego militar); Demais aplicações que possam empregar ferramentas desenvolvidas neste projeto. 77 7. Referências Bibliográficas [1]CÂMARA, Gilberto; et al. Análise espacial e geoprocessamento. Disponível em:<http://www.dpi.inep.br/gilberto/livro/analise/cap.1-intro-pdf>. Acesso em: 10 jun. 2008. [2]Carto:Net. Cartographers on the net. Disponível em <http://www.carto.net>. Acesso em 13 out 2008. [3]COELHO, Pedro Alexandre. Programação em Java 2 (SDK 1.4 - J2SE - J2EE J2ME) - Curso Completo. ISBN. 9727223 [4]DevMedia Disponível em: http://www.devmedia.com.br/articles/viewcomp_ forprint.asp?comp=8585. Acesso em 12 fev 2009. [5]DGPS – Differential GPS Explained. Disponível em <http:// http://www.esri.com/news/arcuser/0103/differential1of2.html>. Acesso em 10 out 2009. [6]ESRI, 2000a, Managing ArcSDE Services, Redlands, C.A., ESRI. [7]ESRI, 2000b, Modelling Our World : The ESRI Guide to Geodatabase Design, Redlands, CA. [8]ESRI, 2005, Raster Data in ArcSDE, Redlands, U.S.A., ESRI [9]GONÇALVES, Nelson Veiga. Modelo de recuperação de informações temática interrelacionadas, contidas em imagens de satélites, baseado em descritores contextuais. 2001. 220f. Tese (Doutorado em Ciência da Informação). Universidade de Brasiléia; DF, 2001. [10]GEOSERVER PROJECT. Disponível em: <http://geoserver.org>. Acesso em 08 fev 2008. [11]GOOGLETM. Disponível em: <http://www.google.com.br> 78 [12]GOOGLE MAPS. Disponível em: <http://maps.google.com> [13]INSTITUTO NACIONAL DE PESQUISAS ESPACIAIS – INPE. Disponível em:< http://www.inpe.br/index.php>. Acesso em: 10 jun 2008. [14]INTERGRAPH. Disponível em <http://www.intergraph.com>. [15]INTERNATIONAL ORGANIZATION FOR STANDARDIZATION – ISO. Disponível em <http://www.iso.com>. [16] Leick, Alfred (1995). “GPS Satellite Surveying”. Second edition. John Willey & Sons, Inc New York. Leick, Alfred (2004). [17]LIMA, V.M.A. Terminologia, comunicação e representação documentária. 1998. 135f. Dissertação (Mestrado em Comunicação e Artes) – Universidade Federal de São Paulo, 1998. [18]MORETTI, Edmar. Apostila Arcview. Disponível em: <http://www.planeta.terra.com.br/informatica/edmarmoretti/ apostilaarcview/index.htm> Acesso em: 20 out 2005. [19]MUCHOW, J. W. Core J2me: Tecnologia e Midp [20]NERI, Sara Heloisa Alberto. A utilização das ferramentas de geoprocessamento para identificação de comunidades expostas a hepatite A nas áreas de ressacas dos municípios de Macapá e Santana/AP. 2004. 137f. Dissertação (mestrado em engenharia civil). Universidade Federal do Rio de Janeiro, 2004. [21]NTRIP Casters – Real Time GPS Data. Disponível em <http://www.ntrip.org>. Acesso em 20 jul 2009. [22]NSicom CrE-ME VM. Disponível em: <http://www.nsicom.com/Default.aspx ?tabid=138>. Acesso em 10 jan 2009. [23]OpenDGN. Disponível em:<http://www.opengeospatial.org/ogc>. Acesso em 8 jan 2009. 79 [24]Open Geospatial Consortium. Disponível em: <http://www.opengeospatial.org/ogc>. Acesso em 8 jan 2009. [25]PAREDES, Evaristo Atencio. Sistema de informação geográfica. São Paulo: Érica, 1994. [26]PLACE LAB. Disponível em: <http://www.placelab.org/>. Acesso em 24 jun 2009. [27]Java Sun MicroSystems. Disponível em: http://java.sun.com. Acesso em 8 jan 2009. [28] THOMÉ, Rogério. Interoperabilidade em geoprocessamento: conversão entre modelos conceituais de sistemas de informação geográfica e comparação com o padrão Open Gis. 1998.193f. Dissertação (Mestrado em Computação Aplicada) – Ministério da Ciência e Tecnologia, Instituto Nacional de Pesquisa Espaciais – INPE, São José dos Campos, 1998. [29]Tutorial sobre Bancos de. Dados Geográficos. GeoBrasil 2006. Instrutores:. Gilberto Ribeiro Queiroz. Karine Reis Ferreira Disponível em: < http:// www.dpi.inpe.br/TutorialBdGeo_GeoBrasil2006.pdf >. Acesso em: 10 fev 2009. [30]Tutorial J2ME Autor: Java Sun Disponível em: <http://java.sun.com/javame/index.jsp >. Acesso em: 10 fev 2009. [31]VIANNA, Pedro Costa Guedes; NEVES, Arinaldo Inácio das. Mapoteca Digital Humboldt. Scripta Nova. Revista Eletrônica de Geografia y Ciências Sociales. Barcelona, v. 8, n. 170, 01 agos. 2004. Disponível em: <http://www.ub.es./geocrit/sn170-64/htm>. Acesso em: 24 jan 2009. [32]VINHAS, L. F., K. R. , 2005. Descrição da TerraLib. In: CASANOVA, M. A. C., G.; DAVIS JR., C. A.; VINHAS, L.; QUEIROZ, G. R., ed., Bancos de Dados Geográficos: Curitiba, Editora MundoGeo, p. 397-439. [33]Wells ,Martin J. Java Me Game Programming, 2nd Edition [34]W3C. A little history of the World Wide Web. http://www.w3.org/History.html. [35]POSTGIS [on-line]. 2007. Disponível: <http://postgis.refractions.net/ 80 2005. documentation/>. Acesso em 8 out. 2007. [36]OPEN GEOSPATIAL CONSORTIUM (OGC) [on-line]. 2005. Disponível:http://www.opengeospatial.org/. Acesso em 20 mai. 2005. [37]POSTGRESQL [on-line]. 2007. Disponível em: <http://www.postgresql.org/>. Acesso em 8 out 2007. [38] Sistema de Posicionamento Global <http://pt.wikipedia.org/wiki/Sistema_de_Posicionamento_Global>. Acesso em 8 out 2007 81 8. Anexos 8.1. Anexo A Identificação dos usuários do sistema 1 - Quem são os usuários? Quem necessita desta aplicação? O usuário é caracterizado por qualquer pessoa comum que possua um celular dotado dos requisitos para executar a aplicação. Necessita da aplicação aqueles usuários, acima definidos, interessados na visualização de mapas e na navegação sobre os mesmos, desde que não tenham que pagar um valor para utilizá-los. 2 - Qual é sua formação educacional? Devido à necessidade de se possuir um celular que atenda os requisitos da aplicação, sendo este é acessível principalmente à pessoas que possuem recursos financeiros mais fartos, o usuário típico da aplicação possui, ou está cursando, nível superior. 3 - Quais são seus conhecimentos de computador, dispositivos móveis e tecnologia em geral? Os usuários acima definidos são entusiastas de tecnologia e possuem conhecimentos nível usuário intermediário com relação à computadores e dispositivos móveis. 4 - Eles estão familiarizados com este tipo de aplicação? Sim, normalmente já utilizam os aplicativos de geolocalização que já vem préinstalados em seus dispositivos móveis. 5 - Que plataformas eles utilizam hoje? 82 Utilizam softwares de mapas e geolocalização pré-instalados, assim como aplicativos proprietários da Garmin. 6- Em que contextos os usuários utilizarão a aplicação? Normalmente utilizarão a aplicação em viagens para lugares que não possuem mapas gratuitamente disponíveis ou necessitam de um mapa específico. 7 - Qual a sua expectativa com relação à usabilidade da aplicação? Desejam que a aplicação seja fácil de usar, mesmo para os usuários mais leigos, possua interface amigável, intuitiva e simples. 8 - Existem expectativas com relação ao desempenho? Existem poucas expectativas, principalmente nos momentos em que seja necessário geolocalização, tendo em vista que este serviço é inerentemente de acesso demorado e instável. 8.2. Anexo B Instalação do ambiente de desenvolvimento Passo 1 – Instalação do Java Development Kit (JDK) e da IDE Eclipse Deve-se obter as últimas versões dos softwares Java Development Kit (JDK) e da IDE Eclipse e prosseguir com suas instalações padrão. Estes softwares formam a base para o desenvolvimento Java. a. Download: Eclipse IDE for Java EE Developers http://www.eclipse.org/downloads/ b. Download: Java SE Development Kit (JDK) http://java.sun.com/javase/downloads/index.jsp Passo 2 – Instalação do Eclipse Mobile Tools for Java (MTJ) 83 Durante o curso deste projeto o software conhecido como EclipseME mudou seu nome para Eclipse, Eclipse Mobile Tools for Java (MTJ). Este software, um plugin do fornece uma extensão do framework Eclipse possibilitando o desenvolvimento para dispositovos móveis em Java (J2ME). a. Download: Mobile Tools for the Java Platform (MTJ) http://www.eclipse.org/dsdp/mtj/ b. Instalação: Basta descompactar o arquivo Zip para a pasta de instalação do Eclipse conforme a imagem a seguir: Passo 3 – Instalação do emulador S60 3rd Edition Feature Pack 2 v1.1 da Nokia Este emulador representa a plataforma de simulação e teste escolhida para os softwares em linguagem J2ME desenvolvidos neste projeto. a. Download: S60 3rd Edition Feature Pack 2 v1.1 http://www.forum.nokia.com/info/sw.nokia.com/id/ec866fab-4b76-49f6b5a5-af0631419e9c/S60_All_in_One_SDKs.html b. Instalação – Tela Inicial: Selecione “Yes” para a primeira pergunta. 84 c. Instalação – Tela de seleção do modo de instalação: Selecione “typical”. 85 d. Instalação – Tela de seleção da pasta de instalação: Selecione uma pasta para a instalação. 86 e. Instalação: Basta concluir a instalação do emulador. Passo 4 – Configuração do Eclipse a. Abra o Eclipse e selecione o menu Options, Preferences e abra a guia Java ME conforme a figura: 87 b. Clique em Import e na tela seguinte clique em Browse e selecione a pasta onde o emulador S60 foi instalado. c. Aperte OK e aguarda a importação. Em seguida cliquem em Refresh e marque Select All. 88 d. Clique em Finish e Ok para finalizar a configuração do emulador. Passo 5 – Obter o projeto através do repositório SVN a. Ainda no Eclipse, selecione o Menu File, Import e escolha Checkout Projects From SVN 89 b. Na tela a seguir selecione Create New Repository Location, Next e digite o endereço do servidor SVN onde o projeto está hospedado (http://mapime.googlecode.com/svn), clique em next e selecione o projeto. c. Finalize a importação. Passo 6 – Obter o conversor ShapeFile para SVG a. Basta obter os arquivos ogis2svg.exe e shp2pgsql.exe no endereço http://www.carto.net/papers/svg/utils/shp2svg/ e seguir as instruções de uso da página. 90 8.3. Anexo C No centro da arquitetura do sistema está o LocationMidlet, responsável por iniciar o sistema e por realizar o tratamento das interações do usuário com o mesmo. Funciona como a classe principal do sistema. Acoplado a ele existem quatro grandes módulos de funcionalidades do sistema, quais sejam: Instruments, responsável pela recepção das coordenadas utilizadas para locar a posição do dispositivo sobre mapa; Canvas, responsável por renderizar o mapa na tela do dispositivo; Server Connections, responsável pelas conexões sem-fio dispositivo – servidor; FileAccess, responsável pelo acesso ao sistema de arquivos do celular. O módulo Instruments possui apenas a recepção das coordenadas pela antena GPS disponível, através do módulo GPS, mas a arquitetura do sistema foi adequada de forma a acomodar novas tecnologias de posicionamento. O módulo serverConnections, atualmente, trabalha apenas com o protocolo de conexão Http. Esses quatro grandes módulos do sistema provêm todas as funcionalidades listadas na seção 4.4. A figura 35 ilustra a arquitetura do sistema. 91 Figura 35 - Diagrama de Classes 92 8.4. Anexo D Os mapas com os quais se trabalharam neste projeto foram obtidos com a extensão Shapefile e posteriormente deveriam ser convertidos para SVG. Entretanto, os mapas em SHP quando convertidos para SVG pelo servidor de mapas Geoserver, não inclui no arquivo SVG gerado os atributos das feições do mapa, conforme mostra a figura 39. Repare na figura 39, que o código do arquivo SVG apresenta apenas a geometria das feições representadas por <path d=” “>. Por outro lado, utilizando-se o conversor livre Shp2SVG da Carto.Net[2], obtivemos um SVG com todos os atributos das feições do mapa, mas seu DTD (svg11.dtd), conforme ilustra a figura 40, Document Type Definition, que consiste em definições que padronizam arquivos com extensão xml, não é compatível com o DTD aceito pelo JavaME (svg10.dtd). Ao utilizar o SVG do conversor da Carto.Net[2], o resultado foi a não representação correta das geometrias das feições, conforme mostra a figura 44. Constatou-se que o DTD utilizado pelo conversor da Carto.Net é voltado para a exibição de svgs em browsers. Para solucionar tal problema, desenvolveu-se um Parser próprio responsável por manipular esses dois arquivos SVGs gerados, um a partir do Geoserver e o outro a partir do conversor da Carto.Net[2], e extraíram-se a geometria das feições de um e os atributos do outro para compor um novo SVG, o qual fosse interpretado corretamente pelo dispositivo móvel, conforme ilustra a figura 41. Repare que o DTD desse arquivo continua como svg11.dtd, mas o correto seria a criação de um novo DTD que fornece tanto a geometria quantos os atributos em SVGs voltados para a exibição em dispositivos móveis. Importante observar que, até o momento da pesquisa, desconhece-se a existência de um DTD com as características necessárias para a utilização em dispositivos móveis. Segue o código do conversor próprio. 93 Figura 36 - Pré-Conversor A função do pré-conversor consiste em adequar o SVG oriundo do conversor da Carto.Net[2] para que seus atributos sejam lidos corretamente. O SVG da Carto.Net[2] representa os atributos da seguinte forma: A leitura correta leitura desses atributos pela função específica do JavaME exige que as feições do SVG sejam reescritas como: 94 O pré-conversor, justamente, insere modificações acessórias para a transformação do xml. A classe ConversorSVG é responsável pela captura dos atributos do SVG gerado a partir do conversor da Carto.Net[2] e da geometria das feições do SVG gerado pelo Geoserver e reuni-los em um novo SVG. Em seguida, temos a classe principal que ilustra a execução do Parser para o mapa de Brasília BSB_WGS84_UTM_Malha_Viaria.svg gerado pelo Geoserver a partir de um SHP. Este sofre modificações pelo pré-coversor e a saída, o b2.svg já está pronto para receber os atributos do bsb.svg, o SVG gerado pelo conversor da Carto.Net[2]. O resultado final é o b4.svg, o qual contém os atributos e as geometrias representados de forma interpretável pelo JavaME. 95 96 Figura 37 - Código Fonte Conversor SVG Figura 38 - Classe Principal 97 8.5. Anexo E Figura 39 - Extrato de um arquivo em formato SVG, referente ao mapa do bairro de Botafogo – RJ, gerado a partir do Geoserver Figura 40 - Extrato de um arquivo em formato SVG, referente ao mapa do bairro de Botafogo – RJ, gerado a partir do conversor da Carto.Net[2]. 98 Figura 41 - Extrato do arquivo SVG gerado a partir dos dois arquivos anteriores utilizando-se o conversor próprio Figura 42 - Mapa do bairro de Botafogo – RJ obtido pelo conversor próprio. 99 Figura 43 - Mapa do bairro do Centro - RJ obtido a partir do conversor próprio. Figura 44 - Mapa do bairro do Centro – RJ gerado a partir do conversor da Carto.Net[2]. 100