Bán kính chính của hình cầu WGS84 là a = 6378137 mét và độ phẳng của nó là f = 298.257223563, trong đó độ lệch tâm bình phương là
e2 = (2 - 1/f)/f = 0.0066943799901413165.
Bán kính kinh tuyến của độ cong ở vĩ độ phi là
M = a(1 - e2) / (1 - e2 sin(phi)^2)^(3/2)
và bán kính cong dọc song song là
N = a / (1 - e2 sin(phi)^2)^(1/2)
Hơn nữa, bán kính của song song là
r = N cos(phi)
Đây là các hiệu chỉnh nhân cho các giá trị hình cầu của M và N , cả hai đều bằng bán kính hình cầu a , đây là giá trị mà chúng giảm xuống khi e2 = 0.
Tại điểm màu vàng ở vĩ độ 45 độ Bắc, đĩa màu xanh bán kính M là vòng tròn thẩm thấu ("hôn") theo hướng kinh tuyến và đĩa đỏ bán kính N là vòng tròn thẩm thấu theo hướng song song: cả hai đĩa chứa hướng "xuống" tại thời điểm này. Con số này phóng đại sự làm phẳng trái đất bằng hai bậc độ lớn.
Bán kính cong xác định độ dài của độ: khi một hình tròn có bán kính R , chu vi của nó dài 2 pi R bao gồm 360 độ, trong đó độ dài của một độ là pi * R / 180. Thay thế M và r cho R - - nghĩa là nhân M và r với pi / 180 - đưa ra các công thức chính xác đơn giản cho độ dài độ.
Các công thức này - chỉ dựa trên các giá trị đã cho của a và f (có thể tìm thấy ở nhiều nơi ) và mô tả hình cầu như một hình elip xoay - đồng ý với các tính toán trong câu hỏi trong vòng 0,6 phần mỗi triệu (một vài cm), gần bằng thứ tự độ lớn của các hệ số nhỏ nhất trong câu hỏi, cho thấy họ đồng ý. (Giá trị gần đúng luôn thấp một chút.) Trong biểu đồ, lỗi tương đối về độ dài của một độ vĩ độ là màu đen và của kinh độ là màu đỏ:
Theo đó, chúng ta có thể hiểu các phép tính trong câu hỏi là gần đúng (thông qua chuỗi lượng giác cắt ngắn) với các công thức đã cho ở trên.
Các hệ số có thể được tính từ chuỗi cosin Fourier cho M và r là các hàm của vĩ độ. Chúng được đưa ra dưới dạng các hàm elip của e2, sẽ quá lộn xộn để tái tạo ở đây. Đối với hình cầu WGS84, tính toán của tôi đưa ra
m1 = 111132.95255
m2 = -559.84957
m3 = 1.17514
m4 = -0.00230
p1 = 111412.87733
p2 = -93.50412
p3 = 0.11774
p4 = -0.000165
(Bạn có thể đoán làm thế nào để p4
nhập công thức. :) Sự gần gũi của các giá trị này với các tham số trong mã chứng thực tính chính xác của cách hiểu này. Sự gần đúng được cải thiện này là chính xác đến tốt hơn nhiều so với một phần tỷ ở mọi nơi.
Để kiểm tra câu trả lời này, tôi đã thực thi R
mã để thực hiện cả hai phép tính:
#
# Radii of meridians and parallels on a spheroid. Defaults to WGS84 meters.
# Input is latitude (in degrees).
#
radii <- function(phi, a=6378137, e2=0.0066943799901413165) {
u <- 1 - e2 * sin(phi)^2
return(cbind(M=(1-e2)/u, r=cos(phi)) * (a / sqrt(u)))
}
#
# Approximate calculation. Same interface (but no options).
#
m.per.deg <- function(lat) {
m1 = 111132.92; # latitude calculation term 1
m2 = -559.82; # latitude calculation term 2
m3 = 1.175; # latitude calculation term 3
m4 = -0.0023; # latitude calculation term 4
p1 = 111412.84; # longitude calculation term 1
p2 = -93.5; # longitude calculation term 2
p3 = 0.118; # longitude calculation term 3
latlen = m1 + m2 * cos(2 * lat) + m3 * cos(4 * lat) + m4 * cos(6 * lat);
longlen = p1 * cos(lat) + p2 * cos(3 * lat) + p3 * cos(5 * lat);
return(cbind(M.approx=latlen, r.approx=longlen))
}
#
# Compute the error of the approximation `m.per.deg` compared to the
# correct formula and plot it as a function of latitude.
#
phi <- pi / 180 * seq(0, 90, 10)
names(phi) <- phi * 180 / pi
matplot(phi * 180 / pi, 10^6 * ((m.per.deg(phi) - radii(phi) * pi / 180) /
(radii(phi) * pi / 180)),
xlab="Latitude (degrees)", ylab="Relative error * 10^6",lwd=2, type="l")
Tính toán chính xác với radii
có thể được sử dụng để in các bảng có độ dài độ, như trong
zapsmall(radii(phi) * pi / 180)
Đầu ra được tính bằng mét và trông như thế này (với một số dòng bị xóa):
M r
0 110574.3 111319.49
10 110607.8 109639.36
20 110704.3 104647.09
...
80 111659.9 19393.49
90 111694.0 0.00
Người giới thiệu
LM Bugayevskiy và JP Snyder, Dự đoán bản đồ - Hướng dẫn tham khảo. Taylor & Francis, 1995. (Phụ lục 2 và Phụ lục 4)
JP Snyder, Dự đoán bản đồ - Hướng dẫn làm việc. USGS Professional Paper 1395, 1987. (Chương 3)