已知用经纬度表示的两点,求两点之间的直线距离

摘要:
最近,我用GDI+绘制了一幅图,并使用了经度和纬度的处理。以下是将经度和纬度转换为线性距离的代码。稍后会有用,以免再次忘记。

最近在做一个用GDI+绘图,用到了对经纬度的处理,以下是将经纬度换算成直线距离的代码,留着以后有用,免得又忘记了。

 private const double EARTH_RADIUS = 6378137;//地球半径,单位米
        private double rad(double d)
        {
            return d * Math.PI / 180.0;
        }

        private double GetDistance(string lat1, string lng1, string lat2, string lng2)
        {

            double latD1=ConvertToDouble(lat1);

            double lngD1=ConvertToDouble(lng1);

            double latD2=ConvertToDouble(lat2);

            double lngD2=ConvertToDouble(lng2);

            double radLat1 = rad(latD1);
            double radLat2 = rad(latD2);
            double a = radLat1 - radLat2;
            double b = rad(lngD1) - rad(lngD2);

            double s = 2 * Math.Asin(Math.Sqrt(Math.Pow(Math.Sin(a / 2), 2) +
             Math.Cos(radLat1) * Math.Cos(radLat2) * Math.Pow(Math.Sin(b / 2), 2)));
            s = s * EARTH_RADIUS;
            s = Math.Round(s * 10000) / 10000;
            return s;
        }

        //将经度从度分转换为double换算成度
        private double ConvertToDouble(string logi)
        {
            double result = 0;
            string temp = logi.Replace(" ", "");
            string[] du = logi.Split('°');
            string[] fen = du[1].Split('′');
            string second = fen[1].Replace("″", "");
            double fenConvertDu = Convert.ToDouble(fen[0]) / 60;
            double secondConvertDu = Convert.ToDouble(second) / 3600;
            result = Convert.ToDouble(du[0]) + fenConvertDu + secondConvertDu;
            return result;
        }

免责声明:文章转载自《已知用经纬度表示的两点,求两点之间的直线距离》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Linux下测试SSD固态硬盘写入速度【HEVC简介】DB-DeBlock Filter下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

MAPGIS把经纬度坐标转换为大地坐标

投影变换下的“投影转换”菜单下“输入单点投影转换”。 设置“原始投影参数”和“结果投影参数”,并将已知点输进去“投影点”,影转换模块,投影转换菜单下,输入单点投影变换功能。 设置当前投影:地理坐标系,单位可以是度,分,秒或ddmmss格式。根据数据决定。如数据是98.78度,那么你的单位就是度。依次类推。 设置目的投影:投影平面直角坐标系,高斯投影,比例尺...

经纬度计算距离

using System;using System.Collections.Generic;using System.Linq;using System.Text; namespace HarvenSin{ class Program { /// <summary> /// 根据经纬度,计算2个点之间的距离。 /// </summary&...

测试百度地图输入GPS经纬度显示位置API

1.我的GPS获取的经纬度做度分秒转换后为 34.636055,112.40832 2.百度API介绍 GPS的坐标是WGS84,所以测试API http://api.map.baidu.com/geocoder?location=34.636055,112.40832&coord_type=wgs84&output=html&s...

免费的天气预报API谷歌,雅虎,中央气象台 转

  Google Weather API 只支持美国地区使用邮政编码进行查询,例如: http://www.google.com/ig/api?hl=zh-cn&weather=94043 (94043 为 山景城, 美国加州 的邮政编码) 而除了美国以外的地区需要使用经纬度坐标作为参数才能执行 Google Weather API, 例如: ht...

百度地图经纬度转换

 一、使用公式进行转换 优点:转换快 缺点:会有一定偏差 查看公式 二、使用百度地图自带的convertor转换 优点:偏差小 缺点:网络延时,转换慢 <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/htm...

百度地图与腾讯/高德地图经纬度转换

 百度地图与腾讯/高德地图经纬度转换 //将腾讯/高德地图经纬度转换为百度地图经纬度function qqMapTransBMap(lng, lat) {     let x_pi = 3.14159265358979324 * 3000.0 / 180.0;     let x = lng;     let y = lat;     le...