本月早些时候,我在一个问题中获得了一个函数,该函数返回给定两个经度和两个纬度点的方位:
DELIMITER $$
DROP FUNCTION IF EXISTS `initial_bearing`$$
CREATE FUNCTION `initial_bearing`(
lat1 DOUBLE, lon1 DOUBLE,
lat2 DOUBLE, lon2 DOUBLE
) RETURNS DOUBLE
NO SQL
DETERMINISTIC
COMMENT 'Returns the initial bearing, in degrees, to follow the great circle route
from point (lat1,lon1), to point (lat2,lon2)'
BEGIN
RETURN (360.0 +
DEGREES(ATAN2(
SIN(RADIANS(lon2-lon1))*COS(RADIANS(lat2)),
COS(RADIANS(lat1))*SIN(RADIANS(lat2))-SIN(RADIANS(lat1))*COS(RADIANS(lat2))*
COS(RADIANS(lon2-lon1))
))
) % 360.0;
END$$
DELIMITER ;
我如何修改它,以便它逐步遍历给定的表,并使用每个记录中的 MinLatitude、MaxLatitude、MinLongitude、MaxLongitude 代替函数中的变量,然后将输出、方位角返回到中的方位角字段相同的记录?
最佳答案
我误认为存储过程与存储函数的工作方式是我的错。事实上,这个过程工作得很好,只需要作为查询的一部分来调用,例如从表A 中选择initial_bearing (Lat1, Long1, Lat2, Long2)。我想我会保留这个以防其他初学者犯同样的错误。抱歉浪费了带宽。
关于mysql - 修改函数以调用/单步执行表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24396550/