我正在从事一个涉及月球侦察轨道器数据的项目。数据集通常为 5064 像素宽和 52224 像素高,纬度和经度的一般(2 个有效数字)坐标在观测中心和每个角的元数据中给出。具有这些坐标的典型观察结果可能如下所示:
假设我想获得这张图像中突出陨石坑中心的像素值,我知道它的纬度和经度。在这种情况下,该陨石坑的坐标是 -11.80 South 和 33.14 East。我怎么能那样做?
需要注意的是,其中一些图像是倒置的,因为轨道器可能朝南。观测结果通常也不是直的,因为轨道器没有完美的极地轨道,尽管偶尔侧纬度或顶部/底部经度匹配。
这是迄今为止我尝试使用的一些python代码(假设x值随着您向东移动而增加,并且y值随着您向南移动而增加):
(使用 Numpy 作为 np)
eps_x_left = Lower_left_longitude - Upper_left_longitude
eps_x_right = Lower_right_longitude - Upper_right_longitude
eps_y_up = Upper_right_latitude - Upper_left_latitude
eps_y_low = Lower_right_latitude - Lower_left_latitude
# handle case where x's or y's are equal: means slope is infinite
if eps_x_left != 0:
mx = (Upper_left_latitude - Lower_left_latitude)/eps_x_left
else:
mx = np.infty
if eps_y_up != 0:
my = (Upper_right_longitude - Upper_left_longitude)/eps_y_up
else:
my = np.infty
x_prime = (y_tar - Upper_left_latitude)/mx + Upper_left_longitude
y_prime = (x_tar - Upper_left_longitude)/my + Upper_left_latitude
r_x = abs(Upper_right_longitude + eps_x_right
- Upper_left_longitude + eps_x_left)/img_size[0]
r_y = abs(Upper_left_latitude + eps_y_up
- Lower_left_latitude + eps_y_low)/img_size[1]
p_x = int(abs(x_tar - x_prime)/r_x)
p_y = int(abs(y_tar - y_prime)/r_y)
这段代码似乎工作正常,但如果我对同一个陨石坑进行两次不同旋转的观测,我得到的位置并不总是相同的。