Maison > Java > javaDidacticiel > le corps du texte

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

Linda Hamilton
Libérer: 2024-11-07 01:58:03
original
688 Les gens l'ont consulté

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)]
Copier après la connexion

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))
Copier après la connexion

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);
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal