일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- angular2
- 전체
- Login with OAuth Authentication
- 단축키
- 이클립스
- 상속예제
- jquery
- 추상클래스
- 전자정부
- 업캐스팅
- full text indexing
- 형변환
- 다형성
- 전체텍스트
- 스프링
- Full text
- Random
- 가변인자
- 상속
- 25가지 효율적인 sql작성법
- 야구게임
- 로또
- 다운캐스팅
- Validations
- 자바
- 페이징
- 자바 야구게임
- IBatis procedure
- while
Archives
- Today
- Total
nalaolla
거리계산 최종정리 본문
728x90
반응형
- /*
- ** 거리계산
- */
- declare @x float --현재위치 위도
- declare @y float --현재위치 경도
- declare @dx float --위치 위도
- declare @dy float --위치 경도
- SET @x = 37.486273
- SET @y = 126.995882
- SET @dx = 35.177286
- SET @dy = 126.900247
- SELECT (6371 * ACOS(COS(RADIANS(@x)) * COS(RADIANS(@dx))
- *COS(RADIANS(@dy) - RADIANS(@dy)) + SIN(RADIANS(@x)) * SIN(RADIANS(@dx)))) AS distance;
- -- select (6371 * acos( cos( radians(nowLat) ) * cos( radians( setLat ) ) * cos( radians( setLng ) - radians(nowLng) ) + sin( radians(nowLat) ) * sin( radians( setLat ) ) ) ) as distance;
- SELECT ROUND(6371 * acos( cos( radians(37.486273) ) * cos( radians( 35.177286 ) ) * cos( radians( 126.900247 ) - radians(126.900247) ) + sin( radians(37.486273) ) * sin( radians( 35.177286 ) ) ), 2) AS distance;
- --이게 정확한듯 함..
- declare @lat FLOAT
- declare @lon FLOAT
- SET @lat = 37.502969
- SET @lon = 127.035272
- SELECT *, (3956 * 2 * ASIN(SQRT( POWER(SIN((@lat - (nposY/1000000)) * pi()/180 / 2), 2) +
- COS(@lat * pi()/180) * COS((nposY/1000000) * pi()/180) * POWER(SIN((@lon - (nposX/1000000)) * pi()/180 / 2),2) )) )
- AS km
- FROM dongpos
- WHERE nID IN (2841, 5477, 5396)
- SELECT
- (
- (
- (
- acos(
- sin( 35.871058 * PI() /180.0 ) *
- sin( @lat * PI() /180.0 ) +
- cos( 35.871058 * PI() /180.0 ) *
- cos( @lat * PI() /180.0 ) *
- cos( (127.074297 - @lon ) * PI() /180.0 )
- )
- ) * 180.0 / PI()
- ) * 60*1.1515*1.609344*1000
- ) AS distnace
현대 DB는 없지만 간단하게 정리하면 다음과 같다..
dongpos라는 각 지번과 지번 위치를 담고있는 table이 존재한다..
거기서 2841, 5477, 5396 의 시퀀스를 가진 지역의 위경도값(nposY, nposX)값들이
초기변수값 @lat, @lon과의 거리를 산출해낸다..
대략 네이버 지도 및 구글 지도와의 거리값과 비슷하게 나온다..
나중에 은근히 쓰일데가 많다...
샘플DB는 추후 정리해서 올리도록 하겠다..
728x90
반응형
'MS-SQL' 카테고리의 다른 글
비용 발생하는 쿼리 찾아내기 (0) | 2015.12.20 |
---|---|
[MSSQL 2012] MSSQL 2012에서 새롭게 추가된 페이징 쿼리 기법 (0) | 2015.12.20 |
거리계산 (0) | 2015.12.20 |
거리계산 (0) | 2015.12.20 |
MSSQL 메뉴 활성화 바로 가기 키 (0) | 2015.12.20 |