Site da Vetorial Treinamentos

API da Google no Excel

Distance Matrix API no Excel – Como utilizar

A API Distance Matrix da Google possibilita aos usuários determinar o melhor trajeto possível, levando em consideração a distancia e o tempo de viagem entre vários pontos de origens e vários pontos de destino. Além das informações de tempo e distância, também é possível determinar vários outros paramentos relevantes, como, meio de transporte (carro, bicicleta, caminhada, transporte público), horário de início e término do trajeto, previsão de tráfego e muito mais.

Formatos e parâmetros de solicitação da API Distance Matrix

A solicitação da API Distance Matrix possui a seguinte configuração:

https://maps.googleapis.com/maps/api/distancematrix/outputFormat?parameters

No outputFormat (formato de saída) podem ser usados os padrões JSON ou XML, sendo que o padrão JSON é o mais recomendado.

Dentro de parameters (parâmetros), temos aqueles que são obrigatórios, tais como: origins (pontos de origens), destinations (pontos de destino) e key (chave API). Para saber como adquirir uma chave API veja o vídeo Google Maps API no Excel.

Em parâmetros que são do tipo opcionais, temos: mode (modos de viagem, ex. carro, bicicleta, caminhada, transporte público), language (idioma), avoid (especifica restrições de tráfego a serem evitados), e mais.

Para conhecer mais sobre cada um dos formatos de saída e dos paramentos de solicitação, quando e como utilizar cada um, acesse a parte de documentação disponibilizado pela Google no link Documentação Distance Matrix API.

Google Maps API - Distance Matrix API

Exemplo de saída no padrão JSON para dois pontos de Origem (São Luís, PA, Brasil e Belém, PA, Brasil) e um ponto de destino (Marabá, PA, Brasil)

{
   "destination_addresses" : [ "Marabá - PA, Brasil" ],
   "origin_addresses" : [
      "Belém - PA, Brasil",
      "São Luís - Vila Maranhão, São Luís - MA, Brasil"
   ],
   "rows" : [
      {
         "elements" : [
            {
               "distance" : {
                  "text" : "553 km",
                  "value" : 553036
               },
               "duration" : {
                  "text" : "9 horas 29 minutos",
                  "value" : 34118
               },
               "status" : "OK"
            }
         ]
      },
      {
         "elements" : [
            {
               "distance" : {
                  "text" : "808 km",
                  "value" : 807691
               },
               "duration" : {
                  "text" : "13 horas 41 minutos",
                  "value" : 49236
               },
               "status" : "OK"
            }
         ]
      }
   ],
   "status" : "OK"
}

Exemplo de saída no padrão XML para dois pontos de Origem (São Luís, PA, Brasil e Belém, PA, Brasil) e um ponto de destino (Marabá, PA, Brasil)

"<?xml version=""1.0"" encoding=""UTF-8""?>
<DistanceMatrixResponse>
 <status>OK</status>
 <origin_address>Belém - State of Pará, Brazil</origin_address>
 <origin_address>São Luís - Vila Maranhão, São Luís - State of Maranhão, Brazil</origin_address>
 <destination_address>Marabá - State of Pará, Brazil</destination_address>
 <row>
  <element>
   <status>OK</status>
   <duration>
    <value>34118</value>
    <text>9 hours 29 mins</text>
   </duration>
   <distance>
    <value>553036</value>
    <text>553 km</text>
   </distance>
  </element>
 </row>
 <row>
  <element>
   <status>OK</status>
   <duration>
    <value>49236</value>
    <text>13 hours 41 mins</text>
   </duration>
   <distance>
    <value>807691</value>
    <text>808 km</text>
   </distance>
  </element>
 </row>
</DistanceMatrixResponse>
"

Caso 1: Múltiplos pontos de Origem

Nesse primeiro caso prático, iremos calcular a distancia e tempo de viagem levando em consideração vários pontos de origem e um único ponto de destino.

Para realizarmos a chamada API, iremos utilizar a seguinte URL de solicitação dentro da Célula E6 do Excel, conforme código e imagem abaixo:

="https://maps.googleapis.com/maps/api/distancematrix/xml?&origins=" &  D12 & "|"  & D13 & "|" & D14 & "|" & D15 & "|" &  D16 & "&destinations="  & E8 & "&key=" & $C$4

Resultado
https://maps.googleapis.com/maps/api/distancematrix/xml?&origins=Belém, PA, Brasil|Marabá, PA, Brasil|Imperatriz, MA, Brasil|Tucuruí, PA, Brasil|São Luís, MA, Brasil&destinations=Paragominas, PA, Brasil&key=AIzaSyAuPl-3pzpG_MdAq-JMIx-KTeWFHxxanvU
Distance Matrix API no Excel

Em seguida, levamos o XML para dentro do Excel usando a função WEBSERVICE (SERVICOWEB). Escrevemos essa função dentro da célula F6.

Google Maps API no Excel
"<?xml version=""1.0"" encoding=""UTF-8""?>
<DistanceMatrixResponse>
 <status>OK</status>
 <origin_address>Belém - State of Pará, Brazil</origin_address>
 <origin_address>Marabá - State of Pará, Brazil</origin_address>
 <origin_address>Imperatriz - Camaçari, Imperatriz - State of Maranhão, Brazil</origin_address>
 <origin_address>Tucuruí, State of Pará, Brazil</origin_address>
 <origin_address>São Luís - Vila Maranhão, São Luís - State of Maranhão, Brazil</origin_address>
 <destination_address>Paragominas, PA, Brazil</destination_address>
 <row>
  <element>
   <status>OK</status>
   <duration>
    <value>17737</value>
    <text>4 hours 56 mins</text>
   </duration>
   <distance>
    <value>307895</value>
    <text>308 km</text>
   </distance>
  </element>
 </row>
 <row>
  <element>
   <status>OK</status>
   <duration>
    <value>20120</value>
    <text>5 hours 35 mins</text>
   </duration>
   <distance>
    <value>392885</value>
    <text>393 km</text>
   </distance>
  </element>
 </row>
 <row>
  <element>
   <status>OK</status>
   <duration>
    <value>16685</value>
    <text>4 hours 38 mins</text>
   </duration>
   <distance>
    <value>305329</value>
    <text>305 km</text>
   </distance>
  </element>
 </row>
 <row>
  <element>
   <status>OK</status>
   <duration>
    <value>31837</value>
    <text>8 hours 51 mins</text>
   </duration>
   <distance>
    <value>453076</value>
    <text>453 km</text>
   </distance>
  </element>
 </row>
 <row>
  <element>
   <status>OK</status>
   <duration>
    <value>39529</value>
    <text>10 hours 59 mins</text>
   </duration>
   <distance>
    <value>654550</value>
    <text>655 km</text>
   </distance>
  </element>
 </row>
</DistanceMatrixResponse>
"

Agora, utilizamos a função FILTERXML ( FILTROXML) do Excel indicando o xPath desejado. Dividimos por 1000 para obter os valores em km.

Google Maps API no Excel

Fazemos a mesma operação para obtenção do tempo de viagem, com a diferença que nesse caso o xPath muda, ficando da seguinte forma: DistanceMatrixResponse/row/element/duration/text.

Google Maps API no Excel

Podemos agora, facilmente determinar quais pontos possuem a menor distancia e o menor tempo de viagem. O ponto Origem 3 (Imperatriz, MA, Brasil) para Destino (Paragominas, PA, Brasil) possuem a menor distancia e o menor tempo de distancia. Portanto é o melhor trajeto a ser realizado. Levando isso para nosso mapa temos o seguinte esquema.

Google Maps API no Excel

Caso 2: Múltiplos pontos de Destino

Nesse segundo caso prático, iremos calcular a distancia e tempo de viagem levando em consideração um único ponto de origem e vários pontos de destino.

Google Maps API no Excel

Para realizarmos a chamada API, iremos utilizar a seguinte URL de solicitação dentro da Célula E6 do Excel, conforme código e imagem abaixo:

="https://maps.googleapis.com/maps/api/distancematrix/xml?&origins=" &  E8 & "&destinations="  & D12 & "|"  & D13 & "|" & D14 & "|" & D15 & "|" &  D16 & "&key=" & $C$4

Resultado
https://maps.googleapis.com/maps/api/distancematrix/xml?&origins=São Geraldo do Araguaia, MA, Brasil&destinations=Araguaína, Tocantins, Brazil|Parauapebas, PA, Brasil|Canaã dos Carajás, PA, Brasil|Açailandia, MA, Brasil|Porto Franco, MA, Brasil&key=AIzaSyAuPl-3pzpG_MdAq-JMIx-KTeWFHxxanvU
Distance Matrix API no Excel

Em seguida, levamos o XML para dentro do Excel usando a função WEBSERVICE (SERVICOWEB). Escrevemos essa função dentro da célula F6.

Distance Matrix API no Excel
"<?xml version=""1.0"" encoding=""UTF-8""?>
<DistanceMatrixResponse>
 <status>OK</status>
 <origin_address>São Geraldo do Araguaia, State of Pará, 68570-000, Brazil</origin_address>
 <destination_address>Araguaína, State of Tocantins, Brazil</destination_address>
 <destination_address>Parauapebas, PA, 68515-000, Brazil</destination_address>
 <destination_address>Canaã dos Carajás, PA, 68537-000, Brazil</destination_address>
 <destination_address>Açailândia - State of Maranhão, Brazil</destination_address>
 <destination_address>Porto Franco, MA, 65970-000, Brazil</destination_address>
 <row>
  <element>
   <status>OK</status>
   <duration>
    <value>8491</value>
    <text>2 hours 22 mins</text>
   </duration>
   <distance>
    <value>143632</value>
    <text>144 km</text>
   </distance>
  </element>
  <element>
   <status>OK</status>
   <duration>
    <value>16065</value>
    <text>4 hours 28 mins</text>
   </duration>
   <distance>
    <value>186129</value>
    <text>186 km</text>
   </distance>
  </element>
  <element>
   <status>OK</status>
   <duration>
    <value>16675</value>
    <text>4 hours 38 mins</text>
   </duration>
   <distance>
    <value>185918</value>
    <text>186 km</text>
   </distance>
  </element>
  <element>
   <status>OK</status>
   <duration>
    <value>19391</value>
    <text>5 hours 23 mins</text>
   </duration>
   <distance>
    <value>294925</value>
    <text>295 km</text>
   </distance>
  </element>
  <element>
   <status>OK</status>
   <duration>
    <value>11425</value>
    <text>3 hours 10 mins</text>
   </duration>
   <distance>
    <value>196191</value>
    <text>196 km</text>
   </distance>
  </element>
 </row>
</DistanceMatrixResponse>
"

Agora, utilizamos a função FILTERXML ( FILTROXML) do Excel indicando o xPath desejado. Dividimos por 1000 para obter os valores em km.

Distance Matrix API no Excel

Fazemos a mesma operação para obtenção do tempo de viagem, com a diferença que nesse caso o xPath muda, ficando da seguinte forma: DistanceMatrixResponse/row/element/duration/text.

Distance Matrix API no Excel

Podemos agora, facilmente determinar quais pontos possuem a menor distancia e o menor tempo de viagem. O ponto Origem (São Geraldo do Araguaia, MA, Brasil) para Destino 5 (Araguaína, PA, Brasil) possuem a menor distancia e o menor tempo de distancia. Portanto é o melhor trajeto a ser realizado. Levando isso para nosso mapa temos o seguinte esquema.

Distance Matrix API no Excel

Caso 3: Múltiplos pontos de Origem e Destino

Nesse terceiro caso prático, iremos calcular a distancia e tempo de viagem levando em consideração vários pontos de origem e vários pontos de destino.

Distance Matrix API no Excel

Para realizarmos a chamada API, iremos utilizar a seguinte URL de solicitação dentro da Célula E6 do Excel, conforme código e imagem abaixo:

="https://maps.googleapis.com/maps/api/distancematrix/xml?&origins=" & D12 & "|"  & D13 & "&destinations="  & D14 & "|" & D15 & "&key=" & $C$4

Resultado
https://maps.googleapis.com/maps/api/distancematrix/xml?&origins=Cametá, PA, Brasil|Abaetetuba, PA, Brasil&destinations=Tailândia, PA, Brasil|Tucuruí, PA, Brasil&key=AIzaSyAuPl-3pzpG_MdAq-JMIx-KTeWFHxxanvU
Distance Matrix API no Excel

Em seguida, levamos o XML para dentro do Excel usando a função WEBSERVICE (SERVICOWEB). Escrevemos essa função dentro da célula F6.

Distance Matrix API no Excel
"<?xml version=""1.0"" encoding=""UTF-8""?>
<DistanceMatrixResponse>
 <status>OK</status>
 <origin_address>Cametá, State of Pará, 68400-000, Brazil</origin_address>
 <origin_address>Abaetetuba, PA, 68440-000, Brazil</origin_address>
 <destination_address>Tailândia, PA, 68695-000, Brazil</destination_address>
 <destination_address>Tucuruí, State of Pará, Brazil</destination_address>
 <row>
  <element>
   <status>OK</status>
   <duration>
    <value>19764</value>
    <text>5 hours 29 mins</text>
   </duration>
   <distance>
    <value>265395</value>
    <text>265 km</text>
   </distance>
  </element>
  <element>
   <status>OK</status>
   <duration>
    <value>14114</value>
    <text>3 hours 55 mins</text>
   </duration>
   <distance>
    <value>207822</value>
    <text>208 km</text>
   </distance>
  </element>
 </row>
 <row>
  <element>
   <status>OK</status>
   <duration>
    <value>9855</value>
    <text>2 hours 44 mins</text>
   </duration>
   <distance>
    <value>158790</value>
    <text>159 km</text>
   </distance>
  </element>
  <element>
   <status>OK</status>
   <duration>
    <value>21421</value>
    <text>5 hours 57 mins</text>
   </duration>
   <distance>
    <value>348065</value>
    <text>348 km</text>
   </distance>
  </element>
 </row>
</DistanceMatrixResponse>
"

Para melhor visualizar os dados e interpretar as informações de origem e destino de todos os pontos envolvidos, desenhamos a seguinte tabela.

Distance Matrix API no Excel

Agora, utilizamos a função FILTERXML ( FILTROXML) do Excel indicando o xPath desejado. Dividimos por 1000 para obter os valores em km.

Distance Matrix API no Excel

Fazemos a mesma operação para obtenção do tempo de viagem, com a diferença que nesse caso o xPath muda, ficando da seguinte forma: DistanceMatrixResponse/row/element/duration/text.

Distance Matrix API no Excel

Podemos agora, facilmente determinar quais pontos possuem a menor distancia e o menor tempo de viagem. Os pontos Origem 1 (Cametá, PA, Brasil) para Destino 2(Tucuruí, PA, Brasil) e os pontos Origem 2 (Abaetetuba, PA, Brasil) para Destino 1 (Tailândia, PA, Brasil) possuem a menor distancia e o menor tempo de distancia. Portanto são os melhores trajetos a serem realizados. Levando isso para nosso mapa temos o seguinte esquema.

Distance Matrix API no Excel

Leave a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *