mysql经纬度转度分秒实现方法

/ 0条评论 / 0 个点赞 / 606人阅读

在MySQL中,我们可以使用一些函数来实现经纬度的转换,将度分秒表示的经纬度转换为十进制表示的经纬度。本文将介绍如何使用MySQL实现经纬度的转换,并提供详细的步骤和代码示例。

使用函数将度分秒表示的经纬度转换为十进制表示

UPDATE locations
SET decimal_latitude = CONVERT(
  SUBSTRING_INDEX(latitude, '°', 1) + 
  SUBSTRING_INDEX(SUBSTRING_INDEX(latitude, '°', -1), '\'', 1) / 60 + 
  SUBSTRING_INDEX(SUBSTRING_INDEX(latitude, '\'', -1), '\"', 1) / 3600,
  DECIMAL(10, 8)
),
decimal_longitude = CONVERT(
  SUBSTRING_INDEX(longitude, '°', 1) + 
  SUBSTRING_INDEX(SUBSTRING_INDEX(longitude, '°', -1), '\'', 1) / 60 + 
  SUBSTRING_INDEX(SUBSTRING_INDEX(longitude, '\'', -1), '\"', 1) / 3600,
  DECIMAL(11, 8)
);

mysql经纬度转度分秒 经纬度表格转为度分秒

在开发过程中从地图取点的经纬度通常在展示的时候需要转换为度分秒展示, 如 119.299307 展示为 119°17'58''。

只需简单利用Math函数即可。同样的代码也可应用于JavaScript代码,只需将Abs、Floor等首字母改为小写即可。

代码如下

double tempValue = Convert.ToDouble(value);
    tempValue = Math.Abs(tempValue);
    var v1 = Math.Floor(tempValue);//度  
    var v2 = Math.Floor((tempValue - v1) * 60);//分  
    var v3 = Math.Round((tempValue - v1) * 3600 % 60);//秒  
    value= v1+"°"+v2+"'"+v3+"''";