Heim > Java > javaLernprogramm > Hauptteil

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

Linda Hamilton
Freigeben: 2024-11-07 01:58:03
Original
690 Leute haben es durchsucht

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)]
Nach dem Login kopieren

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))
Nach dem Login kopieren

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);
}
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage