두 지점사이을 위도와 경도로 구하는것은 많으나

많은 Data 중에서 그것들을 일일이 비교하는 것 보다 좀 더 간단한 게 있지 않을까 하는 생각에서 찾다보니... 맞는 것 같기도 하고 ㅎㅎ

원하는 Data는 한 지점의 좌표를 던졌을 때, 그 주위의 영역안에 있는 지점들 검색.



일단 data  table은 이렇다

address             lat                           lon

종로5가 85-5    37.57133378640924     127.0017706415372
종로5가 78-2    37.571308557349745    127.0021464536288
효제동 329-2    37.57149956819151     127.00176611422538
종로5가 78       37.57140226011581     127.00214192655133
효제동 248-1    37.57151758654161     127.00214645538165
효제동 320-2    37.571589667065034    127.00172083577715
효제동 318-2    37.571654538183424    127.00172536383047
효제동 249-1    37.57159687349846     127.00214192817154
효제동 254-1    37.57166534876146     127.00210570570849
효제동 251-1    37.57179509014652     127.00225965488374


-- 위도 : 0.05킬로미터, 경도 0.06미터 

vlat : 0.05
vlon : 0.06
특정 지점 : 종로5가 85-5        

plat : 37.57133378640924
plon : 127.0017706415372

해당 위도의 1도거리
133.33 * cost(위도)

해당 경도의 1도거리
111.1111 * cos(위도)

지구의 둘레는 약 48,000 km
위도 : 지구 둘레의 절반을 남북으로 180 등분한 것이므로 위도 1도 사이의 거리는 48,000 ÷ 360 = 133.33 km
경도 : 적도에서는 지구 둘레인 48,000 km 를 360 등분한 것이므로
       위도와 마찬가지로 1도 사이의 거리는 133.33 km이지만
       적도에서는 모든 경선이 만나기 때문에 그 사이의 거리가 모두 0 이 되며
       그 중간 지역에서는 1도 사이의 거리는 133.33 × cos(해당 지역의 위도) km




select address, lat_minus, lat, lat_plus, abs(lat - lat_minus) as lat_distance, lon_minus, lon, lon_plus, abs(lon - lon_minus) as lon_distance
from (
select address, lat
  , (:plat - (:vlat/133.33 * cos(lat)) ) as lat_minus
  , (:plat + (:vlat/133.33 * cos(lat)) ) as lat_plus
  , lon
  , ( :plon - (:vlon/(111.1111 * cos(lat)) )) as lon_minus
  , ( :plon + (:vlon/(111.1111 * cos(lat)) )) as lon_plus
-- select *
from tc00_map m
where lat between (:plat - (:vlat/133.33 * cos(lat)) ) and (:plat + (:vlat/133.33 * cos(lat)) )
and lon between (:plon - (:vlon/(111.1111 * cos(lat)) )) and (:plon + (:vlon/(111.1111 * cos(lat)) ))
)

728x90
BLOG main image
"그게 뭐 어쨌다는 거냐?" 늘 누가 나에게 나에대한 말을할 때면 이말을 기억해라. by nobang

카테고리

nobang이야기 (1932)
Life With Gopro (7)
Life With Mini (79)
Diary (971)
너 그거 아니(do you know) (162)
난 그래 (158)
Study (290)
속지말자 (10)
Project (34)
Poem (15)
Song (0)
Photo (113)
낙서장 (45)
일정 (0)
C.A.P.i (2)
PodCast (0)
nobang (27)
고한친구들 (4)
recieve (0)
History (0)
android_app (2)

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

Total :
Today : Yesterday :