zoukankan      html  css  js  c++  java
  • 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 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
        }
    }
    
  • 相关阅读:
    工作中php处理HTTP请求的缺陷总结
    php 快速读取文件夹下文件列表
    php 对象赋值后改变成员变量影响赋值对象
    奇偶数分离小程序
    阻止安卓实体返回键后退的网页js实现
    win处navicat直接导出的sql脚本导入Linux mysql报错问题
    linux安装navicat全程记录
    【自制工具类】Java删除字符串中的元素
    【JSP/Servlet】后台如何获取复选框或可选属性的同名参数
    【Jsp/Servlet】获取客户端使用的ip
  • 原文地址:https://www.cnblogs.com/shenchao/p/3773007.html
Copyright © 2011-2022 走看看