Matlab 用经纬度画圆

Matlab 用经纬度画圆,matlab,google-maps,geolocation,gps,Matlab,Google Maps,Geolocation,Gps,我想用matlab绘制一个纬度和经度。用这个经纬度作为圆心,我想画一个半径为5nm的圆 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) 这个圆圈看起

我想用matlab绘制一个纬度和经度。用这个经纬度作为圆心,我想画一个半径为5nm的圆

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)

这个圆圈看起来不像我想象的那样。

在地球上画一个圆圈比它看起来更复杂

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

(两个纬度之间的距离始终约为111.3 km,而对于经度而言,这仅在赤道是正确的。在两极,两个经度之间的距离接近于零。在欧洲,该系数约为0.6。(cos(48度))

有两种解决方案,第一种更具普遍性,适用于几乎所有问题

  • 使用变换(例如等距变换,也称为等矩形变换,此变换与cos(中心线)补偿因子一起工作)将(圆心的)球面坐标转换为单位为1m的笛卡尔平面
  • 使用学校数学计算x、y平面上的点(例如圆点)
  • 使用点1的逆变换,将所有(x,y)点转换回球面(lat,lon)坐标
  • 其他解决方案
    1.编写一个函数,在定义的矩形中绘制椭圆(均为笛卡尔x,y)
    2.定义要绘制的圆的边界:
    2a:计算圆的南北直径/以度为单位:这有点棘手:距离是以米为单位定义的,您需要进行转换以获得相对度SPAN:lat的一度约为111.3公里(eart周长/360.0):使用此米/度值以度为单位计算南北距离。
    2b:以度为单位计算东西向跨度:现在更复杂:像2a一样计算,但现在除以cos(中心纬度),以补偿向北移动时需要更多度的东西向距离以获得相同的米数

    现在,使用N-S和E_W跨度绘制椭圆半直角,以获得高度和宽度

    但球体上的圆在投影显示器(或纸张)上的外观仅与投影中心的圆相似。这表明:


    它看起来像什么?(你是在考虑地图的投影吗?更新了我的答案。即使做得正确,一个圆看起来像一个只在投影中心的圆。(天梭的误差椭圆)我发现这个:可能有用