빅데이터

Google Elevation API를 활용한 고도 데이터 수집 및 DB 저장 방법

곽코딩루카 2025. 3. 10. 19:16
반응형

 

https://kwakscoding.tistory.com/73

 

[고도데이터수집]국토정보플랫폼에서 DEM 다운로드 + 고도 데이터 추출 후 DB저장

고도데이터를 기반으로 경사로를 파악해야하는 프로젝트를 진행하게 되었다. 전국에 있는 고도데이터가 필요한 상황에서 국내에서 정확도가 높다는 국토정보플랫폼에서 무료로 다운받을 수

kwakscoding.tistory.com

 

 

지난 글에서 국토정보플랫폼에서 DEM 파일을 다운로드하여 고도 데이터를 DB에 저장하는 방법을 소개했습니다. (👉 이전 글 보기)
하지만 국토정보플랫폼에서 제공하는 DEM 데이터는 최대 해상도가 90m로, 원하는 수준의 정밀한 데이터를 얻기에 부족함이 있었습니다.

이번에는 Google Elevation API를 활용하여 더 정밀한 고도 데이터를 수집하고 API를 사용하는 방법에 대해 알아보겠습니다.

 

1. Google Elevation API란?

Google Elevation API는 지도상의 특정 좌표에 대한 고도 데이터를 제공하는 서비스입니다.
API를 활용하면 특정 지점뿐만 아니라 최대 512개 좌표를 한 번에 요청하여 일괄적으로 데이터를 받아올 수 있습니다.
하지만 API 사용에는 일정한 요청 제한(월 5000회 무료) 이 있으며, 이를 초과하면 비용이 발생할 수 있습니다.

 

 

2. Google Elevation API 사용 방법

(1) Google Cloud 프로젝트 생성

  1. Google Cloud Console에서 새 프로젝트를 생성합니다.
    👉 Google Cloud 프로젝트 설정하기
  2. 생성한 프로젝트에서 "API 및 서비스" 메뉴로 이동합니다.
  3. 검색창에 "Elevation API" 를 입력하고 활성화합니다.
  4. 결제 계정을 등록해야 API를 사용할 수 있습니다.
    • Google Elevation API는 유료(Pro 등급) 서비스지만, 월 5000회까지 무료로 사용할 수 있습니다.
    • 초과 시 과금될 수 있으므로 제한을 설정해두는 것이 좋습니다. (구글링하면 방법이 나옵니다.)

 

 

우선 구글 API를 사용하기 위해 본인의 구글계정으로 프로젝트를 생성해야 한다. 아래 링크를 통해 생성하도록 합시다.

 

 

https://developers.google.com/maps/documentation/elevation/cloud-setup?hl=ko

 

Google Cloud 프로젝트 설정  |  Elevation API  |  Google for Developers

이 페이지는 Cloud Translation API를 통해 번역되었습니다. 의견 보내기 Google Cloud 프로젝트 설정 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 이 가이드에서는

developers.google.com

 

 

 

그리고 아래 그림처럼 새 프로젝트를 만들자.

 

 

 

 

프로젝트를 만들었다면 API 및 서비스를 클릭한다.

 

 

 

 

검색창에 우리가 사용할 고도API를 검색한다.

 

 

 

 

 

 

사용을 누른다.

 

 

 

 

 

결제 계정을 만든다.

 

 

 

결제 계정을 만들면 API키를 발급받을 수 있다.
발급을 받았으니 API문서를 확인하고 이용해보자.

 

https://developers.google.com/maps/documentation/elevation/overview?hl=ko

 

Elevation API 개요  |  Google for Developers

지표면의 모든 위치에 대한 고도 데이터를 가져옵니다. 출력을 사용자 지정하고 응답 코드를 읽는 방법에 대해 알아봅니다.

developers.google.com

 

 

위 링크에 상세하게 API명세가 자세히 나와 있다.

 

 

(2) API 키 발급 및 요청

  1. Google Cloud에서 API 키를 발급받습니다.
  2. 발급받은 키를 이용하여 API를 호출하면 다음과 같은 응답을 받을 수 있습니다.

 API 요청 예시

https://maps.googleapis.com/maps/api/elevation/json?
locations=37.5665,126.9780&key=YOUR_API_KEY

(YOUR_API_KEY 부분을 발급받은 키로 변경하세요.)

 API 응답 예시

 
{
  "results": [
    {
      "elevation": 35.689487,
      "location": { "lat": 37.5665, "lng": 126.9780 },
      "resolution": 19.08790397644043
    }
  ],
  "status": "OK"
}

 

 

키값은 본인이 발급받은 키를 넣고 API를 요청하면 위와같이 응답이 온다.

 

3. 수집한 데이터를 효율적으로 DB에 저장하는 방법

API 요청은 최대 512개 좌표까지 한 번에 보낼 수 있기 때문에 이를 활용하면 요청 횟수를 줄일 수 있습니다.

  • 나는 512개 좌표를 한 번에 요청한 후 응답을 받아 DB에 저장하는 방식으로 구현했습니다.
  • API 요청을 자동화하려면 Python 스크립트를 활용하여 대량 요청을 처리할 수도 있습니다.
    (👉 자동화 관련 코드와 자세한 설명은 이전 글 참고)

 

API 횟수가 5000회로 제한이 있기에 (넘어가면 유료 ) 최대한 512개를 요청값에 넣어서 요청을 하였고 응답값을 DB에 저장하였다. 

'|' 이 구분하여 위도 경도를 요청하시면 됩니다.

 

또한 파이썬으로 자동화로 돌려서도 요청이 가능하다. 저번 소스 참고.. (아래 링크)

 

https://kwakscoding.tistory.com/73

 

[고도데이터수집]국토정보플랫폼에서 DEM 다운로드 + 고도 데이터 추출 후 DB저장

고도데이터를 기반으로 경사로를 파악해야하는 프로젝트를 진행하게 되었다. 전국에 있는 고도데이터가 필요한 상황에서 국내에서 정확도가 높다는 국토정보플랫폼에서 무료로 다운받을 수

kwakscoding.tistory.com

 

 

4. Google Elevation API 데이터의 신뢰성은?

 실험 결과: 인천 지역에서 해상도 20m 데이터 응답

Google Elevation API를 통해 인천 지역에서 20m 해상도의 데이터를 받을 수 있었습니다.
이전 국토정보플랫폼(90m)보다 정밀도가 향상되었지만, 정확도를 검증하는 것이 문제였습니다.
이를 위해 직접 비교 실험을 진행했습니다.

 GPS 기반 고도 데이터와 비교

안드로이드의 FusedLocationProviderClient API를 활용하여 GPS에서 측정한 고도 데이터와 비교해보려고 했습니다.
하지만, GPS 기반 고도 데이터는 ±10~50m의 오차가 크기 때문에 절대적인 고도 데이터로 활용하기 어렵다는 결론을 내렸습니다.

 결론: "GPS 기반 고도 데이터는 신뢰성이 낮다. Google Elevation API의 정확도를 직접 검증할 필요가 있다."

 

데이터가 있어야 개발이 가능하지만, 현재 데이터 수집에만 하루 종일 투자해야 하는 상황입니다.
스트레스가 크지만, 더 정밀한 고도 데이터를 얻기 위해 추가적인 검증 작업이 필요할 것 같습니다.

다음 글에서는 Google Elevation API 데이터를 가공하여 실질적으로 활용하는 방법을 다룰 예정입니다.
 지속적인 업데이트가 필요하므로, 관심 있는 분들은 구독해 주세요!

 

 

 요약

 Google Elevation API를 사용하면 최대 512개 좌표의 고도 데이터를 요청할 수 있다.
 무료 요청 한도는 월 5000회이며, 초과 시 과금될 수 있다.
 인천 지역에서는 20m 해상도의 데이터가 응답되었지만, 정확도는 실험이 필요하다.
 GPS 기반 고도 데이터는 ±10~50m의 오차가 있어 신뢰하기 어렵다.
 추가 검증을 통해 Google Elevation API 데이터의 신뢰성을 높이는 것이 중요하다.


관련 글

 

 

 

20250311 글 추가

 

google에서 지원해주는 API를 사용하려면 결제 계정을 만들고 연동을 시켜야 한다. 물론 다른 API는 모르겠으나 google 공식 API문서를 참고해보면 google Elevation API같은경우 Pro등급으로 유료버전이다. 한달에 5000회는 무료이다.

그래서 결제 계정을 연동하고 5000회가 넘지 않도록 설정을 해줘야 한다.

 

https://cloud.google.com/apis/docs/capping-api-usage?hl=ko

 

API 사용량 상한 설정  |  Cloud APIs  |  Google Cloud

의견 보내기 API 사용량 상한 설정 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. API에 따라 일일 요청, 분당 요청 또는 사용자별 분당 요청으로 요청을 명시

cloud.google.com

 

위 링크에서 API 사용량 상한 설정 설명을 보고 API 할당량 제한을 걸어보자.

 

 

구글 API 메인 페이지에서 IAM 및 관리자 버튼을 누른다.

 

 

위와같이 나는 5000번 이상 시도가 안되게 값을 걸어 두었다. 

 

자세히 보니 Requests par day인걸로 보아 하루 할당량인듯 하다 자세한건 사용해보고 다시 포스팅을 남기도록 하겠다.

 

 

 

반응형