대부분의 사람들은 출발지와 목적지 사이의 거리를 확인하고 이동 시간을 파악할 때 구글 지도(Google Maps)를 이용합니다. 개발자와 애호가들을 위해 구글은 두 장소 간의 거리와 소요 시간을 계산할 수 있는 Google Distance Matrix API를 제공합니다.
이 API를 사용하려면 먼저 Google Maps API 키가 필요합니다. 아래 링크에서 무료로 발급받을 수 있습니다.
https://developers.google.com/maps/documentation/distance-matrix/get-api-key
필요한 라이브러리
Python에서는 다양한 라이브러리를 사용해 이 기능을 구현할 수 있습니다.
- Pandas
- googlemaps
- Requests
- Json
이 글에서는 가장 기본적인 requests와 json 라이브러리를 사용합니다. Pandas를 활용하면 여러 출발지와 목적지를 한 번에 처리하고 결과를 CSV 파일로 저장하는 것도 가능합니다.
구현 코드
아래는 Distance Matrix API를 호출하여 두 도시 간 거리와 소요 시간을 조회하는 예제 코드입니다.
# 필요한 라이브러리 임포트
import requests
import json
# 출발지와 목적지 도시 입력 받기
originPoint = input("출발 도시를 입력하세요: ")
destinationPoint = input("도착 도시를 입력하세요: ")
# Google Maps API 키를 변수에 저장
apiKey = 'YOUR_API_KEY'
# Google Maps API URL을 변수에 저장
url = 'https://maps.googleapis.com/maps/api/distancematrix/json?'
# requests 모듈의 get 메서드를 호출하고 응답 객체를 저장
r = requests.get(url + 'origins=' + originPoint + '&destinations=' + destinationPoint + '&key=' + apiKey)
# 응답 객체에서 JSON 형식의 결과 추출
res = r.json()
# 결과 출력
print(res)실행 결과
델리(Delhi)에서 카르나타카(Karnataka)까지의 거리를 조회한 예시입니다.
출발 도시를 입력하세요: Delhi
도착 도시를 입력하세요: Karnataka
{'destination_addresses': ['Karnataka, India'],
'origin_addresses': ['Delhi, India'],
'rows': [{'elements': [{'distance': {'text': '1,942 km', 'value': 1941907},
'duration': {'text': '1 day 9 hours', 'value': 120420},
'status': 'OK'}]}],
'status': 'OK'}결과 해석
응답 데이터에서 distance 항목은 총 이동 거리(1,942km)를, duration 항목은 예상 소요 시간(1일 9시간)을 나타냅니다. value 필드에는 미터(m)와 초(s) 단위의 수치가 포함되어 있어 프로그램에서 수치 연산에 바로 활용할 수 있습니다. 또한 status가 'OK'이면 요청이 정상적으로 처리된 것을 의미합니다.