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 second = (tmp - minute) * num;
string degrees = "" + degree + "°" + minute + "′" + second + "″";
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 second = degrees.Substring(m + 1, s - m - 1);
digitalDegree += (Convert.ToDouble(second) / (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 second = degrees.Substring(m + 1, s - m - 1);
digitalDegree += (Convert.ToDouble(second) / (num * num)); return digitalDegree;
} #endregion
}
}

C#: 数字经纬度和度分秒经纬度间的转换的更多相关文章

  1. 度分秒转换十进制度 之Excel实现

    我们都知道,1°=60′,1′=60″,1°=3600″.那么,轻而易举容易计算:112°18′37.6″=112+18/60+37.6/3600≍112.3104444°这当然是有参考价值的,比如爬 ...

  2. java android 将小数度数转换为度分秒格式

    /** * 将小数度数转换为度分秒格式 * @param numStr (主要用于图片中存储经纬度) * @return */ public static String convertToSexage ...

  3. windows phone 7 定位(获取经纬度),然后找到经纬度所在的位置(城市信息)

    原文:windows phone 7 定位(获取经纬度),然后找到经纬度所在的位置(城市信息) 前几天做项目用到, 代码贴给大家. /// <summary> /// 获取当前位置的经纬度 ...

  4. Excel中使用VBA进行度分秒与十进制度的转换

    发现Excel的VBA功能真是批量处理的一把利刃,工作中小试牛刀了一把,将Excel中度分秒形式的坐标批量处理成十进制度形式,处理完后用于GIS展点制图. 原Excel数据如下: VBA代码如下: S ...

  5. baidu经纬度坐标与google经纬度坐标都转换

    baidu经纬度坐标与google经纬度坐标都是经过转换的.使用下面那个url可以将原始坐标或者谷歌的坐标转换成baidu的坐标http://api.map.baidu.com/ag/coord/co ...

  6. GPS整数。度分秒转换

    例如30.453280 104.2018怎么把度数转换为度分秒的格式要详细换算方法 例如30.453280°,30.453280°,则有30°0.453280°×60= 27.1968′则有27′0. ...

  7. C#常用数据类型间的转换

    数据类型有很多种,数据类型间的转换也是有很多的方法,如果不细心整理的话等到用的时候再查就会显得很浪费时间,所以决心整理出这篇博文.主要是讲解常用数据类型之间的转换方法以及常见数据类型所占字节数. 字节 ...

  8. C++ 各种基本类型间的转换

    常用的转换方法: 流转换 STL标准函数库中函数转换 流转换 流转换主要是用到了<sstream>库中的stringstream类. 通过stringstream可以完成基本类型间的转换, ...

  9. Python常见字符编码间的转换

    主要内容:     1.Unicode 和 UTF-8的爱恨纠葛     2.字符在硬盘上的存储     3.编码的转换     4.验证编码是否转换正确     5.Python bytes类型 前 ...

随机推荐

  1. shell 快速移动,快捷操作

    ctr+h 往后删除一字符 ctr+d 往前删除一字符 ctr+b 光标往前 ctr+f 往后ctr+u 删除到最前 ctr+K删除到最后ctr+a 光标到最前 ctr+e 光标到最后ctr+p 往上 ...

  2. The New Virtual List Box in Delphi 6 - lbVirtual lbVirtualOwnerDraw

    http://users.atw.hu/delphicikk/listaz.php?id=2471&oldal=52 Problem/Question/Abstract: What are t ...

  3. Spring JavaConfig @Import实例

    一般来说, 需要按模块或类别 分割Spring XML bean文件 成多个小文件, 使事情更容易维护和模块化. 例如, <beans xmlns="http://www.spring ...

  4. matlab mex中C++内存全局共享和持久化

    为提高matlab程序运行速度,经常将核心程序编写为mex动态链接库: 然而,经常情况下,在mex函数中分配的内存或句柄希望在mex函数调用完成后在后续函数调用中能够共享而不被释放,本程序方法为解决该 ...

  5. Silverlight:《Pro Silverlight5》读书笔记 之 Dependency Properties And Routed Event

    Dependency Properties And Routed Event Dependency Properties Dynamic Value Resolution As you’ve alre ...

  6. 解决sqoop报错:SQLServerException: 将字符串转换为 uniqueidentifier 时失败。

    报错栈: Error: java.io.IOException: Cannection handler cannot recover failure: at org.apache.sqoop.mapr ...

  7. JQuery 动态提交form

    function exportExcel() { var merchantName = $('#merchantName').val(); var merchantNo = $('#merchantN ...

  8. iOS:CoreData数据库的使用二(创建多个数据库表,表之间有对应关系)

    CoreData数据库框架是一个封装性好,功能强大数据库,它底层使用的还是sqlite数据库,不过苹果公司在其基础上,为其封装新和安全性的维护上做了大量的处理,例如对一些事物做了详细的操作,如读脏数据 ...

  9. 关于一道面试题,使用C#实现字符串反转算法

    关于一道面试题,使用C#实现字符串反转算法. 题目见http://student.csdn.net/space.php?do=question&ac=detail&qid=490 详细 ...

  10. Android -- 经验分享(三)

    目录 获取系统版本号 获取系统信息 获取安装路径和已安装程序列表 获取图片.应用名.包名 解决listview上Item上有按钮时item本身不能点击的问题 不让文本框输入中文 获取屏幕宽高 将Tab ...