C#度分秒与弧度制互换(测绘程序设计) 您所在的位置:网站首页 分秒换算怎么写过程 C#度分秒与弧度制互换(测绘程序设计)

C#度分秒与弧度制互换(测绘程序设计)

#C#度分秒与弧度制互换(测绘程序设计)| 来源: 网络整理| 查看: 265

测绘人接触的最多的就是坐标,除了坐标系统不同之外,同一个坐标的经纬度有时也会表现出不同的坐标形式。

如度分秒(用ddd.mmss表示,ss可以有很多位)或者度(用ddd.d表示,小数可以有很多位)或者弧度(用rad表示)

比如Arcgis图形数据与外部坐标数据互转方法中,要直接导入到arcgis中的坐标就必须是度。

我们要坐标转换,那些投影公式输入的坐标要求的都是弧度。这里只需要加一个转换就可以了。

一、弧度与度的转换 

rad = ddd.d / 180 * Math.PI; ddd.d = rad * 180 / Math.PI;

二、度分秒与弧度的转换

度分秒的格式为ddd.mmssss

所以将度分秒分别从dd.mmssss中提出来,然后

ddd.d=ddd+mm/60+ssss/3600(ssss这里指的是ss.ss)

输入的是度分秒,转换成度之后,可以再转出弧度 

//度分秒转换弧度制dd.mmssss public static double DMS2RAD(double dms) { double deg = Math.Truncate(dms); double min = Math.Truncate((dms - deg) * 100); double sec = (((dms - deg) * 100 - min) * 100); double rad = (deg + min / 60 + sec / 3600) / 180 * Math.PI; return rad; }

三、弧度与度分秒的转换

度的整数部分就是度分秒的整数部分

(度的小数部分×60)的整数部分就是度分秒的分,要取2位,不足要补0

(度的小数部分×60)-度分秒的分,然后再乘以60,就是度分秒的秒

输入弧度,先转换为度的形式,再将度转换为度分秒。

public static double RAD2DMS(double rad) { double degree = rad * 180 / Math.PI; double deg = Math.Truncate(degree); double min = Math.Truncate((degree - deg) * 60); double sec = Math.Round(((degree - deg) * 60 - min) * 60, 4); double dms = deg + min / 100 + sec / 10000; return dms; }

四、度分秒显示

比赛时经常需要将dd.mmssss以度分秒的形式输出,需要我们再次进行处理

其中为了避免精度损失加了1e-7

输出时就可以以° ′ ″的形式输出了。

public static string DMS2String(double dms) { string str = ""; double dd = (int)dms; double mm = (int)((dms - dd) * 100 + 0.0000001); double ss = (dms - dd - mm / 100) * 10000; str = dd.ToString() + "°" + mm.ToString() + "′" + ss.ToString("0.0") + "″"; return str; }



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

      专题文章
        CopyRight 2018-2019 实验室设备网 版权所有