MATLAB -Google Maps Navigation Connection

Transcrição

MATLAB -Google Maps Navigation Connection
TUTORIAL
MATLAB -Google Maps Navigation Connection
ICARO BEZERRA VIANA
DAVID FERNANDO CASTILLO ZÚÑIGA
Instituto Tecnológico de Aeronáutica
São Jose dos Campos/São Paulo Brasil
Outubro-2010
1. Introdução
Esta tutorial esta enfocada num canal de comunicação entre Matlab e Google
Maps de modo de se apresentar em um mapa Google uma trajetória fornecida
pelo MATLAB. O Matlab deve enviar em intervalos de tempo regulares um
novo valor de coordenadas e esta coordenada deve ser assinalada no mapa.
2. Google Stactic Maps API (Generalidades)
Visão Geral
A Google Static Maps API retorna uma imagem (GIF, PNG ou JPEG) em
resposta a uma solicitação HTTP por meio de um URL. Para cada solicitação,
você pode especificar a localização do mapa, o tamanho da imagem, o nível de
zoom, o tipo do mapa e o posicionamento de marcadores opcionais em locais
do mapa.
Parâmetros de URL
Um URL da Google Static Maps API deve ter o seguinte formato:
http://maps.google.com/maps/api/staticmap?parameters
Alguns parâmetros são obrigatórios e outros são opcionais. Como é padrão em
URLs, todos os parâmetros são separados usando o caractere "e" comercial
(&). A Google Static Maps API define imagens de mapa usando os seguintes
parâmetros de URL:
A Google Static Maps API define imagens de mapa usando os seguintes
parâmetros de URL:
Parâmetros de localização:


Center (obrigatório, caso não haja marcadores) define o centro do mapa,
equidistante em relação a todas as suas bordas. Este parâmetro usa um
local como um par de {latitude,longitude} separado por vírgula (por
exemplo, "40.714728,-73.998672") ou um endereço de string (por
exemplo, "city hall, nova york, ny") que identifica um local exclusivo na
face da Terra.
Zoom (obrigatório caso não haja marcadores) define o nível de zoom do
mapa, que determina o nível de ampliação do mapa. Esse parâmetro
usa um valor numérico correspondente ao nível de zoom da região
desejada. Para obter mais informações, consulte níveis de zoom abaixo.
Parâmetros de mapa:

Size (obrigatório) define as dimensões retangulares da imagem de
mapa. Esse parâmetro usa uma string com o formato valuexvalue, na
qual os pixels horizontais são indicados antes dos pixels verticais. Por




exemplo, 500x400 define um mapa com 500 pixels de largura por 400
pixels de altura.
Format (opcional) define o formato da imagem resultante. Por padrão, a
API do Google Static Maps cria imagens PNG. Há vários formatos
possíveis, incluindo GIF, JPEG e PNG. O formato adotado depende de
como você pretende apresentar a imagem. JPEG normalmente
proporciona uma compactação maior, enquanto GIF e PNG
proporcionam mais detalhes.
Maptype (opcional) define o tipo de mapa a ser construído. Há vários
valores de tipo de mapa possíveis, incluindo roadmap, satellite, hybrid e
terrain.
Mobile (opcional) especifica se o mapa será exibido em um dispositivo
móvel. Os valores válidos são true ou false. Os mapas exibidos em
dispositivos móveis podem usar conjuntos de blocos diferentes,
otimizados para esses dispositivos.
Language (opcional) define o idioma a ser usado para a exibição de
marcadores nos blocos do mapa. Esse parâmetro só é compatível com
blocos de alguns países. Se o idioma específico solicitado não for
suportado pelo conjunto de blocos, o idioma padrão desse conjunto será
usado.
Parâmetros de recurso:



Markers (opcional) define um ou mais marcadores a serem anexados à
imagem em localizações especificadas. Esse parâmetro usa uma única
definição de marcador com parâmetros separados pelo caractere barra
(|). Diversos marcadores podem ser colocados no mesmo parâmetro
markers contanto que exibam o mesmo estilo. Você pode adicionar
outros marcadores com estilos diferentes adicionando outros parâmetros
markers. Se você fornecer marcadores para um mapa, não será
necessário especificar os parâmetros center e zoom, normalmente
obrigatórios.
Path (opcional) define um único caminho com dois ou mais pontos
conectados que serão colocados sobre a imagem nos locais
especificados. Esse parâmetro usa uma string de definições de ponto
separadas pelo caractere de barra vertical (|). Você pode fornecer
caminhos adicionais adicionando outros parâmetros path. Se você
fornecer um caminho para um mapa, não será necessário especificar os
parâmetros center e zoom, normalmente obrigatórios. Para obter mais
informações, consulte Caminhos do mapa estático abaixo.
Visible (opcional) especifica uma ou mais localizações que devem
permanecer visíveis no mapa, embora nenhum marcador ou outros
indicadores serão exibidos. Use esse parâmetro para se certificar de que
determinados recursos ou localizações de mapa sejam exibidos no
mapa estático.
Parâmetros de relatório:

Sensor (obrigatório) especifica se o aplicativo que está solicitando o
mapa estático está usando um sensor para determinar a localização do
usuário.
Níveis de zoom
Os mapas do Google Maps contam com um inteiro "zoom level" que define a
resolução da visualização atual. Níveis de zoom entre 0 (o mais baixo, no qual
todo o mundo pode ser visto em um só mapa) e 21+ (chega até construções
individuais) são possíveis na visualização padrão dos mapas.
O Google Maps define o nível de zoom como 0 para abranger toda a Terra.
Cada nível de zoom subsequente dobra a precisão nas dimensões horizontal e
vertical. Se obten por tanto uns graus de resolução para cada nível de zoom de
+-180/2n.
Observação: Nem todos os níveis de zoom podem ser aplicados a em todos os
locais na Terra. Os níveis de zoom variam dependendo do local, pois os dados
em algumas partes do globo são mais granulares do que em outros locais. Se
você enviar uma solicitação de um nível de zoom no qual não haja blocos de
mapa, a API do Google Static Maps retornará uma imagem em branco no
lugar.
Tamanhos de imagem
As imagens podem ser recuperadas com tamanhos de até 640 por 640 pixels.
O parâmetro size usa uma string com dois valores separados pelo caractere x.
640x640 é o maior tamanho de imagem permitido.
Tipos de mapa
A Google Static Maps API cria mapas em diversos formatos, listados abaixo:




roadmap (padrão) especifica uma imagem de mapa padrão, semelhante
às exibidas normalmente no site do Google Maps. Se nenhum valor for
especificado para maptype, a Google Static Maps API mostrará blocos
de roadmap por padrão.
satellite especifica uma imagem de satélite.
terrain especifica uma imagem de mapa de relevo físico, mostrando
terreno e vegetação.
hybrid especifica uma combinação de imagens de satélite e de mapa,
mostrando uma camada transparente das principais ruas e nomes de
lugares na imagem de satélite.
Latitudes e longitudes
Latitudes e longitudes são definidas por numerais separados por vírgula em
uma string de texto, com uma precisão de até 6 casas decimais. Por exemplo,
"40.714728,-73.998672" é um valor de geocódigo válido. A precisão posterior a
6 casas decimais é ignorada.
Os valores de longitude são baseados na distância do ponto até Greenwich,
Inglaterra, onde está localizado o primeiro meridiano. Os valores de latitude e
longitude devem corresponder a um local válido na face da Terra. As latitudes
podem assumir qualquer valor entre -90 e 90 enquanto os valores de longitude
podem assumir qualquer valor entre -180 e 180. Se você especificar um valor
de latitude ou longitude inválido, a sua solicitação será rejeitada como uma
solicitação inválida.
Para informação detalhada consultar a referencia [1].
3. Conexão com MATLAB
Para a Google Maps desde Matlab é necessário adquirir uma chave de acesso
que permita a atualização dos mapas sem restrições. Para isso é preciso
estabelecer o IP do computador em forma de url (http://192. 168.0.182) e colar
ele na pagina http://code.google.com/apis/maps/signup.html onde poderá se
obter a chave.
Importação das imagens
A parte encarregada da importação dos mapas esta conteúda nas seguintes
líneas onde se ontem primeiro uma imagem em formato “gif e depois esta é
transformada e mostrada como uma imagem em formato verdadeiro [2]. ’
[I map]=imread(address,'gif');
RGB=ind2rgb(I,map);
imshow(RGB);
Para atualização das imagens as anteriores linhas são as fundamentais sendo
acompanhadas das variçoes dos parâmetros no URL.Pode-se observar na
imagem 1 um mapa centrado na Cidade de Cali.
Transformação de coordenadas
Para ter uma correlação entre as coordenadas de vôo e as coordenadas da
tela da imagem é necessário fazer uma serie de transformações:

Pixeles- Unitário central: as coordenadas originais da imagem importada
têm a origem no extremo superior esquerdo ate alcançar à máxima
resolução de pixels no extremo inferior direito. Este sistema de
coordenadas é trocado por um sistema centrado na imagem de lado
unitário, este sistema ainda é de mão esquerda (y-).

Coordenadas espaciais-Unitario: Para fazer compatíveis os sistemas se
subtrai as coordenadas medias das coordenadas de entrada para
centralizar ele. Essas coordenadas são dividas sobre o lado de
resolução correspondente ao zoom para normalização unitária.
Imagem 1. Mapa Centrado na cidade de Cali.
O fluxograma da ferramenta
FLUJOGRAMA
3. Trajetória de Prova
Para ilustrar o processo da ferramenta de conexão se tomou como dados de entrada as
informações de coordenadas apresentadas na tabela 1. Esta trajetória fechada envolve 12
pontos que passam pelos países da Colômbia, Venezuela e Brasil.
Latitude
3,454205
4,679360
7,941732
10,513738
8,435425
5,716566
2,817955
0,465815
-3,048365
-4,801985
-4,208369
0,817355
3,454205
Longitude
-76.556397
-74.106447
-72.517091
-66.987306
-62.691651
-62.014161
-60.714112
-58.901369
-60.043947
-64.614260
-69.942627
-72.963869
-76.556397
Localização
Cali
Bogotá
Cucuta
Caracas
Ciudad Guayana
Boavista
Manaus
Leticia
La Macarena
Cali
Tabela 1. Coordenadas da trajetória de prova
Os pontos da trajetória foram assinalados de tempo em tempo no mapa como
se apresenta na imagem 3.
Imagem 3. Trajetória de prova fechada.
Referencias
[1] Static Maps API V2 Developer Guide, (http://code.google.com/intl/es/apis/maps/
documentation/staticmaps/#Locations)
[2] Alireza Fasih, 2008. Google Maps Loader. Matlab Files.
[3] Matlab to Google Earth.
Código Base desenvolvido para a conexão Matlab-Google Earth
clc, clear all
coor=[3.454205,-76.556397;%cali
4.679360,-74.106447;%bogota
7.941732,-72.517091;%cucuta
10.513738,-66.987306;%caracas
8.435425,-62.691651;
5.716566,-62.014161;
2.817955,-60.714112;%boavista
0.465815,-58.901369;
-3.048365,-60.043947;%manaus
-4.801985,-64.614260;
-4.208369,-69.942627;%leticia
0.817355,-72.963869;%parrque nacional ....
3.454205,-76.556397];%cali % coordenadas do voo de prova
cxy=0.5*(max(coor)+min(coor))%Ponto cental dos dados de entrada
lado=0.5*max(max(coor)-min(coor))%Lado de resoluçao dos dados de
entrada(faixa)
coordez=[coor(:,1)-cxy(1,1),coor(:,2)-cxy(1,2)]
zoom=4;%Deve ser escolhido para obter un grau de resolução maior ao
%lado
zd=180/(2^(zoom))%Graus de resolução para o zoom correspondente
cd=coordez./zd%coordenadas normalizdas pelo zoom correspondente
key='ABQIAAAAteHND9YP6ctZEpCJsGZpWxRQWo9sWXbVvdU2wQSDpuKctuXhBQYpf8Mm2875572Jwd2ge0XshBKBg';
%chave a ser pedida a Google maps
pos='http://maps.google.com/staticmap?center=';
address=strcat(pos,num2str(cxy(1)),',',num2str(cxy(2)),'&zoom=',...
num2str(zoom+1),'&size=512x512&key=',key)
[I map]=imread(address,'gif');
% importa a imagem do endereço em formato gif
RGB=ind2rgb(I,map);
% converte a imagem em cores verdadeiros(vermelho, verde,azul)
imshow(RGB,'xdata',[-1 1],'ydata',[-1 1]);
%Loop para geração da trajetoria
for i=1:(size(coor,1)-1)
hold on
plot([cd(i,2) (cd(i+1,2))] ,[-cd(i,1) (-cd(i+1,1))],'-rd','LineWidth',4)
pause(3.5)%Intervalo de tempo regular
end

Documentos relacionados

Produzindo Mapas com Google Earth

Produzindo Mapas com Google Earth Para  que  serve?   Pode   ser   usado   simplesmente   como   um   gerador   de   mapas   bidimensionais   e   imagens   de   satélite  ou  como  um  simula...

Leia mais

Manual de Tecnologia

Manual de Tecnologia jargão da internet significa dizer que são mais “leves” –, outros são mais modernos, e outros ainda considerados mais seguros, por exemplo, para realizar procedimentos bancários. Também varia a qua...

Leia mais