>Java >java지도 시간 >메르카토르 투영을 사용하여 위도와 경도를 픽셀 좌표로 변환하는 방법은 무엇입니까?

메르카토르 투영을 사용하여 위도와 경도를 픽셀 좌표로 변환하는 방법은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-11-07 01:58:03735검색

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

메르카토르 투영 픽셀 변환

메르카토르 투영은 매핑, 특히 탐색 차트에 널리 사용됩니다. 위도와 경도 좌표를 직사각형 그리드로 변환하여 평평한 표면에 세계 지도를 표시하는 데 이상적입니다.

공식 도출

메르카토르 투영법이 파생됩니다. 원통형 투영에서. 위도와 경도를 직사각형 좌표로 변환하는 공식은 다음과 같습니다.

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

여기서:

  • E는 Easting 좌표입니다
  • N은 Northing 좌표입니다
  • FE 및 FN은 거짓 동경 및 거짓 북향 값입니다
  • R은 지구의 반경
  • λ는 경도
  • λ0은 자연 기원의 경도입니다.
  • Φ는 위도입니다

구형 메르카토르 투영에서는 FE와 FN이 사용되지 않으므로 공식은 다음과 같이 단순화됩니다.

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

여기서:

  • x는 픽셀 단위의 동향 좌표입니다
  • y는 픽셀 단위의 북향 좌표입니다
  • latRad는 라디안 단위의 위도입니다
  • mapWidth 및 mapHeight는 지도 이미지의 크기(픽셀 단위)

구현

Java에서는 다음과 같이 메르카토르 투영 변환을 구현할 수 있습니다.

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

위 내용은 메르카토르 투영을 사용하여 위도와 경도를 픽셀 좌표로 변환하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.