이 글은 기계 번역의 미러 문서이며, 원본 기사로 바로 이동하려면 여기를 클릭해 주세요.

보기: 11254|회답: 1

바이두 좌표는 WGS84 좌표로 변환됩니다

[링크 복사]
게시됨 2017. 10. 11. 오전 9:56:13 | | | |
요구사항: 바이두 좌표를 WGS84 좌표로 변환
구현:
우선, 중국의 복잡한 좌표계를 소개하겠습니다. 미국 GPS는 WGS84 좌표를 사용하지만, 중국에서는 보안상의 이유로 지도가 공개될 때 84 좌표가 비선형적이고 편향되어 있으며, 얻은 좌표를 GCJ02 좌표계, 즉 화성 좌표라고 부릅니다. 또한, 많은 국내 지도 회사들은 사업적 필요나 경쟁의 이유로 화성 좌표를 기반으로 비선형 편차를 수행하고 자체 좌표계를 확보했습니다. 바이두가 바로 그런 회사입니다. 바이두는 GCJ02를 기반으로 BD-09 2차 비선형 바이어스를 수행하고 자체 바이두 좌표계를 획득했습니다. 이것이 바이두 자체 회사에는 도움이 될 수 있지만, 우리 개발자들에게는 단지 짜증나는 일일 뿐입니다.
다음은 중국의 일부 지도 서비스 제공업체들이 사용하는 좌표계에 대한 간략한 소개입니다:



현재 바이두는 좌표 변환을 위한 API를 제공하고 있습니다 http://api.map.baidu.com/ag/coord/convert?from=0&to=4&x=longitude&y=latitude
그곳으로
• 출처: 소스 좌표계 (원본 GPS 좌표는 0, 구글 좌표는 2)
• 변환: 좌표 변환 (4는 바이두의 좌표로, 반드시 4일 필요 없음)
• x: 정밀도
• y: 위도
결과는 json 문자열입니다: {"error":0,"x":"MTIxLjUwMDIyODIxNDk2","y":"MzEuMjM1ODUwMjYwMTE3"}
• error: 오류 마크 비트이며, "0"은 OK를 의미합니다
• x: 바이두 좌표계 정확도(Base64 암호화)
y: 바이두 좌표계의 위도(Base64 암호화);
이 두 숫자의 의미를 온라인에서 수집했습니다:
http://api.map.baidu.com/ag/coord/convert?from=0&to=4&x=longitude&y=latitude
1: GPS 장비로 얻은 각도 좌표;
2: GPS로 얻은 미터 좌표, 소구우 지도에서 사용되는 좌표;
3: 구글 지도, SOSO 지도, 알리윤 지도, MapABC 지도, AMAP 지도에 사용되는 좌표
4:3 미터 좌표는 목록에 있는 지도 좌표에 해당합니다
5: 바이도 지도에서 사용하는 경도와 위도 좌표
6: 바이두 지도에서 사용하는 미터법 좌표
7: 맵바 지도 좌표;
8:51 지도 좌표 기본값은 1이 없으며, 이는 GPS 장치가 얻은 좌표입니다
목적지 좌표 유형에는 두 가지 옵션이 있습니다: 5, 6.
5: BD09LL (바이두 위도 및 경도 좌표),
6: BD09MC (위도 및 경도 좌표 100미터); 아니요 기본값은 5입니다. 즉, bd09ll(바이두 좌표)입니다.

위 모든 방법은 84 좌표를 바이두 좌표로 변환하는 데 사용되며, 아래에서는 좌표의 역변환, 즉 바이두 좌표를 84 좌표로 변환하는 방법에 대해 이야기하겠습니다.
인터넷에서 많은 알고리즘을 찾았는데, 대부분은 바이두 좌표와 화성 좌표 간의 교환, 화성 좌표와 지구 좌표 간의 교환 등으로 제한되어 있고, 바이두 좌표가 84 좌표에 대한 언급은 거의 없습니다.
이와 관련해 바이두 좌표를 화성 좌표로 변환한 뒤, 화성 좌표를 지구 좌표로 변환해 보려 했지만, 결과는 만족스럽지 못했고, 가장 작은 오차는 60미터였으며, 가장 큰 오차는 600미터가 넘었기에 포기할 수밖에 없었다. 더 이상 알고리즘을 게시하지 않겠습니다. 관심 있는 학생들은 직접 인터넷에서 찾아보실 수 있습니다.
여기서는 영리한 방법을 사용합니다. 구체적인 방법은 다음과 같습니다:
바이두 좌표와 GPS 좌표 변환은 가까운 거리에서도 매우 가깝습니다.
예를 들어 바이두 좌표가 x1=116.397428, y1=39.90923이라고 가정해 봅시다
이 좌표를 GPS 좌표로 받아들이고 인터페이스를 통해 그의 바이두 좌표를 받아보세요: x2=116.41004950566, y2=39.916979519873

GPS의 좌표는 다음과 같은 계산을 통해 얻을 수 있습니다:
x = 2*x1-x2, y = 2*y1-y2
x=116.38480649434001
y=39.901480480127.
이 방법의 정확성을 검증하기 위해 중국 남동부, 북서부, 북서부 등 14개 주요 도시의 좌표를 시험했으며, 결과는 13미터의 편차와 최소 0.x 미터의 차이를 보였습니다. 종합 오차는 6미터입니다. 구체적인 검사 결과는 추후에 게시될 예정입니다.
이 문제를 설명하기 위해 간단한 도표를 그려보겠습니다.



G는 원래 변환되지 않은 지구 좌표를 나타내며;
B는 G가 바이두 API를 통해 변환된 후 바이두 좌표를 나타냅니다;
G'는 B점이 바이두 API를 통해 변환된 후의 좌표를 나타냅니다;
구글 좌표를 바이두 좌표로 변환한 후 오프셋 값이 작다고 가정하면, G점 좌표는 완벽하게 다음과 같습니다.
2B-G'. 검증 후 구글 좌표를 바이두 좌표로 변환한 오프셋 값은 약 수백 미터 정도로, 사실 무시할 수 있는 수준입니다. 따라서 이 방법으로 바이두의 자체 API로 오프셋 라이브러리 문제를 해결하고, 오프셋 값을 변환하는 영향은 무시하세요.
물론 이 방법에는 큰 단점도 있는데, 두 지점이 반드시 같은 오프셋 데이터베이스에 있어야 하며, 만약 두 개의 다른 오프셋 라이브러리에 위치해 있다면 오차가 비교적 클 수 있습니다.
또한, 현재 추가 연구를 위해 준비 중인 또 다른 방법이 있는데, 이는 오프셋 라이브러리를 구축하고 이 오프셋 라이브러리를 이용해 이 영향을 더욱 제거하는 것입니다. 이 방법은 아직 연구되지 않았습니다.
온라인 변환의 단점은 다음과 같습니다: 바이두 온라인 API 변환 도구는 변환 데이터 양에 제한이 있으며, 각 키는 약 5,000개의 데이터만 변환할 수 있고, 계정은 최대 20개의 키를 신청할 수 있습니다. 따라서 데이터 양이 많을 경우 이러한 온라인 변환 방식을 사용하는 것은 권장되지 않습니다. 이는 지역 오프셋 라이브러리를 연구하는 원래 의도이기도 합니다. 또한 웹 측이 더 제한적일 수 있어 네트워크 속도, 동시 요청 등이 결과와 사용자 경험에 영향을 미칠 수 있으므로, 위의 방법은 참고용일 뿐입니다.





이전의:Javascrip{filter}tmodule - load module require.js
다음:Ajax 메서드를 사용해 JSON 데이터를 백그라운드에 POST
면책 조항:
Code Farmer Network에서 발행하는 모든 소프트웨어, 프로그래밍 자료 또는 기사는 학습 및 연구 목적으로만 사용됩니다; 위 내용은 상업적 또는 불법적인 목적으로 사용되지 않으며, 그렇지 않으면 모든 책임이 사용자에게 부담됩니다. 이 사이트의 정보는 인터넷에서 가져온 것이며, 저작권 분쟁은 이 사이트와는 관련이 없습니다. 위 내용은 다운로드 후 24시간 이내에 컴퓨터에서 완전히 삭제해야 합니다. 프로그램이 마음에 드신다면, 진짜 소프트웨어를 지원하고, 등록을 구매하며, 더 나은 진짜 서비스를 받아주세요. 침해가 있을 경우 이메일로 연락해 주시기 바랍니다.

Mail To:help@itsvse.com