我正在尝试在我拥有的表格中查找/存储街道的“方位”。我可以为每条街道提供第一个建筑物地址的纬度和经度,最后一个建筑物也是如此。MySql 可以以某种方式处理与此有关的指南针吗?
问问题
1371 次
1 回答
5
这是一个存储函数,用于计算初始罗盘航向(导航员也将其称为正向方位角)以从(假定为球形)地球上的一个点移动(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 ;
lat1
如果您有一个包含名为, lon1
, lat2
, lon2
,的 FLOAT 类型列的表,则bearing
可以使用此函数bearing
通过此查询从其他列中设置该列。
UPDATE table name SET bearing = initial_bearing(lat1,lon1,lat2,lon2)
此查询缺少 WHERE 子句,将更新表的每一行。
于 2014-06-07T18:09:56.000 回答