C# 计算地图上某个坐标点的到多边形各边的距离
2021-03-29 08:26
标签:code https 方法 color 一个 water iss soscw .net 转自:https://blog.csdn.net/jasonsong2008/article/details/78423496 转自JAVA版本 https://blog.csdn.net/james_laughing/article/details/72881056?locationNum=12&fps=1 在一些地图的应用中(如求偏航),常常需要求一个点到一条线程的距离,以判断是否远离航线。然而在经纬度坐标中,并没有类似直角坐标系中的公式来计算。在经纬度中,一般应用最广的公式是求两点距离的方法,如何通过两点之间的距离公式来达到计算出点到线段的方法呢,我们先来看在经纬度中求两点距离的计算方法。 一、经纬度中求两点距离的计算方法 网上有很多介绍该计算方法,此处不再 一一阐述。在北半球中: C = sin(LatA*Pi/180)*sin(LatB*Pi/180) + cos(LatA*Pi/180)*cos(LatB*Pi/180)*cos((MLonA-MLonB)*Pi/180) Distance = R*Arccos(C)*Pi/180 注1:其中LonA、LatA、LonB、LatB分别是A、B两个点的经纬度值,其中三角函数的输入和输出都采用弧度值 注2:R(地球半径)和Distance单位是相同,如果是采用6378.137千米作为半径,那么Distance就是千米为单位 C语言代码: 二、经纬坐标中求点到线段的距离的方法 在经纬坐标系中,求点C(LonC,LatC)到以点A(LonA,LatA)和点B(LonB,LatB)为端点的线段的距离D。此问题可以分为三种情况: ①点C在线段AB的正上方时,则距离D=点C到直线AB的垂直距离,如图1; ②AC与AB形成钝角时,则距离D=线段AC的长度,如图2; ③BC与AB形成钝角时,则距离D=线段BC的长度,如图3; 1、首先如何判断是属于哪种情况 我们可以利用勾股定理逆定理的推广,假如AB、BC、AC的长度分别为a,b,c在判断了某个坐标点是否在多边形内后,还有另一个需求就是当我这个坐标点在多边形外部时,我需要计算这个坐标点到多边形的距离是否在一个允许的误差范围内
通过两个位置的经纬度坐标计算距离(C#版本)
经纬坐标系中求点到线段距离的方法
转自C语言版本: https://blog.csdn.net/ufoxiong21/article/details/46487001
依据地图上的经纬度坐标计算某个点到多边形各边的距离
double getDistanceBtwP(double LonA, double LatA,double LonB, double LatB)//根据两点经纬度计算距离,X经度,Y纬度
{
double radLng1 = LatA * M_PI / 180.0;
double radLng2 = LatB * M_PI / 180.0;
double a = radLng1 - radLng2;
double b = (LonA - LonB) * M_PI/ 180.0;
double s = 2 * asin(sqrt(pow(sin(a / 2), 2)+ cos(radLng1) * cos(radLng2) * pow(sin(b / 2), 2))) * 6378.137; //返回单位为公里
return s;
}
上一篇:js的code标签显示插件
文章标题:C# 计算地图上某个坐标点的到多边形各边的距离
文章链接:http://soscw.com/index.php/essay/69427.html