Serviço web como tabela de consulta para refinar dados de GPS

Os dados de altitude registados por dispositivos GPS são notoriamente imprecisos, especialmente em terrenos acidentados, como o exemplo do Vale do Rio Russo mencionado no nosso artigo anterior.

O perfil de altitude final, extraído do ficheiro GPX da região do Rio Russo, levanta algumas suspeitas por várias razões. Em primeiro lugar, o gráfico mostra que descemos quase 15 metros abaixo do nível do mar. Isso é difícil de acreditar, já que estávamos a percorrer a margem do rio, a apenas cerca de 16 quilómetros do Oceano Pacífico.

Em segundo lugar, estávamos a seguir principalmente para oeste, seguindo o curso do rio a jusante, mas o percurso indica uma tendência predominantemente ascendente.

Podemos avaliar os dados de altitude GPS registados comparando-os com informações disponíveis no Serviço Geológico dos Estados Unidos (USGS). O USGS opera um serviço online que aceita coordenadas de latitude e longitude e fornece dados de altitude medidos pela NASA, cuja precisão foi avaliada com base em mais de 13.000 pontos de referência nos Estados Unidos continentais.

Ao utilizar o serviço web de altitude num mapeamento no Altova MapForce, podemos extrair cada ponto do ficheiro GPX, enviar as coordenadas para o serviço web da USGS e criar um novo ficheiro GPX com dados de altitude corrigidos.

Esta solução corresponde ao padrão de "tabela de pesquisa" (look-up table) aplicado ao serviço web, conforme descrito no artigo do blogue "Padrões de Mapeamento de Dados". Cada conjunto de coordenadas, identificado por latitude e longitude, possui exatamente um valor de altitude correspondente. Tal como uma tabela de pesquisa local, os pontos de dados de origem são únicos, mas os valores de saída podem ser duplicados.

Podemos começar a familiarizar-nos com o serviço web da USGS abrindo o WSDL no programa XMLSpy. Isto é especialmente útil para consultar a documentação integrada.

O XMLSpy também pode gerar uma requisição SOAP para o serviço web, permitindo a identificação e o teste fáceis dos parâmetros necessários.

Para o primeiro teste, utilizamos as coordenadas onde a altitude indicada estava abaixo do nível do mar. O elemento "Source_Layer" especifica qual conjunto de mapas deve ser consultado para obter o resultado. Selecionámos um mapa que cobre a metade oeste dos Estados Unidos, a partir da lista disponível em http://gisdata.usgs.gov/XMLWebServices2/Elevation_Service_Methods.php

O XMLSpy pode enviar a solicitação para o fornecedor do serviço web e abrir automaticamente o resultado.

O sistema GPS registou uma profundidade de 12 metros abaixo do nível do mar, enquanto o USGS (Serviço Geológico dos Estados Unidos) indica que a altitude real era de mais de 33 metros acima do nível do mar.

Poderíamos ter pedido a altitude em pés, mas optámos por não o fazer, uma vez que o esquema GPX define o valor da altitude em metros. De qualquer forma, pretendemos aplicar a folha de estilos StyleVision para localização nos dados finais.

Mapeamento de dados com um serviço web

Por vezes, é útil criar um mapeamento MapForce pequeno e simplificado para testar o serviço web antes de enviar-lhe um conjunto de dados grande. A captura de ecrã abaixo mostra um mapeamento simples para o serviço web "getElevation", que utiliza constantes de texto para fornecer os parâmetros e um ficheiro de texto para a saída.

Clicar no botão "Saída do MapForce" executa a transformação com os parâmetros fornecidos. Aqui está o resultado:

Começaremos a versão de produção do mapeamento MapForce com duas cópias do esquema GPX, e conectaremos todos os elementos da fonte ao destino, exceto a altitude.

Em seguida, simplesmente copiamos a definição do serviço web, juntamente com os seus parâmetros, da versão de teste para a versão de produção, e estabelecemos a ligação entre os valores X e Y no serviço web e a longitude e latitude no ficheiro GPX de origem.

No lado da saída do serviço web, simplesmente conectamos o resultado ao elemento de altitude do componente de saída. (Arredondamos a altitude em metros para duas casas decimais, porque apresentar valores com mais precisão parece desnecessário – não estamos a medir a movimentação das placas tectónicas!)

Quando executamos a nova versão do mapeamento, as coordenadas de cada elemento são enviadas para o serviço web, e o valor de altitude reportado é inserido no elemento no lado da saída.

Podemos comparar o ficheiro GPX convertido, com os novos dados de altitude, com o ficheiro original utilizando o Altova DiffDog. As diferenças são claramente destacadas na visualização em grade. Durante a conversão, também foram removidos alguns zeros desnecessários nos valores de latitude e longitude.

Também podemos criar um gráfico do ficheiro convertido utilizando a folha de estilos StyleVision SPS, que inclui funcionalidades de localização.

Como seria de esperar ao seguir um rio a jusante, o percurso não desce abaixo do nível do mar e a tendência geral é descendente!

Os dados de altitude registados por dispositivos GPS são, por natureza, menos precisos do que as coordenadas x-y. Além disso, durante o movimento, colinas e outros obstáculos podem obstruir a linha de visão para um ou mais satélites GPS, e os seus sinais de rádio são perdidos.

O mapa abaixo ilustra um trecho da viagem pelo Vale do Rio Russo. O ponto vermelho indica um local onde o GPS registou uma altitude de -12,8 metros, mas o USGS (Serviço Geológico dos Estados Unidos) reportou +33,28 metros. A colina Wild Hog, localizada diretamente a oeste, eleva-se mais de 335 metros, obstruindo grandes áreas do céu e, muito provavelmente, bloqueando os sinais dos satélites GPS.

Como último ponto de interesse, convertemos os dados de altitude do ficheiro GPX da caminhada em New Hampshire e utilizamos o programa XMLSpy para representar graficamente os dados de altitude da USGS em verde, sobrepondo-os à trajetória original de altitude registada pelo GPS.

Não é difícil perceber qual das formas representa de forma mais precisa um lado de uma montanha antiga e erodida na região de Nova Inglaterra.

Se desejar utilizar as ferramentas em Altova MissionKit para criar o seu próprio mapeamento de dados, utilizando um serviço web como tabela de referência Clique aqui para descarregar uma versão de avaliação gratuita.