2015-02-05 3 views
1

Я пытаюсь получить расстояние в метрах, используя приведенный ниже запрос. Но каждый раз, когда я выполнить запрос, я получаю ошибку ниже:Lat Расчет расстояния дальнего расстояния

EventException for error: ORA-01428 ReasonORA-01428: OracleExecutionException: argument '1.00000000000000000000000000000000000001' is out of range

SELECT station, 
     name, 
     id, 
     a.latitude, 
     a.longitude, 
     h.latitude as a_latitude, 
     h.longitude as a_longitude, 
     (ACOS(COS(0.0174532925*(90-a.latitude))*COS(0.0174532925*(90-h.latitude))+SIN(0.0174532925*(90-a.latitude))*SIN(0.0174532925*(90-h.latitude))*COS(0.0174532925*(a.longitude- h.longitude)))*6371000)Distance_in_metres 

FROM 
     address1 h, 
     ADDRESSES a 
+3

Вы действительно получаете "ORA-01428 ReasonORA-01428: OracleExecutionException" с сервера MySQL? – jarlh

+0

Я использую oracle не сервер mysql – kashi

+0

Итак, почему тег MySQL? Если вы помечаете Oracle вместо этого, вы получите ответы быстрее! – jarlh

ответ

1

Как уже упоминалось, ACOS должен быть [-1,1]. Этот запрос может работать:

SELECT station, 
     name, 
     id, 
     a.latitude, 
     a.longitude, 
     h.latitude as a_latitude, 
     h.longitude as a_longitude, 
     ACOS(ROUND(COS(ACOS(-1)/180*(90-a.latitude))*COS(ACOS(-1)/180*(90-h.latitude))+SIN(ACOS(-1)/180*(90-a.latitude))*SIN(ACOS(-1)/180*(90-h.latitude))*COS(ACOS(-1)/180*(a.longitude-h.longitude)), 20)) * 6371000 as Distance_in_metres 

FROM 
     address1 h, 
     ADDRESSES a 
1

Возможно вы есть проблема о функции ACOS.

EX: Если вы хотите использовать такую ​​функцию acos; АКОС (х)

The value of x should be in the range [-1,1].

Вы можете прочитать более подробную информацию в этой статье ORACLE/ACOS.

Смежные вопросы