Restaurantes de Portugal

Como construir um ficheiro de PDIs ?

Como funciona o GPS ?

Restaurantes de Portugal

Topo

Os ficheiros aqui disponibilizados começaram por ser uma iniciativa pessoal neste site mas são hoje o resultado da contribuição de inúmeros colaboradores do PortalPPC.

Restaurantes

Última versão: v96 04/12/2011

Download dos Restaurantes de Portugal
(será redireccionado para o site do PortalPPC)

Ver os Restaurantes de Portugal

RSS

Ficheiros de PDIs
  .asc "Generic ASCII" - (Navigon, Via Michelin)
  .csv (Garmin/Route66 Nav 7)
  .kml (iGO8, Google Earth, NDrive v3)
  .ov2 (TomTom/CoPilot 6)
 Ícones
  .bmp (TomTom, Route66 Nav7, etc)
  .png (NDrive)
   

 

 

Como construir um ficheiro de PDIs

Topo

O objectivo destas instruções é ajudar a simplificar o trabalho de quem lida com dezenas ou mesmo centenas de registos num ficheiro de PDIs.
A ideia é usar-se como ficheiro original, não um OV2 que é muito limitado para este efeito, mas sim um formato - que apesar de não ser uma verdadeira "base de dados" - consegue comportar-se como tal para todos os efeitos necessários. Estou a falar do Excel.

Para manter um ficheiro (p.e. de Restaurantes) pode usar-se um XLS em que a primeira worksheet (a Sheet1) é a "base de dados" propriamente dita, contendo TODAS as informações (colunas) que queiramos (como p.e. a data de encerramento de cada restaurante). É muitíssimo fácil, por exemplo, ordenar um ficheiro (para o Excel um ficheiro acaba na última linha em que a coluna A esteja preenchida)... ou construir informação concatenando numa célula o conteúdo de N outras células... ou seleccionar linhas (registos)...

Cada coluna da Sheet1 pode ser dedicada a uma informação diferente incluindo assim virtualmente TUDO o que seja entendido como relevante acerca de um restaurante. Neste exemplo as colunas serão as seguintes:

A   nome        Nome do restaurante, sem prefixos
B   pre         Prefixo (O, A, Os, As)
C   gps         c=conhecido, d=desconhecido, a=aproximado
D   lon         longitude
E   lat         latitude
F   classif     classificação pessoal
G   bcbm        classificação do BoaCamaBoaMesa (Guia do Expresso)
H   repsol      classificação do Guia Repsol
I   preço       preço médio
J   telefone    telefone
K   encerra     dias (ou meses) de encerramento
L   morada
M   localidade
N   concelho
(*)
O   distrito
(*)

(*) Para determinar o Concelho e/ou o Distrito pode usar-se a informação mais fidedigna que pode haver: a dos próprios CTT (têm aqui um ZIP para download com um XLS lá dentro; tem 8MB !).

A segunda worksheet (cujo nome tem que ser obrigatoriamente "Points") contém as colunas necessárias para se criar um OV2. Para isto, eu uso o freeware   "POI Converter" (porque o "POIEdit" não o consegue e o "GPS Babel" também não.)

Na "Points", os nomes das colunas (e a respectiva ordem) têm que ser EXACTAMENTE assim:

OS Grid Reference, Latitude, Longitude, Name, Information, Name 2, Date and Time, Altitude, Proximity, Symbol Name, Route or Track name, Colour name

As únicas que são usadas num OV2 são as Latitude, Longitude, Name.
E destas, a única que podemos "trabalhar" à nossa vontade é a Name (que no PoiEdit se chama "Description").
Neste meu exemplo, concatenando o nome do restaurante, o prefixo (separado do nome por uma vírgula), o telefone e a data de encerramento. A fórmula mais simples para isto é:

=Sheet1!A2 & ", " & Sheet1!B2 & " >"&Sheet1!J2 & " ["&Sheet1!K2 & "]"

Mas como assim a vírgula aparece sempre, a seguir ao nome, vamos pô-la só se (IF) houver um prefixo no nome do restaurante, perguntando assim:

IF(Sheet1!B2="";"";", ")

Ou seja, a fórmula mais perfeita (como está no exemplo anexo) fica assim:

=Sheet1!A2 & IF(Sheet1!B2="";"";", ") & Sheet1!B2 & " >"&Sheet1!J2 & " ["&Sheet1!K2 & "]"

O que dá (mostrando apenas as 3 colunas relevantes) este resultado:

poi_xls1.gif (10280 bytes)

Nota: Os "#VALUE", "0,00000" e "> []" também podiam ser "limpos" usando mais IFs nas fórmulas mas não é preciso complicar. O "POI Converter" vai desprezar os 7 registos que não interessam e fazer o seu trabalho na perfeição. Neste caso vai ler os 10 registos acima, desprezar 7, e escrever no nosso ficheiro OV2 apenas 3 (os que têm valores nas coordenadas geográficas).

poi_xls2.gif (2892 bytes)

E aqui aparece um "problema". A Description está truncada a 32 caracteres. No Help do "POI Converter" diz: "Names using more than 32 characters may not be readable in Map mode in TomTom Navigator."
Mas num teste que fiz com o TTN5 não tive problemas em visualizar nomes com 60 caracteres.
Vamos alterar este default, assim:

poi_xls3.gif (6517 bytes)

poi_xls4.gif (4810 bytes)


Nota: É preciso alterar SEMPRE este default porque infelizmente ele não fica guardado!

E o novo resultado:

poi_xls5.gif (3037 bytes)

E pronto! Está feito!
Quem gostar de outras informações na descrição de cada PDI só tem que as acrescentar na fórmula atrás. E eventualmente criar novas colunas na Sheet1...

Se quiser experimentar você mesmo com este exemplo faça o download   deste ZIP (contendo o XLS e o OV2 resultante): manut_pois.zip

Como funciona o GPS ?

Topo

O que é o GPS ?

O sistema GPS (Global Positioning System) é composto por 24 satélites activos e 3 de reserva colocados numa "órbita alta", a 20.200 km de altitude, e distribuídos por 6 planos orbitais para que qualquer ponto da superfície da Terra esteja, em qualquer momento, "em linha de vista" com pelo menos 4 satélites.

Imagem: Garmin

Inicialmente criado com intuitos exclusivamente militares e gerido pelo Departamento de Defesa do Estados Unidos foi definitivamente aberto à utilização pública no ano 2000. E a partir dessa data ficou disponível para todos a capacidade de determinação da posição geográfica e de navegação entre quaisquer dois pontos da superfície terrestre.

Este sistema, bem como os seus equivalentes, o europeu Galileu e o russo Glonass, recorrem a um processo geométrico de trilateração (e não "triangulação" como é frequente ler-se, erradamente, em vários documentos, livros, etc. Com efeito, este processo mede lados, as distâncias do objecto a cada um dos satélites e não os ângulos entre si. Não se procede a qualquer medida dos ângulos!)

Desde Agosto de 2000 que, graças à introdução do WAAS (Wide-Area Augmentation System) que a precisão do GPS é inferior a 2 metros. E com o recurso ao DGPS (Differential GPS), utilizando emissores fixos, na superfície terrestre, essa precisão pode atingir 1 centímetro!

O sinal emitido pelos satélites para utilização civil, no canal primário L1, é transportado por uma onda de rádio na frequência de 1575.42 MHz.

Como é medida a distância do receptor aos satélites do GPS?

Tudo se resume a medir o tempo que o sinal emitido por cada satélite demora a atingir a nossa antena receptora. A velocidade a que este sinal se propaga pelo espaço vazio é, obviamente, de 300.000 km/s. Depois é só multiplicar esta velocidade pelo tempo medido e obtemos a distância.

Então qual é o problema?

O problema é a enorme precisão exigida para se poder medir o tempo decorrido desde a emissão do sinal até à sua chegada ao receptor. É que estamos a falar da velocidade da luz ! E se o sinal viaja a 300 milhões de metros por segundo, então, para obtermos medições de distâncias com a precisão de 1 metro é preciso conseguirmos medir o tempo com uma precisão na ordem dos 0,000000003 segundos (entre 3 e 4 nanossegundos)!

Para medir diferenças temporais dessa ordem é necessário que todos os intervenientes, os satélites e os receptores, disponham de relógios extremamente precisos. Os satélites cumprem esse requisito pois possuem relógios atómicos caríssimos, mas os nossos receptores dispõem apenas de vulgares relógios de quartzo. Para ultrapassar esse inconveniente o sistema GPS recorre a um artifício engenhoso: faz com que o relógio do nosso receptor esteja constantemente a ser actualizado com a hora atómica transmitida pelos satélites do sistema GPS. De facto, o nosso PDA, telemóvel, ou qualquer outro equipamento que esteja ligado a uma antena de GPS apresenta a hora absolutamente correcta. Nenhum relógio de pulso, por mais caro que seja, poderá competir com a precisão deste relógio atómico em que o nosso PDA se transformou!

De um satélite que esteja colocado exactamente por cima da nossa cabeça - ou seja, à mínima distância possível de 20.200km- o sinal demorará cerca de 0,0673 segundos (20.200/300.000) a chegar-nos. O sinal de um segundo satélite, colocado perto do horizonte terrestre à máxima distância (teórica) possível para estar em "linha de vista", ou seja, a cerca de 25.800km de distância de nós, demorará, em teoria, cerca de 0,0860s (25.800/300.000) a atingir o nosso receptor.

No entanto estes são os casos extremos. Os 4 satélites necessários estarão necessariamente em posições intermédias destas e mais próximas entre si. Considerando um exemplo em que um satélite esteja a 45º do horizonte estará à distância de cerca de 21.683 km e o sinal demorará 0,0723s até chegar ao nosso receptor.

Saber a que distância estamos de cada satélite chega para sabermos a nossa posição?

Claro que não. Primeiro é preciso sabermos onde está cada satélite. Como podemos saber isso? São os próprios satélites que nos dizem. Cada um deles comunica ao nosso receptor, um almanaque com a sua posição no espaço em cada momento para podemos determinar a nossa própria posição.

Quantos satélites são necessários para determinar a nossa posição?

Em teoria, três! Mas leu algures que são necessários quatro? Bom, na prática são usados quatro. Vejamos melhor porquê...

Com um satélite do qual conhecemos a distância a que está de nós, apenas nos é possível dizer que a nossa localização é um ponto qualquer sobre uma esfera imaginária com raio igual a essa distância:

Ainda sabemos muito pouco sobre a nossa localização. As possibilidades são em número infinito, distribuídas por uma superfície esférica, em 3 dimensões espaciais.

Mas se conhecermos também a distância a que estamos de um segundo satélite, já nos é possível afirmar que a nossa posição é um ponto qualquer sobre a circunferência imaginária que resulta da intersecção das duas esferas:

Agora as possibilidades, embora sejam ainda em número infinito, já estão limitadas ao plano da circunferência, em duas dimensões.

Com um terceiro satélite, a intersecção desta última esfera com a circunferência reduz a ambiguidade sobre a nossa localização a 2 pontos. Mas como um dos pontos pode ser eliminado pela simples razão de se encontrar no espaço e nós sabemos estar na superfície da Terra...

...está encontrada a nossa posição

De facto o terceiro satélite é suficiente para determinar o ponto onde nos encontramos. Mas então...

Para que serve o quarto satélite ?

Primeiro que tudo: dispensa a utilização do raciocínio atrás descrito. O quarto satélite permite "escolher" um dos 2 pontos anteriormente determinados e sabermos, além da latitude e da longitude (duas dimensões), a altitude exacta da nossa localização.

Mas, mais importante: permite verificar se existe o essencial sincronismo de todos os relógios.

De facto, se as medidas que o nosso receptor fez das distâncias forem perfeitas - com o seu relógio perfeitamente sincronizado com os dos satélites - então as 4 esferas intersectam-se num único ponto. Mas se as medidas forem imperfeitas, isso não acontecerá.

Então o receptor, alertado para o erro pela quarta medição, aplicará o factor de correcção necessário para que as 4 esferas se intersectem num único ponto.

E é nesta altura que passamos a ter na nossa mão, como bónus, um relógio tão preciso quanto os mais caros relógios atómicos!

Como são calculadas as distâncias ?

Como se viu antes, a determinação da nossa posição depende de um simples método geométrico de trilateração que se resume à medição das distâncias até três ou quatro pontos de referência, cuja posição é conhecida, os satélites do sistema GPS.

Como não é possível esticar uma fita métrica desde o nossa posição na Terra até cada um dos satélites, é necessário determinar a distância doutra forma. No caso vertente, medindo o tempo que um sinal - de velocidade conhecida - demora a chegar até nós e aplicando a trivial fórmula:

ou seja,

em que, v = velocidade, e = espaço, t = tempo

A distância e, entre o nosso receptor e cada um dos satélites, é a incógnita que se pretende determinar. A velocidade v, será neste caso a da luz, constante e conhecida. Mas o tempo t, decorrido entre a "partida" e a "chegada" do sinal, terá que ser calculado pelo nosso receptor de GPS. E é precisamente na medição precisa deste lapso de tempo que reside uma das dificuldades práticas da implementação do GPS dado que ela é afectada por diversos factores que a podem falsear !

Nota: Adaptando esta fórmula ao caso específico do GPS temos Pr = c(TS-TR) o chamado pseudorange que dá uma estimativa aproximada da distância a que o satélite se encontra do receptor.

O que pode provocar imperfeição das medições ?

Existem vários factores que podem afectar a exactidão das medições e, consequentemente, a determinação da posição precisa do receptor:
 

Ionosfera até 5m
Dados da Efeméride até 2,5m
Desvio dos relógios até 2m
Reflexos até 1m
Troposfera até 0,5m

A velocidade (c) de propagação do sinal é diminuída ao atravessar a atmosfera. As duas camadas com interferência na forma de propagação da radiação electromagnética são a ionosfera - por ser composta por átomos ionizados pela radiação solar - e a troposfera - por conter alto teor de humidade. Este efeito é imprevisível e é tanto maior quanto mais próximo o satélite estiver do horizonte. É usualmente corrigido pela aplicação de modelos, pela utilização de duas frequências diferentes (L1 e L2), etc.

A desactualização temporária dos dados transmitidos, uma vez que os almanaques são emitidos pelos satélites apenas a cada 12 minutos e meio e as efemérides a cada 30 segundos, também pode diminuir a precisão do GPS. O mesmo acontece devido aos eventuais e imprevisíveis reflexos do sinal provocados por edifícios altos, pela orografia do terreno circundante, etc.

Outro dos factores que afectam a exactidão das medições é o efeito relativístico da dilatação do tempo, previsto pela Teoria da Relatividade de Einstein.
E este é aquele cuja correcção é, na minha opinião, de longe a mais interessante. Que mais não seja porque, ao contrário do que acontece com os outros factores, neste caso o erro provocado é acumulável; e se não fosse corrigido provocaria erros absolutamente inaceitáveis tornando o GPS completamente inútil mesmo para a menos exigente das utilizações.

Efectivamente, a Teoria da Relatividade Restrita (TRR), prevê que um relógio em movimento em relação a um sistema de referência - a Terra, neste caso - funcione mais lentamente que um relógio (absolutamente idêntico) colocado na superfície da Terra e que essa diferença será tanto maior quanto maior for a velocidade relativa do relógio em movimento.

Nota importante: Tanto o relógio em movimento como o relógio "em repouso" apresentam medições correctas do tempo... no seu próprio sistema de referência. Um hipotético astronauta, a bordo de um satélite do sistema GPS veria a sua vida decorrer a um ritmo absolutamente normal. Ele demoraria exactamente o mesmo tempo a ler um livro que levaria na Terra. O seu tempo de vida seria o mesmo. O tempo medido por um relógio em movimento só é mais lento do ponto de vista de um observador noutro sistema inercial, que usa o seu próprio relógio como referência para a comparação.

Por seu lado, a Teoria da Relatividade Geral (TRG) prevê que um relógio colocado sob a influência de um campo gravitacional (como o da Terra) funcione mais lentamente que um outro relógio colocado fora da influência desse campo.

Ou seja: o efeito da "dilatação cinética do tempo" prevista pela TRR tende a fazer o relógio de um satélite GPS mais lento que o relógio do nosso receptor, mas por outro lado, o efeito da "dilatação gravítica do tempo" tenderá a fazê-lo mais rápido que o do nosso receptor. O efeito conjunto faz com que o relógio do satélite se atrase, em relação ao "tempo da Terra" cerca de 38ms (milissegundos) por dia.

Se esta diferença não fosse levada em conta, a Relatividade faria - considerando apenas o rápido movimento dos satélites e a acção da gravidade - com que fosse acumulado um erro de posicionamento do GPS da ordem dos 11.524 metros por dia (c x 38ms).
Um erro absolutamente inaceitável
!!!

Para ver uma demonstração matemática, mais pormenorizada, clique aqui

Como é determinada a posição do receptor ?

Uma vez conhecidas as distâncias a cada um dos satélites há que calcular as coordenadas tridimensionais da posição do nosso receptor: XR, YR e ZR.

Para isso há que recorrer novamente... ao Teorema de Pitágoras e ao maravilhoso e polivalente triângulo rectângulo!

Como se pode constatar em alguns sites dedicados ao tema do GPS, a fórmula utilizada na determinação da posição poderá ser semelhante a esta:

c(TS-TR)  = ((XS - XR)2 + (YS - YR)2 + (ZS - ZR)2)1/2

 

em que c = velocidade da luz,TS = tempo da emissão, TR = tempo da recepção,
XS, YS, ZS = posição do satélite, e XR, YR, ZR = posição do receptor.
Nota: o produto c(TS-TR) constitui o chamado pseudorange.

mas o que normalmente não se explica é o porquê desta fórmula. Vamos ver...

Os parâmetros conhecidos são TS (a hora de emissão do sinal), XS, YS, ZS (a posição do satélite) e, claro, a velocidade do sinal c (299792,458 km/s).

As incógnitas são quatro : XR, YR, ZR (a posição do receptor) e TR (a hora de recepção do sinal).

Quatro incógnitas => quatro equações = > quatro satélites

Primeiro que tudo há que estabelecer um sistema de coordenadas cartesianas. O GPS utiliza um sistema ECEF (Earth Centered - Earth Fixed) - mais concretamente o WGS-84 - que, como o próprio nome indica, considera que o sistema de coordenadas tem origem no centro de massa da Terra e, estando-lhe fixo, roda com ela.

No ECEF, o eixo "vertical" (o eixo de rotação da Terra) é o dos ZZ, o eixo dos XX é a interseccção do plano do meridiano principal com o plano do Equador

Para aumentar a clareza da imagem vamos "tirar a Terra da frente" e projectar a posição do satélite e do receptor, por agora apenas em 2D, no plano XY (rodando os eixos apenas para manter a orientação, mais familiar, de um sistema cartesiano a duas dimensões: com o eixo dos YY na vertical e dos XX na horizontal).

E agora vamos utilizar o Teorema de Pitágoras para determinar a distância h, no plano XY, entre o satélite S e o receptor R.

ou seja: h = ((XS - XR)2 + (YS - YR)2 )1/2

E o passo seguinte - uma nova aplicação do mesmo Teorema - permite-nos determinar a distância SR.
Vendo "por cima", para ficar mais claro...

 

 

ou seja: SR = (h2 + (ZS - ZR)2)1/2

donde que

SR  = ((XS - XR)2 + (YS - YR)2 + (ZS - ZR)2)1/2

ou, como acima:

c(TS-TR)  = ((XS - XR)2 + (YS - YR)2 + (ZS - ZR)2)1/2

 

É evidente que existem outros cálculos matemáticos mais complexos envolvidos na implementação prática do GPS, nomeadamente no que diz respeito aos modelos a aplicar p.e. para corrigir os efeitos do atravessamento da troposfera e da ionosfera, à conversão de coordenadas entre ECEF e ECI, etc, etc.

Os cálculos e raciocínios atrás descritos permitem no entanto ter-se noção dos fundamentos trigonométricos que servem de base a toda a implementação do GPS ou de qualquer outro sistema semelhante.

O que significa o termo DOP?

O termo DOP, ou “Diluição da Precisão”, é um factor que representa numericamente a qualidade da configuração geométrica dos satélites “visíveis”. Se estiverem muito juntos o DOP será mau (valor alto), se estiverem muito afastados o DOP será bom (valor baixo).

A designação DOP é genérica e constitui o resultado da combinação de alguns factores mais específicos:

PDOP (Position DOP) = HDOP (Horizontal DOP) “mais” VDOP (Vertical DOP)

GDOP (Geometric DOP) = PDOP “mais” TDOP (Time DOP)

Mais precisamente:

PDOP= (HDOP2+VDOP2)1/2

GDOP= (PDOP2+TDOP2)1/2

Observação: Lá vem outra vez o omnipresente Teorema de Pitágoras! ...

A configuração geométrica ideal (mas muito pouco provável) será aquela em que os satélites façam, com o receptor no vértice, ângulos de 90º.

Os receptores de GPS escolhem, entre os satélites “visíveis”, aqueles cuja configuração geométrica relativa apresente o melhor DOP. Daí que, quantos mais satélites estiverem em “linha de vista” com o nosso receptor, mais probabilidades haja de obter uma boa precisão.

Um valor inferior a 4 para o HDOP é considerado bom; superior a 8 é mau. Os valores do PDOP, HDOP e VDOP são reportados pelos receptores na mensagem NMEA $GPGSA:

$GPGSA,Smode,FS,SV1,SV2,...,SV12,PDOP,HDOP,VDOP*<CS><CR><LF>

Explicação dos parâmetros:

Smode 2D/3D Switching mode (A = Automatic Switching or M = Manual/fixed)
FS Fix Status (0 = no Fix, 1 = standard GPS, or 2 = differential GPS)
SV1...12 PRNs of Satellites in use, null for unused fields
PDOP 3D Position Dilution of Precision (00.0 to 99.9)
HDOP 2D Horizontal Dilution of Precision (00.0 to 99.9)
VDOP Vertical Dilution of Precision (00.0 to 99.9)

As coordenadas geográficas e a precisão do GPS

Na utilização prática de dispositivos e programas de navegação por GPS utiliza-se um de dois formatos possíveis para a indicação das coordenadas de longitude e latitude. Por exemplo:

38,123456º (graus com decimais)

38º 07' 24,44" (graus, minutos e segundos)

Estes dois valores representam praticamente a mesma latitude. E em termos práticos são bastante mais precisos que o necessário para a navegação por GPS praticada pela maioria dos utilizadores: localizar um Ponto de Interesse ou viajar até um destino, de automóvel ou a pé.

Um valor como o primeiro, com 6 decimais de grau, tem uma precisão (teórica, puramente geométrica), se estivermos a falar de latitude, de cerca de... 11 cm (onze centímetros!). Não precisamos de tanto. Normalmente usam-se "apenas" 5 decimais de grau, que apesar de ter uma precisão dez vezes inferior, de 111cm (1,11m) é mais que suficiente para viajarmos p.e. até um restaurante ou qualquer outro destino de viajem.

Um valor em graus+minutos+segundos (com duas decimais nos segundos, como é possível encontrar normalmente nos programas de navegação) tem uma precisão equivalente (em latitude) a 0,000003º, ou seja, de 33 cm. Este formato é menos prático de ler, de escrever e de usar.

Repararam que eu salientei atrás que os valores da precisão se referiam à latitude? Pois é. É que em relação à longitude as coisas mudam um pouco porque...

...a distância correspondente a uma medida de longitude varia...

... com a latitude!

Se estivermos a falar de longitude, então um valor com 5 decimais de grau tem uma precisão de cerca de 86cm (em vez de 111cm).

Vejam a figura abaixo que mostra como 15º de longitude no Equador correspondem a 1.669,792km enquanto que à latitude de Lisboa (38ºN) já só representam 1.314km. E muito perto do Pólo Norte (ou Sul), até mesmo 360º de longitude podem equivaler a apenas alguns centímetros.

Mas 15º de latitude são sempre equivalentes a 1.664,194km, independentemente da zona do globo considerada.

Notas: Os valores acima apresentados foram calculados com base nos dados adoptados no sistema WGS84 (utilizados na navegação por GPS):
Raio equatorial da Terra: 6378,137 km
Raio polar da Terra: 6356,752 km