在地球上画一个圆比它看起来更复杂。
绘制一条线或一条折线很简单,因为定义了顶点。
不是这样的圈子。圆由与中心具有相同距离的所有点定义(以米为单位!不是以度为单位!!!)不幸的是,纬度和经度坐标的比例不同。
(两个纬度之间的距离总是大约 111.3 公里,而对于经度,这仅在赤道是正确的。在两极,两个经度之间的距离接近于零。在欧洲,该系数约为 0.6。(cos(48deg) )
有两种解决方案,第一种更通用,对几乎所有问题都有用。
- 使用变换(例如等距变换,也称为 equirectangular 变换,此变换与 cos(centerLat) 补偿因子一起使用)将(圆心的)球坐标转换为单位 = 1m 的笛卡尔平面
- 使用学校数学计算 x,y 平面中的点(例如圆点)。
- 使用点 1 的逆变换将所有 (x,y) 点转换回球面 (lat, lon) 坐标。
其他解决方案
1. 编写一个函数,在定义的矩形(所有笛卡尔 x,y)中绘制一个椭圆
2. 定义要绘制的圆的边界:
2a:计算圆的南北直径/度数:这有点棘手:距离以米为单位定义,您需要进行转换以获得 latitudeSpan:纬度一度约为 111.3 公里(地球周长 / 360.0):使用此米数每度值计算 NS 偏差(以度为单位)。
2b:以度数计算 EW 跨度:现在更棘手:计算类似于 2a,但现在除以 cos(centerLatitude) 以补偿在向北移动时 EW 距离需要更多度数才能获得相同的米。
现在使用 NS 和 E_W span 绘制 ellipseInRectangle 的高度和宽度。
但是球体上的圆圈在投影显示器(或纸张)上看起来就像投影中心的圆圈。由此可见:
天梭的误差椭圆