ホームページ  >  記事  >  Java  >  緯度と経度をメルカトル図法のピクセル座標に変換するにはどうすればよいですか?

緯度と経度をメルカトル図法のピクセル座標に変換するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-07 15:18:02243ブラウズ

How to Convert Latitude and Longitude to Mercator Projection Pixel Coordinates?

緯度経度をメルカトル図法ピクセル座標に変換する

メルカトル図法画像上に地理座標を表示するには、緯度経度を変換する必要があります。

メルカトル図法のプロパティ

メルカトル図法は、交差する線間の角度を保持する正角地図投影法です。緯度は水平の直線で表され、経度は垂直の直線で表されます。

変換式

東距 (x) と北距 (y) の座標を求めるには、緯度と経度については、次の式を使用できます:

E = R * (λ - λₒ)
N = R * ln[tan(π/4 + φ/2)]

ここで:

  • R は地球の半径です (簡単にするために球形であると仮定します)
  • λは経度(自然起源の経度は通常0°に設定されます)
  • λₒは中央子午線の経度
  • φは緯度です

簡略化球面メルカトル図法の公式:

x = R * λ
y = R * ln[tan((π/4) + (φ/2))]

コードの実装

変換を実行する Python の例を次に示します:

import math

earth_radius = 6371000 # in meters

def mercator_projection(latitude, longitude, map_width, map_height):
    """Converts latitude and longitude to Mercator projection pixel coordinates.

    Args:
        latitude (float): Latitude in degrees.
        longitude (float): Longitude in degrees.
        map_width (float): Width of the map image in pixels.
        map_height (float): Height of the map image in pixels.

    Returns:
        tuple: A tuple containing the x and y pixel coordinates.
    """

    # Convert latitude and longitude to radians
    latitude_radians = math.radians(latitude)
    longitude_radians = math.radians(longitude)

    # Calculate x and y pixel coordinates
    x = (longitude_radians + math.pi) * (map_width / (2 * math.pi))
    y = (map_height / 2) - (map_height * math.log(math.tan((math.pi / 4) + (latitude_radians / 2))) / (2 * math.pi))

    return x, y

使用例

map_width = 991
map_height = 768

latitude = 58.07
longitude = -5.93

x, y = mercator_projection(latitude, longitude, map_width, map_height)

print(f"x: {x}, y: {y}")

指定した緯度経度のメルカトル図法画像上のピクセル座標を表示します。

以上が緯度と経度をメルカトル図法のピクセル座標に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。