MySql 能否确定两条经纬度记录之间的'bearing'



我试图在我拥有的表中找到/存储街道的'轴承'。我可以为每条街道提供第一栋建筑的地址经纬度和最后一栋建筑的地址。MySql可以以某种方式处理罗盘轴承与此?

这是一个存储函数,用于计算从一个点(lat1,lon1)移动到(假设为球形)地球上另一个点(lat2, lon2)的初始罗盘航向(也称为前方位角)。

它是基于这个网页中的公式。http://www.movable-type.co.uk/scripts/latlong.html

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 ;

如果您有一个包含FLOAT类型列的表,称为lat1, lon1, lat2, lon2, bearing,您可以使用此函数通过此查询将bearing列与其他列设置为不同。

UPDATE table name SET bearing = initial_bearing(lat1,lon1,lat2,lon2)

这个查询缺少WHERE子句,将更新表的每一行。

相关内容

  • 没有找到相关文章

最新更新