Maison >Java >javaDidacticiel >Comment convertir la latitude et la longitude en coordonnées de pixels de projection Mercator ?

Comment convertir la latitude et la longitude en coordonnées de pixels de projection Mercator ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-07 15:18:02322parcourir

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

Conversion de la latitude et de la longitude en coordonnées de pixels de projection Mercator

Pour afficher les coordonnées géographiques sur une image de projection Mercator, il est nécessaire de convertir la latitude et la longitude valeurs en coordonnées de pixels correspondantes.

Propriétés de la projection Mercator

La projection Mercator est une projection cartographique conforme qui préserve les angles entre les lignes qui se croisent. Les latitudes sont représentées par des lignes droites horizontales, tandis que les longitudes sont représentées par des lignes droites verticales.

Formules de conversion

Pour dériver les coordonnées Est (x) et Nord (y) de latitude et longitude, les formules suivantes peuvent être utilisées :

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

où :

  • R est le rayon de la Terre (supposé sphérique pour plus de simplicité)
  • λ est la longitude (la longitude d'origine naturelle est généralement fixée à 0°)
  • λₒ est la longitude du méridien central
  • φ est la latitude

Simplification les formules pour la projection sphérique de Mercator :

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

Implémentation du code

Voici un exemple en Python qui effectue la conversion :

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

Exemple d'utilisation

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}")

Cela affichera les coordonnées en pixels sur l'image de projection Mercator pour la latitude et la longitude spécifiées.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn