2022.12.14 - [정보기술] - (1) 구글 지도 API – 지도 만들기
2022.12.14 - [정보기술] - (2) 구글 지도 API - 단일 마커 표시하기
2022.12.14 - [정보기술] - (3) 구글 지도 API - 다중 마커 표시하기
2022.12.14 - [정보기술] - (4) 구글 지도 API - 정보창 표시하기
2022.12.14 - [정보기술] - (5) 구글 지도 API - 자동완성주소 검색하기
2022.12.14 - [정보기술] - (6) 번외 - 자동완성주소 검색에 관하여
2022.12.14 - [정보기술] - (7) 구글 지도 API - 특정 주소의 좌표 확인하기
2022.12.14 - [정보기술] - (8) 구글 지도 API - 좌표 DB 등록하기
2022.12.14 - [정보기술] - (9) 구글 지도 API - 검색 인터페이스 구현
2022.12.14 - [정보기술] - (10) 번외 - 검색지점 기준 반경거리 계산 (하버사인 공식)
2022.12.14 - [정보기술] - (11) 구글 지도 API - 좌표 DB 불러오기 (xml 이용)
2022.12.14 - [정보기술] - (12) 구글 지도 API - 위치기반 서비스 제공 (끝)
앞선 포스팅에서 지구와 같은 구(Sphere)의 직선거리를 구하기 위해서는 하버사인 공식이 필요하다고 말씀드렸습니다.
본 포스팅에서는 하버사인 공식에 대해 알아보겠습니다.
일반적으로 두 지점 Point1 (x1, y1)과 Point2 (x2, y2)가 존재할 때 두 지점 사이의 직선거리는 피타고라스의 정리를 이용하여 x좌표의 차이의 제곱과 y좌표의 차이의 제곱의 합에 대한 제곱근으로 구합니다.
그러나 3차원 지구좌표에서 사용하는 위도(Latitude)와 경도(Longitude)를 피타고라스 정리를 이용해 직선거리를 구하게 된다면 큰 오차가 생기게 됩니다.
근거리면 몰라도 국경을 넘어서 두 지점간의 거리가 길어질수록 결국 구형인 지구 곡률의 영향을 받아 점점 오차가 커지게 됩니다.
따라서 이를 해결하기 위하여 하버사인 공식(Harversine Fomula)을 사용하게 되는데 스크립트 코드로 나타내면 다음과 같습니다. 이 때 목표지점은 등록된 세미나의 위치기존 정보를 의미하며 기준지점은 사용자가 검색한 위치를 의미합니다.
//하버사인 공식 (검색지점으로부터의 거리 계산)
<script>
double distance;
double radius = 6371; // 지구 반지름(km)
double toRadian = Math.PI / 180;
double loclat = Double.parseDouble(rs.getString("목표지점 위도"));
double loclng = Double.parseDouble(rs.getString("목표지점 경도"));
double deltaLatitude = Math.abs(기준지점 위도 - loclat) * toRadian;
double deltaLongitude = Math.abs(기준지점 경도 - loclng) * toRadian;
double sinDeltaLat = Math.sin(deltaLatitude / 2);
double sinDeltaLng = Math.sin(deltaLongitude / 2);
double squareRoot = Math.sqrt(
sinDeltaLat * sinDeltaLat +
Math.cos(기준지점 위도 * toRadian) * Math.cos(locationlat * toRadian) * sinDeltaLng * sinDeltaLng);
distance = 2 * radius * Math.asin(squareRoot);
</script>
2022.12.14 - [정보기술] - (11) 구글 지도 API - 좌표 DB 불러오기 (xml 이용)
(11) 구글 지도 API - 좌표 DB 불러오기 (xml 이용)
2022.12.14 - [정보기술] - (1) 구글 지도 API – 지도 만들기 2022.12.14 - [정보기술] - (2) 구글 지도 API - 단일 마커 표시하기 2022.12.14 - [정보기술] - (3) 구글 지도 API - 다중 마커 표시하기 2022.12.14 - [정보
iftraveler.tistory.com
'정보기술' 카테고리의 다른 글
(12) 구글 지도 API - 위치기반 서비스 제공 (끝) (1) | 2022.12.14 |
---|---|
(11) 구글 지도 API - 좌표 DB 불러오기 (xml 이용) (0) | 2022.12.14 |
(9) 구글 지도 API - 검색 인터페이스 구현 (0) | 2022.12.14 |
(8) 구글 지도 API - 좌표 DB 등록하기 (0) | 2022.12.14 |
(7) 구글 지도 API - 특정 주소의 좌표 확인하기 (0) | 2022.12.14 |
댓글