ROUND(6371000.0*ACOS( TRUNC((SIN((3.141592/180)*B.LA_VAL)*SIN((3.141592/180)* #y#))
+(COS((3.141592/180)*B.LA_VAL)*COS((3.141592/180)* #y# )*COS((3.141592/180)*(B.LO_VAL-#x#))),10))/1000,6)*1000
AS DISTNACE
WHERE DISTNACE < #dis#
해당 코드는 주어진 위도(B.LA_VAL
)와 경도(B.LO_VAL
)를 사용하여 지정한 좌표(#x#
, #y#
)와의 거리(DISTANCE
)를 계산하는 쿼리를 나타냅니다. 계산된 거리가 지정한 거리(#dis#
)보다 작은 경우 조건을 충족합니다.
코드 분석:
ACOS(TRUNC((SIN((3.141592/180)*B.LA_VAL)*SIN((3.141592/180)* #y#)) + (COS((3.141592/180)*B.LA_VAL)*COS((3.141592/180)* #y# )*COS((3.141592/180)*(B.LO_VAL-#x#))),10))
SIN((3.141592/180)*B.LA_VAL)
및 SIN((3.141592/180)* #y#)
는 위도에 대한 삼각함수를 계산합니다.COS((3.141592/180)*B.LA_VAL)
및 COS((3.141592/180)* #y#)
는 위도에 대한 삼각함수를 계산합니다.COS((3.141592/180)*(B.LO_VAL-#x#))
는 경도에 대한 삼각함수를 계산합니다.TRUNC(..., 10)
은 결과를 소수점 아래 10자리까지 자릅니다.ROUND(6371000.0 * ..., 6) * 1000
6371000.0
)을 곱하여 실제 거리(미터 단위)로 변환합니다.ROUND(..., 6)
은 결과를 소수점 아래 6자리까지 반올림합니다.* 1000
을 통해 결과를 킬로미터 단위로 변환합니다.AS DISTANCE
DISTANCE
라는 별칭으로 지정합니다.WHERE DISTANCE < #dis#
DISTANCE
)가 지정한 거리(#dis#
)보다 작은 경우 조건을 충족합니다.이 코드는 위도와 경도를 사용하여 지정한 좌표와의 거리를 계산하고, 그 거리가 지정한 거리보다 작은 경우에 대한 조건을 필터링하는 데 사용될 수 있습니다.