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

Comment convertir la latitude et la longitude en coordonnées de pixels à l'aide de la projection Mercator ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-07 01:58:03731parcourir

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

Conversion de pixels de la projection Mercator

La projection Mercator est largement utilisée en cartographie, notamment pour les cartes de navigation. Il transforme les coordonnées de latitude et de longitude en une grille rectangulaire, ce qui la rend idéale pour afficher des cartes du monde sur une surface plane.

Dérivation de formule

La projection Mercator est dérivée à partir de projections cylindriques. Les formules pour convertir la latitude et la longitude en coordonnées rectangulaires sont :

E = FE + R (λ – λ0)
N = FN + R ln[tan(π/4 + φ/2)]

où :

  • E est la coordonnée Est
  • N est la coordonnée Nord
  • FE et FN sont des valeurs de fausse est et de fausse nord
  • R est le rayon de la Terre
  • λ est la longitude
  • λ0 est la longitude d'origine naturelle
  • φ est la latitude

Dans la projection sphérique de Mercator, FE et FN ne sont pas utilisés, donc la formule se simplifie en :

x = (λ + 180) * (mapWidth / 360)
y = (mapHeight / 2) - (mapWidth * ln(tan((PI / 4) + (latRad / 2))) / (2 * PI))

où :

  • x est la coordonnée Est en pixels
  • y est la coordonnée Nord en pixels
  • latRad est la latitude en radians
  • mapWidth et mapHeight sont les dimensions de l'image de la carte en pixels

Implémentation

En Java, vous pouvez implémenter la conversion de projection Mercator comme suit :

public static void main(String[] args) {
    double latitude = 41.145556;
    double longitude = -73.995;

    double mapWidth = 200;
    double mapHeight = 100;
    
    // Convert latitude from degrees to radians
    double latRad = latitude * Math.PI / 180;

    // Calculate Easting and Northing coordinates
    double x = (longitude + 180) * (mapWidth / 360);
    double y = (mapHeight / 2) - (mapWidth * Math.log(Math.tan((Math.PI / 4) + (latRad / 2))) / (2 * Math.PI));
    
    System.out.println("Easting: " + x);
    System.out.println("Northing: " + y);
}

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