C#:数字经纬度和度分秒经纬度间的转换
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
/// <summary>
/// 公用的特殊函数
/// </summary>
public class SpecialFunctions
{
经典歌词
#region 构造函数
/// <summary>
/// 构造函数
/// </summary>
public SpecialFunctions()
{ }
#endregion
#region 方法
/// <summary>
紫叶吊兰/// 数字经纬度和度分秒经纬度转换 (Digital degree of latitude and longitude and vehicle to latitude and longitude conversion)
/// </summary>
/// <param name="digitalLati_Longi">数字经纬度</param>
/// <return>度分秒经纬度</return>
static public string ConvertDigitalToDegrees(string digitalLati_Longi)
{
double digitalDegree = Convert.ToDouble(digitalLati_Longi);
return ConvertDigitalToDegrees(digitalDegree);
}
/// <summary>
/// 数字经纬度和度分秒经纬度转换 (Digital degree of latitude and longitude and vehicle to latitude and longitude conversion)
/// </summary>
/// <param name="digitalDegree">数字经纬度</param>
/// <return>度分秒经纬度</return>
static public string ConvertDigitalToDegrees(double digitalDegree)
{
const double num = 60;
int degree = (int)digitalDegree;
double tmp = (digitalDegree - degree) * num;
int minute = (int)tmp;
double cond = (tmp - minute) * num;
string degrees = ""+ degree + "°"+ minute + "′"+ cond + "″";
return degrees;
}
干煸泥鳅/// <summary>
/// 度分秒经纬度(必须含有'°')和数字经纬度转换
/// </summary>
/// <param name="digitalDegree">度分秒经纬度</param>
/// <return>数字经纬度</return>
static public double ConvertDegreesToDigital(string degrees)
{
const double num = 60;
石湖居士是谁double digitalDegree = 0.0;
int d = degrees.IndexOf('°'); //度的符号对应的 Unicode 代码为:
向阳章
00B0[1](六十进制),显示为°。
if(d < 0)也是集
{
return digitalDegree;
}
string degree = degrees.Substring(0, d);
digitalDegree += Convert.ToDouble(degree);
int m = degrees.IndexOf('′'); //分的符号对应的 Unicode 代码为:2032[1](六十进制),显示为′。
if(m < 0)
{
return digitalDegree;
}
string minute = degrees.Substring(d + 1, m - d - 1);
digitalDegree += ((Convert.ToDouble(minute)) / num);
int s = degrees.IndexOf('″'); //秒的符号对应的 Unicode 代码为:2033[1](六十进制),显示为″。
if(s < 0)
{
return digitalDegree;
}
string cond = degrees.Substring(m + 1, s - m - 1);
digitalDegree += (Convert.ToDouble(cond) / (num * num));
return digitalDegree;
}
/// <summary>
/// 度分秒经纬度(必须含有'/')和数字经纬度转换
/// </summary>
/// <param name="digitalDegree">度分秒经纬度</param>
/// <param name="cflag">分隔符</param>
/// <return>数字经纬度</return>
static public double ConvertDegreesToDigital_default(string degrees)
{
char ch = '/';
return ConvertDegreesToDigital(degrees, ch);
蛇盘疮吃什么药
}
/// <summary>
/// 度分秒经纬度和数字经纬度转换
/// </summary>
/// <param name="digitalDegree">度分秒经纬度</param>
/// <param name="cflag">分隔符</param>
/// <return>数字经纬度</return>
static public double ConvertDegreesToDigital(string degrees, char cflag) {鼓浪屿一日游最佳攻略
const double num = 60;
double digitalDegree = 0.0;
int d = degrees.IndexOf(cflag);
if(d < 0)
{
return digitalDegree;
}
string degree = degrees.Substring(0, d);
digitalDegree += Convert.ToDouble(degree);
int m = degrees.IndexOf(cflag, d + 1);
if(m < 0)
{
return digitalDegree;
}
string minute = degrees.Substring(d + 1, m - d - 1);
digitalDegree += ((Convert.ToDouble(minute)) / num);
int s = degrees.Length;
if(s < 0)
{
return digitalDegree;
}
string cond = degrees.Substring(m + 1, s - m - 1);
digitalDegree += (Convert.ToDouble(cond) / (num * num));
return digitalDegree;
}
#endregion
}
}