私は、月面偵察オービターからのデータを含むプロジェクトに取り組んでいます。データセットは通常、幅 5064 ピクセル、高さ 52224 ピクセルであり、緯度と経度の一般的な (有効数字 2 桁の) 座標は、観測の中心と各コーナーのメタデータで提供されます。これらの座標を使用した典型的な観測は、次のようになります。
緯度と経度がわかっているこの画像の目立つクレーターの中心のピクセル値を取得したいとしましょう。この場合、そのクレーターの座標は、南に -11.80、東に 33.14 です。どうすればそれができますか?
オービターが南を上にしている可能性があるため、これらの画像の一部は反転しています。オービターは完全な極軌道を持っていないため、観測結果は通常直線ではありませんが、横の緯度または上/下の経度が一致する場合があります。
これまでに使用しようとした 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)
このコードは正常に動作しているように見えますが、異なる回転にある同じクレーターの 2 つの観測がある場合、得られる位置は常に同じではありません。