---
title: "Serviço web como tabela de consulta para refinar dados de GPS"
date: "2012-06-20"
categories: 
  - "data-integration"
tags: 
  - "altova-xmlspy"
  - "charts"
  - "data-mapping"
  - "diffdog"
  - "file-comparison"
  - "mapforce"
  - "missionkit"
  - "stylevision"
  - "web-services"
  - "wsdl"
description: Este artigo aborda como refinar os dados de altitude do GPS utilizando o serviço web da USGS como uma tabela de referência, melhorando a precisão através de técnicas de mapeamento de dados.
---
Status: #blog

Tags:  #altova-xmlspy #charts #data-mapping #diffdog #file-comparison #mapforce #missionkit #stylevision #web-services #wsdl

Categories: [data-integration](/blog/pt/category/data-integration.md)
# 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](https://www.altova.com/blog/2012/04/creating-elegant-reports-for-gps-xml.html).

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.

![Gráfico Altova StyleVision](https://lh5.ggpht.com/-RyKmstA4f98/T-HOw4cQf4I/AAAAAAAAA1I/__oEl7-5bUk/clip_image001%25255B3%25255D.png?imgmax=800 "Altova StyleVision Chart") 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](https://www.altova.com/pt/mapforce.html), 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.

<!--more-->

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](https://www.altova.com/blog/2012/06/data-mapping-patterns.html)". 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.

![Visualizar um WSDL no modo de texto do XMLSpy](https://lh6.ggpht.com/-x9YnOlGaefU/T-HOxNqsHkI/AAAAAAAAA1Q/_qQdDkJrzX4/clip_image002%25255B3%25255D.png?imgmax=800 "Reviewing a WSDL in XMLSpy text view")

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.

![Pedido SOAP gerado pelo XMLSpy](https://lh6.ggpht.com/--sibDXwVNF8/T-HOxmci9hI/AAAAAAAAA1Y/KUv5-B89JJ8/clip_image003%25255B3%25255D.png?imgmax=800 "SOAP request generated by XMLSpy")

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](http://gisdata.usgs.gov/XMLWebServices2/Elevation_Service_Methods.php)

![Pedido SOAP com parâmetros no XMLSpy](https://lh6.ggpht.com/-3oYTJSX8V0w/T-HOx2xpomI/AAAAAAAAA1g/mFUacQiAX0o/clip_image004%25255B3%25255D.png?imgmax=800 "SOAP request with parameters in XMLSpy")

O XMLSpy pode enviar a solicitação para o fornecedor do serviço web e abrir automaticamente o resultado.

 

![Resposta SOAP visualizada no XMLSpy](https://lh6.ggpht.com/-SQvGvjeqwnU/T-HOyeyDPCI/AAAAAAAAA1o/EJnfZXMsXCU/clip_image005%25255B3%25255D.png?imgmax=800 "SOAP response viewed in XMLSpy")

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](https://www.altova.com/pt/stylevision.html) para [localização](https://www.altova.com/blog/2012/04/xpath-enhances-xml-reports.html) 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.

![Mapeamento de testes de serviços web no MapForce](https://lh5.ggpht.com/-VZuHV13mkDQ/T-HOyduSq5I/AAAAAAAAA1w/Ljkg-tSkQwk/clip_image006%25255B3%25255D.png?imgmax=800 "Web service test mapping in MapForce")

Clicar no botão "Saída do MapForce" executa a transformação com os parâmetros fornecidos. Aqui está o resultado:

![Resultado do mapeamento de teste do MapForce](https://lh5.ggpht.com/-ENG6c5uitZ8/T-HOy3C4nPI/AAAAAAAAA14/0zCeHpE6ZO0/clip_image007%25255B3%25255D.png?imgmax=800 "Output of the MapForce test mapping")

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.

![Mapeamento parcial de ficheiros GPX no MapForce](https://lh6.ggpht.com/-SbmDoTbcEwo/T-HOzMe4htI/AAAAAAAAA2A/KBqYrPAT4aA/clip_image008%25255B3%25255D.png?imgmax=800 "Partial GPX mapping in MapForce")

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.

![A chamada do serviço web MapForce refina os dados de elevação no formato GPX](https://lh6.ggpht.com/-mjks13bElcc/T-HOzfuX3MI/AAAAAAAAA2I/KXSffKCwi-g/clip_image009%25255B3%25255D.png?imgmax=800 "MapForce Web service call refines GPX elevation data")

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 <trkpt> são enviadas para o serviço web, e o valor de altitude reportado é inserido no elemento <ele> no lado da saída.

![Saída do mapeamento GPX do MapForce, com atualização da altitude](https://lh5.ggpht.com/-vn8sNaJY74Q/T-HOzgpx6lI/AAAAAAAAA2Q/2FuKiNwGmd4/clip_image010%25255B3%25255D.png?imgmax=800 "Output of the MapForce GPX mapping with updated elevation")

Podemos comparar o ficheiro GPX convertido, com os novos dados de altitude, com o ficheiro original utilizando o [Altova DiffDog](https://www.altova.com/pt/diffdog/diff-merge-tool.html). 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.

![Comparação entre os ficheiros GPX originais e atualizados, realizada com o DiffDog](https://lh5.ggpht.com/-2KgbPgsJsa8/T-HO0TwCP4I/AAAAAAAAA2Y/CrTQV9WDUXc/clip_image011%25255B3%25255D.png?imgmax=800 "DiffDog comparison of the original and updated GPX files")

Também podemos criar um gráfico do ficheiro convertido utilizando a folha de estilos StyleVision SPS, que inclui funcionalidades de localização.

![Gráfico do StyleVision com os dados GPX atualizados](https://lh3.ggpht.com/-vSWj8_nctng/T-HO0yFa0HI/AAAAAAAAA2g/sHHvELJqhiU/clip_image012%25255B3%25255D.png?imgmax=800 "StyleVision chart of the updated GPX data") 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.

![Mapa topográfico da colina Wild Hog](https://lh5.ggpht.com/-3qCQGD1C36s/T-HO1Ua6bhI/AAAAAAAAA2o/Mp4-wETUD2Y/clip_image013%25255B3%25255D.png?imgmax=800 "Terrain map of Wild Hog Hill")
Como último ponto de interesse, convertemos os dados de altitude do [ficheiro GPX da caminhada em New Hampshire](https://www.altova.com/blog/2012/04/xpath-enhances-xml-reports.html) 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.

![Gráfico do XMLSpy que mostra os dados de elevação originais e os dados de elevação atualizados](https://lh6.ggpht.com/-rmK0R4VS9ko/T-HO1r7-KfI/AAAAAAAAA2w/BhJxiujYmpE/clip_image014%25255B3%25255D.png?imgmax=800 "XMLSpy chart of original and updated elevation data")

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**](https://www.altova.com/pt/missionkit/software-development-tools.html) **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](https://www.altova.com/pt/download-trial/)**.**
