使用纬度和经度绘制圆

时间:2013-06-09 14:09:20

标签: matlab google-maps geolocation gps

我想用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)

圆圈看起来不像我期望的那样。

1 个答案:

答案 0 :(得分:2)

在地球上画圆圈看起来更复杂。

绘制直线或折线很简单,因为顶点是定义的 圈子不是这样。 一个圆由所有与中心距离相同的点定义(以米为单位!不以度为单位!!!) Unfortuantley lat和lon坐标具有不同的比例。

(两度latidtude之间的距离总是约111.3 km,而经度只有赤道才有。在两极处,两个经度之间的距离接近零。在欧洲,因子约为0.6。(cos (48deg))

有两种解决方案,第一种是更普遍,对几乎所有问题都有用。

  1. 使用单位= 1m将球面坐标(圆心)转换为笛卡尔平面,使用变换(例如,等距变换,也称为equirectangular transf。,此变换与cos(centerLat)补偿因子一起工作)
  2. 使用学校数学计算x,y平面上的点(例如圆点)。
  3. 使用点1的逆变换将所有(x,y)点转换回球形(lat,lon)坐标。
  4. 其他解决方案
    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以获得高度和宽度。

    但是球体上的圆圈在投影的显示器(或纸张)上看起来就像投影中心的圆圈一样。这表明:

    Tissot's Error Ellipse