我想用matlab绘制纬度和经度。使用该纬度和经度作为圆的中心,我想绘制一个半径为5 Nm的圆。
r = 5/60;
nseg = 100;
x = 25.01;
y = 55.01;
theta = 0 : (2 * pi / nseg) : (2 * pi);
pline_x = r * cos(theta) + x;
pline_y = r * sin(theta) + y;
hold all
geoshow(pline_x, pline_y)
geoshow(x, y)
圆圈看起来不像我期望的那样。
答案 0 :(得分:2)
在地球上画圆圈看起来更复杂。
绘制直线或折线很简单,因为顶点是定义的 圈子不是这样。 一个圆由所有与中心距离相同的点定义(以米为单位!不以度为单位!!!) Unfortuantley lat和lon坐标具有不同的比例。
(两度latidtude之间的距离总是约111.3 km,而经度只有赤道才有。在两极处,两个经度之间的距离接近零。在欧洲,因子约为0.6。(cos (48deg))
有两种解决方案,第一种是更普遍,对几乎所有问题都有用。
其他解决方案
1.编写一个在定义的矩形中绘制椭圆的函数(所有笛卡尔x,y)
2.定义绘制圆的边界:
2a:计算圆的南北直径/度:这有点棘手:距离以米为单位定义,需要转换才能获得纬度:一度纬度约为111.3 km(eart circumence / 360.0):此meter_per_degree值以度为单位计算NS disatcne
2b:计算以度为单位的E-W跨度:现在更加棘手:像2a一样计算,但现在除以cos(centerLatitude)来补偿E-W距离向北移动需要更多度数以获得相同的米。
现在使用N-S和E_W span绘制ellipseInRectangle以获得高度和宽度。
但是球体上的圆圈在投影的显示器(或纸张)上看起来就像投影中心的圆圈一样。这表明: