지오해시 (geohash)
쉽게 풀면
지오해시는 지구 전체를 반으로 쪼개고 또 반으로 쪼개기를 반복하면서, 어느 쪽에 속하는지를 문자로 기록해 위치를 표현하는 방법입니다. 문자열이 길어질수록 더 작은 칸을 가리키므로 정밀해집니다. 앞부분이 같은 지오해시는 서로 가까운 곳이라는 뜻이어서, 문자열만 비교해도 근접성을 짐작할 수 있습니다.
왜 중요한가
지오해시는 2차원 좌표를 1차원 문자열로 바꾸어 일반적인 문자열 색인으로 공간 검색을 할 수 있게 해 주므로, 대용량 위치 데이터베이스와 분산 저장 환경에서 널리 쓰입니다. R트리 색인처럼 전용 공간색인 구조를 지원하지 않는 시스템에서도 근사적인 공간 질의를 가능하게 합니다. 위치 정보를 자릿수만 줄여 정밀도를 낮추는 방식으로 개인정보 보호 수준을 조절하는 데에도 활용됩니다.
논문에서는 이렇게 쓰입니다
정확한 좌표 대신 일정 크기의 격자를 가리키는 짧은 부호로 위치를 뭉뚱그려, 개인을 특정하기 어렵게 만든 상태에서 분포를 살펴보았다는 뜻입니다.
조금 더 깊게 보면
지오해시는 위도와 경도를 번갈아 이등분하며 얻은 비트열을 32진 문자로 부호화하므로, 한 글자가 다섯 비트에 해당하고 자릿수가 늘 때마다 격자가 급격히 작아집니다. 격자는 경위도 기준이어서 고위도로 갈수록 동서 폭이 좁아지고, 셀 모양도 자릿수의 홀짝에 따라 가로세로 비율이 달라집니다. 가장 큰 한계는 격자 경계 문제로, 물리적으로 아주 가까운 두 지점이 경계를 사이에 두면 접두어가 전혀 달라지므로 근접 검색 시 이웃 셀을 함께 조회해야 합니다.
주의할 점
접두어가 같으면 가깝다는 것은 성립하지만 그 역은 성립하지 않으므로, 지오해시만으로 최근접 검색을 구현하면 경계 부근에서 결과가 누락됩니다. 좌표를 압축해 표현하는 부호일 뿐 좌표계를 정의하는 것은 아니므로 EPSG 코드와 같은 층위의 개념이 아니라는 점도 구분해야 합니다.