gpt4 book ai didi

matlab - 使用纬度和经度绘制圆圈

转载 作者:行者123 更新时间:2023-12-04 02:43:16 26 4
gpt4 key购买 nike

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

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

最佳答案

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

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

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

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

  • 使用变换(例如等距变换,也称为等距变换,该变换与 cos(centerLat) 补偿因子一起使用)将球坐标(圆心)转换为单位 = 1m 的笛卡尔平面
  • 使用学校数学计算 x,y 平面中的点(例如圆点)。
  • 使用点 1 的逆变换将所有 (x,y) 点转换回球面 (lat, lon) 坐标。

  • 其他解决方案
    1. 编写一个在定义的矩形(所有笛卡尔 x,y)中绘制椭圆的函数
    2. 定义要绘制的圆的边界:
    2a:计算圆的南北直径/以度为单位:这有点棘手:距离以米为单位定义,您需要进行转换才能获得纬度跨度:纬度一度约为 111.3 公里(地球圆周/360.0):使用这个meters_per_degree值以度为单位计算NS disatcne。
    2b:以度为单位计算 E-W 跨度:现在更棘手:像 2a 一样计算,但现在除以 cos(centerLatitude) 以补偿当向北移动以具有相同米时,E-W 距离需要更多度数。

    现在使用 N-S 和 E_W 跨度绘制 ellipseInRectangle 的高度和宽度。

    但是球体上的圆圈在投影的显示器(或纸张)上看起来只是投影中心的圆圈。由此可见:

    Tissot's Error Ellipse

    关于matlab - 使用纬度和经度绘制圆圈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17010464/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com