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. BUZZER Driver

  2. OpenERP实施记录(12):付款处理

    本文是<OpenERP实施记录>系列文章的一部分. 1. 在前面的文章中,采购订单确认时自动生成了供应商发票,可以在 会计 > 供应商列表 > 供应商发票 查询,状态为&quo ...

  3. 11.2 为什么要使用 MVC

    以前的大部分应用程序(非Android应用)都是用像ASP.PHP或者CFML这样的过程化(自PHP5.0版本后已全面支持面向对象模型)语言来创建的.它们将像数据库查询语句这样的数据层代码和像HTML ...

  4. FAQ:Domain Event 和 C# 中的 Event 有啥区别?

    问: Domain Event 和 C# 中的 Event 有啥区别? 答: C# 中的 Event,事件.监听者列表和事件发布器是由一个类型承担,事件源和监听者之间的生命周期耦合在一起,C# 帮你提 ...

  5. ARC中的@autoreleasepool还有作用吗?

    ARC中的@autoreleasepool还有作用吗? QUESTION For the most part with ARC (Automatic Reference Counting), we d ...

  6. 分享一个基于 Node.js 的 Web 开发框架 - Nokitjs

    简介 Nokit 是一个简单易用的基于 Nodejs 的 Web 开发框架,默认提供了 MVC / NSP / RESTful 等支持,并提供对应项目模板.管理工具. 资源 GitHub https: ...

  7. 如何把rc.local里执行的shell脚本的日志内容放到其他位置

    rc.local的日志内容默认是/var/log/boot.log /etc/rc.d/rc.local文件的文件头是#!/bin/sh ,我们把这修改成#!/bin/sh -x,这样系统启动后就会把 ...

  8. jenkins的docker

    参考:https://store.docker.com/images/jenkins?tab=description https://my.oschina.net/jayqqaa12/blog/633 ...

  9. ASP.NET 5 的Roadmap(转)

    这次随 Visual Studio 2015 发布的 ASP.NET 版本是 ASP.NET 4.6 与 ASP.NET 5 beta5.在 VS2015 发布的同时,微软也发布了 ASP.NET 5 ...

  10. Android系统信息获取

    在Android中可以通过android.os.Build这个类和System.getProperty(“xxx”);来获取设备信息,下面列举的常见设备信息摘自Android群英传 Build.BOA ...