Heim >Java >javaLernprogramm >Wie konvertiere ich Breiten- und Längengrade mithilfe der Mercator-Projektion in Pixelkoordinaten?

Wie konvertiere ich Breiten- und Längengrade mithilfe der Mercator-Projektion in Pixelkoordinaten?

Linda Hamilton
Linda HamiltonOriginal
2024-11-07 01:58:03731Durchsuche

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

Pixelkonvertierung der Mercator-Projektion

Die Mercator-Projektion wird häufig in der Kartierung verwendet, insbesondere für Navigationskarten. Es wandelt Breiten- und Längenkoordinaten in ein rechteckiges Raster um und eignet sich daher ideal für die Anzeige von Weltkarten auf einer ebenen Fläche.

Formelableitung

Die Mercator-Projektion wird abgeleitet aus zylindrischen Vorsprüngen. Die Formeln zum Umrechnen von Breiten- und Längengraden in rechteckige Koordinaten lauten:

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

wobei:

  • E die Ostkoordinate ist
  • N die Nordkoordinate ist
  • FE und FN sind falsche Ost- und falsche Nordwerte
  • R ist der Radius der Erde
  • λ ist der Längengrad
  • λ0 ist der Längengrad natürlichen Ursprungs
  • φ ist der Breitengrad

In der sphärischen Mercator-Projektion werden FE und FN nicht verwendet, daher vereinfacht sich die Formel zu:

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

wobei:

  • x ist die Ostkoordinate in Pixel
  • y ist die Nordkoordinate in Pixel
  • latRad ist der Breitengrad im Bogenmaß
  • mapWidth und mapHeight sind die Abmessungen des Kartenbildes in Pixel

Implementierung

In Java können Sie die Mercator-Projektionskonvertierung wie folgt implementieren:

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

Das obige ist der detaillierte Inhalt vonWie konvertiere ich Breiten- und Längengrade mithilfe der Mercator-Projektion in Pixelkoordinaten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn