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. Generate stabilized PWM signals

    A standard technique for generating analog voltages using µCs is to use a PWM output and filter the ...

  2. Unity 网络请求(1)

    using UnityEngine; using System.Collections; public class Scene1 : MonoBehaviour { //下载图片的容器 private ...

  3. POJ 1470 Closest Common Ancestors LCA题解

    本题也是找LCA的题目,只是要求多次查询.一般的暴力查询就必定超时了,故此必须使用更高级的方法,这里使用Tarjan算法. 本题处理Tarjan算法,似乎输入处理也挺麻烦的. 注意: 由于查询的数据会 ...

  4. 【Hibernate步步为营】--hql查询小介

    HQL 是指Hibernate Query Language,它是Hibernate的查询语言,拥有一套自己的查询机制,它的查询语句和SQL非常类似.在使用的时候可以非常快上手.HQL提供了基本上SQ ...

  5. JAVA Selenium PHONCOMJS 获取js动态生成完整网页

    首先需要在maven的pom.xml中包含以下依赖 <dependency> <groupId>com.github.detro</groupId> <art ...

  6. GPGPU OpenCL 获取设备信息

    在使用OpenCL编程中,需要对GPU设备的底层理解,这样才能更好的进行代码优化. 比如计算单元CU数量,每个CU的执行单元PE数量,每个CU中的共享内存大小等等.只有了解了这些才能更好的使用共享内存 ...

  7. Google Scholar 论文参考文献的自动生成

    写论文经常需要写出参考文献,各种格式实在是麻烦的不行啊,在网上看到一个参考文献自动生成的博客,现在转载下来,以备以后自已能用. 主要是使用Google Scholar. Step 1: 打开Googl ...

  8. css hack 和问题

    浏览器特定的选择 当你想改变一个样式在一个浏览器而不是其他这些选择是非常有用的. IE 6及以下    * html {} IE 7及以下    *:first-child+html {} * htm ...

  9. PHP实现双向链表

    看了很久数据结构但是没有怎么用过,在网上看到了关于PHP的数据结构,学习了一下,与大家一起分享一下.上一次分享了链表,这次来补充说一下双向链表. 简短不割                        ...

  10. RHEL7.0 配置网络IP的三种方法

    导读 RHEL7里面的网卡命名方式从eth0,1,2的方式变成了enoXXXXX的格式. en代表的是enthernet (以太网),o 代表的是onboard (内置),那一串数字是主板的某种索引编 ...