2. 지오코딩#


 지오코딩은 장소 이름(예. 서울시청)이나 주소(예. 대한민국 서울특별시 중구 세종대로 110 서울특별시청)를 좌표로 변환하는 프로세스입니다. 이 단원에서는 Geopandasgeopy 라이브러리를 사용하여 지오코딩하는 방법을 배우겠습니다.

 Geopy와 다른 지오코딩 라이브러리(예. geocoder 라이브러리)를 사용하면 웹 서비스를 사용하여 전 세계의 주소, 도시, 국가 및 랜드마크의 좌표를 쉽게 얻을 수 있습니다. 이러한 웹 서비스를 지오코더(geocoder)라고 합니다. 실제로 지오코더는 API(응용 프로그래밍 인터페이스; Application) 서비스인 경우가 많으며, 이 API를 통해 요청(장소 이름 또는 주소)을 보내면 응답(좌표)을 받을 수 있습니다.

 Geopy는 다음과 같은 지오코더를 제공합니다.

 Python을 통해 위의 지오코더를 이용하는 방법은 geopy 공식 문서를 확인하시길 바랍니다.

 여러분이 사용할 수 있는 지오코더의 종류가 다양한만큼 지오코딩의 결과물은 각 지오코더가 기반하고 있는 데이터의 종류에 따라 다를 수 있습니다. 예를 들어, 일부 주소는 OpenStreetMap에는 존재하지만 Google 지도에는 없을 수 있습니다. 이러한 경우 OpenStreetMap 데이터에 기반한 Nominatim 지오코더를 사용하여 지오코딩할 수 있지만, Google Geocoding API로는 지오코딩 하지 못합니다.

 일부 지오코더의 경우 API 결과에 액세스하려면 API 키(key)가 필요할 수 있습니다. API 키는 일반적으로 지오코딩 서비스를 제공하는 웹 홈페이지에서 회원가입을 통해 등록하면 얻을 수 있습니다. 그리고 무료로 제공되는 지오코딩 API 서비스는 사용 속도 제한이 있는 경우가 있습니다. 짧은 시간에 너무 많은 요청을 시도하는 경우(예를 들어, 많은 수의 주소를 짧은 시간동안 지오코딩하는 경우), 지오코딩 서비스에서 오류를 발생시킬 수 있습니다. geopy 공식 문서을 통해 geopy에서 API 속도 제한에 대응하기 위해 어떤 대안을 사용하는지 확인할 수 있습니다. 또는 지오코딩 서비스에 대한 비용(유료)을 지불한다면 속도 제한 없이 또는 더 많은 양의 API 요청을 할 수 있습니다.

 이 책에서는 비교적 적은 수의 주소만 지오코딩을 하기 때문에, Nominatim 지오코더를 사용하도록 하겠습니다. Nominatim 지오코더는 1초당 요청 1개로 속도가 제한됩니다. 여기에서 Nominatim 사용 정책에 대한 자세한 내용을 읽을 수 있습니다. 참고로, Nominatim은 적은 수의 주소만 지오코딩할 경우 서비스를 사용하기 위한 API 키가 필요하지 않습니다.