파이썬 geopy vs 구글 geocoding API 좌표 비교

Chanzae·2022년 10월 29일
0

Python

목록 보기
2/2

파이썬에서 geopy와 구글 geocoding API를 받아 위도,경도를 변환하였을 때 같은 주소 데이터를 입력받더라도 출력되는 값이 다른 것을 확인할 수 있다.

따라서 두 방법의 좌표값이 왜 다른지, 입력한 주소 데이터와 동일한 좌표를 출력해냈는지 확인하는 작업이 필요하다.


우선 파이썬 geopy 라이브러리와 구글 geocoding API의 좌표값이 다른 이유는 geopy가 무료 오픈소스인 openStreetMap을 사용하기 때문이다. 입력된 데이터의 좌표를 찍어 위/경도를 출력해야하는데, 이때 사용되는 map자체가 다르니 값이 다를 수 밖에 없다.

그렇다면,
1. 주소를 입력했을 때 제대로 좌표를 찍는지
2. 위,경도로 변환한 값이 입력한 주소지와 같은지
를 확인해봐야 한다.

📌
예시 데이터는 공공데이터포털에 올라온 "소상공인시장진흥공단_상가(상권)정보_202206"에서 쉐이크쉑 주소 정보를 가져온 것이다. 이 데이터는 실제 주소지와 정확하게 일치하지 않을 수 있으므로 참고용으로 보길 바란다.

case1

예제 데이터 첫번째에 있는 쉐이크쉑 분당점의 주소는 "경기도 성남시 분당구 성남대로 601" 이다. 쉐이크쉑 분당점은 서현역과 연결된 AK백화점 내에 위치한다.

비교를 위해 네이버 지도에는 위 주소가 어디로 나오는지 검색해보았더니 서현역으로 좌표가 찍힌다.

구글 지도에 검색하면, 서현역이 제대로 나온다.

반면, openStreetMap에 위 주소를 검색하면, 성남대로가 나온다. 검색을 여러번 할 때마다 성남대로를 따라 위치정보 아무곳이 나온다. 위도, 경도를 확인해볼 것도 없이 이 데이터의 경우 openStreetMap이 부정확하다는 것을 확인할 수 있다. 따라서 이 데이터를 geopy로 지오코딩할 경우 데이터값이 정확하지 않을 것이다.

case2

예제 데이터 두번째 쉐이크쉑 대구동성로점의 주소는 "대구광역시 중구 동성로6길 61"이다.
네이버에 위 주소를 입력했을 때 건물로 주소가 잡히지만, 해당 건물 내에 쉐이크쉑이 있는 것을 확인할 수 있다.

구글지도에 해당 주소를 검색하면 좌표가 잡히지 않는다. 하지만 검색에 쉐이크쉑 대구동성로점이 나오며,이 곳의 주소가 "대구광역시 중구 동성로6길 61"로 나오는 것을 확인할 수 있다.

그렇다면, 정확하게 찍히지 않는 이 주소를 구글은 위/경도로 어떤 값을 변환했을까?
구글 geocoding api를 받아 변환된 값은 위도 35.868571, 경도128.596782 이다. 지도를 보면 쉐이크쉑 대구동성로점은 노란색 동그라미로 표시한 부분에 있는데, 좌표값으로 검색할 경우 한 블럭 떨어진 곳에 좌표가 찍힌다.

지도를 좀 더 확대해서 보면, 이 곳의 정확한 주소는 "동성로2길"로 구글 geocoding이 잘못된 주소의 위,경도를 알려준 것을 알 수 있다.

이 경우, 구글맵이 주소를 제대로 찍지도 못하고 위/경도도 정확한 값을 출력하지 못하고 있다.

반면, openStreetMap은 해당 주소가 검색되지도 않는다.

검색되지도 않는 데이터를 geopy는 어떤 값으로 변환했을까?
geopy가 변환한 값은 위도 35.868686 경도 128.597588이다. 해당 값을 openStreetMap에 검색하면 검색결과는 없지만 지도정보를 보면 동성로6길의 어느 곳이 잡히는 것 같다.

해당 좌표를 구글에 넣어서 검색한 결과 동성로 6길 한가운데가 찍힌다.




위의 두 경우만 봐도 입력한 데이터와 변환되는 위,경도 값이 100% 정확하지 않다는 것을 알 수 있다. 그래도 geopy를 사용하는 것보다는 구글 api를 받아서 사용하는 것이 더 나을 것 같다.

0개의 댓글