지도가 있다고 가정합니다 (예 : openstreetmaps.org). 지도의 왼쪽 위 및 오른쪽 아래 모서리에있는 WGS-84 위도/경도를 알고 있습니다. 주어진 WGS-84 위도/경도 좌표에서지도의 다른 위치를 어떻게 찾을 수 있습니까?위/아래 오른쪽 모서리의 위도/경도가 주어진 WGS-84 lat/lon 일 때지도 위치 가져 오기
답변
지도가 대략 거리/도시 수준 인 경우 mercator projection (예 : openstreetmap.org)이 사용되고 극에 너무 가깝지 않은 경우 선형 보간이 충분히 정확할 수 있습니다. 다음과 같은 가정 : 오른쪽 아래
- TL = 위도/경도를
- BR = 위도/경도
- 는지도 = 폭과 높이 (H, W)는 (픽셀?)이
- 맵 이미지의 원점 (0,0)의 왼쪽 상단
에있다, 우리는 (x, y) positi를 보간 할 수 있습니다.
x = w * (P.lon - TL.lon)/(BR.lon - TL.lon)
y = h * (P.lat - TL.lat)/(BR.lat - TL.lat)
일반 잡았다의 :
위도/경도 표기 관례 "수평"이전 "수직", 즉 제 1 및 제 2 경도 위도 나열로 P에 해당합니다. 이것은 이미지 좌표의 일반적인 x, y 표기법과 반대입니다.
북쪽 방향 ("위로")으로 갈 때 위도 값이 증가하지만, 내려갈 때지도 이미지의 y 좌표가 증가 할 수 있습니다.
지도가 더 넓은 영역을 다루는 경우 선형 보간은 위도에 대해 정확하지 않습니다. 위도의 일 정도에 걸쳐 땅의 거주 구역에 맵 (예 Bay 지역)의 경우, 중앙 위도에
화소 미만 (크기에 따라)으로 보인다는 0.2 % 정도에 의해 해제 될 것이다 즉, 사용자의 요구에 충분히 정확한 있다면
, 당신은 여기 중지 할 수 있습니다!
P의 위도에서 픽셀 y 위치로 이동하는 데 더 정확한 수학은 mercator 수학으로 시작합니다. 우리는 (우리가 찾고있는 y 값과는 달리으로 대문자 Y를 사용합니다 다음과 같이 위도 P.lat를 들어, 프로젝션의 Y 위치가 적도에서 시작하는 것이 될 것이라고 알고, Y는 적도와 증가에서 시작) 북쪽을 향해 :
Y = k * ln((1 + sin(P.lat))/(1 - sin(P.lat)))
상수 K 우리가 알 수 없습니다지도의 수직 방향의 신축에 따라 달라집니다. 운 좋게도, y (TL) - y (BR) = h를 관찰하여 추론 할 수 있습니다. 즉, 우리를 가져옵니다
k = h/(ln((1 + sin(TL.lat))/(1 - sin(TL.lat))) - ln((1 + sin(BR.lat))/(1 - sin(BR.lat))))
이 K 알려진 (! 이궁 그 괄호 네 가지 수준이다), 우리는 지금 어떤 위도의 Y 위치를 알아내는 공식을 가지고있다. (1) 우리의 y 값이 TL.lat하지 적도에서 시작하고, (2), y는 오히려 북쪽보다는 남쪽을 향해 성장 : 우리는 단지 보정 할 필요가있다.이것은 우리를 가져옵니다
Y(TL.lat) = k * ln((1 + sin(TL.lat))/(1 - sin(TL.lat)))
Y(P.lat) = k * ln((1 + sin(P.lat))/(1 - sin(P.lat)))
y(P.lat) = -(Y(P.lat) - Y(TL.lat))
그래서이 당신에게 가져옵니다
x = w * (P.lon - TL.lon)/(BR.lon - TL.lon) // like before
y = -(Y(P.lat) - Y(TL.lat)) // where Y(anything) depends just on h, TL.lat and BR.lat
- 1. WPF TabControl 오른쪽 위 모서리의 탭 위치
- 2. SimpleCursorAdapter에서 위치 가져 오기
- 3. 모듈 객체가 주어진 서브 모듈 가져 오기
- 4. UIImageView를 회전 한 후에 오른쪽 위 모서리의 좌표를 얻으려면 어떻게해야합니까?
- 5. 목록보기의 스크롤 위치 가져 오기
- 6. Google지도에서 선택한 위치 가져 오기
- 7. javascript로 요소 위치 가져 오기
- 8. mousemove에서 컨트롤의 위치 가져 오기
- 9. 창에서 뷰 위치 가져 오기
- 10. iphone mapview에서 위치 가져 오기
- 11. iOS - 창에서보기 위치 가져 오기?
- 12. Draw2D 그림에서 오프셋 위치 가져 오기
- 13. XML 노드 위치 가져 오기 - XPath?
- 14. 정수 일 경우에만 쿼리 문자열 가져 오기
- 15. C#을 사용하여 DateTime에서 일 가져 오기
- 16. 주어진 인증서에 대한 발급 CA 가져 오기
- 17. 주어진 t를 사용하여 배열에서 값 가져 오기
- 18. 주어진 경로에 대한 GUID 가져 오기
- 19. DotNetNuke 주어진 UserID에 대한 UserInfo 가져 오기
- 20. 보이지 않는 ListItem의 위치 가져 오기
- 21. Java : 사용자가 클릭 한 좌표가 주어진 JPanel에서 마우스의 절대 위치 가져 오기
- 22. 는지도 등을 감안할 때지도
- 23. 원과 선분 교차점 탐지 (LatLon 점, 미터 반경 및 LatLon 선)
- 24. HTML에서 JS 클릭으로 좌표/위치 가져 오기
- 25. 클래스 계층 구조에서 위치 가져 오기
- 26. 프로그래밍 방식으로 Android 위치 정보 가져 오기
- 27. 텍스트 편집에서 Android에서 커서 위치 가져 오기?
- 28. 가져 오기 전에 파이썬 패키지 위치 결정
- 29. Java/Windows 응용 프로그램 위치 가져 오기
- 30. 원격 파일 경로 위치 가져 오기
는 (1) LN 무엇을 의미합니까? 대수입니까? (2) 그리고 최종 공식은 무엇입니까? 그 흐름을 따라갈 수 없다. – eros
ln은 Math.log (double)을 의미합니까? – eros
"y = - (Y (P.lat) - Y (TL.lat))"의 첫 번째 빼기 기호 (-)의 의미는 무엇입니까? – eros