Тази статия е огледална статия за машинен превод, моля, кликнете тук, за да преминете към оригиналната статия.

Изглед: 11254|Отговор: 1

Координатите на Baidu се преобразуват в координати WGS84

[Копирай линк]
Публикувано в 11.10.2017 г. 9:56:13 ч. | | | |
Изисквания: Преобразуване на координатите на Baidu в координати WGS84
Реализация:
Първо, нека представя много сложни координатни системи в Китай, както всички знаем, GPS-ът на Съединените щати използва координати WGS84, но в Китай, поради съображения за сигурност, когато картата бъде публикувана, 84-те координати са нелинейни и пристрастни, а получените координати се наричат GCJ02 координатни системи, известни като марсиански координати. Освен това, много местни картографски компании, може би поради бизнес нужди или някакви причини за бизнес конкуренция, са извършили нелинейно отклонение въз основа на координати на Марс и са получили собствена координатна система. Baidu е такава компания. Baidu извърши BD-09 вторично нелинейно пристрастие на базата на GCJ02 и получи собствена Baidu координатна система. Това може да е полезно за собствената компания на Baidu, но за нас, разработчиците, е просто досадно.
Следва кратко въведение в координатните системи, използвани от някои доставчици на картографски услуги в Китай:



В момента Baidu предоставя API за конвертиране на координати http://api.map.baidu.com/ag/coord/convert?from=0&to=4&x=longitude&y=latitude
В това състояние
• от: Източникова координатна система (0 за оригиналните GPS координати, 2 за Google координати)
• към: Конвертирани координати (4 е собствената на Baidu, сякаш това трябва да е 4)
• x: Прецизност
• y: Ширина
Резултатът, който се връща, е json низ: {"error":0,"x":"MTIxLjUwMDIyODIxNDk2","y":"MzEuMjM1ODUwMjYwMTE3"}
• грешка: е битът за грешка, а "0" означава OK
• x: Точност на координатната система Baidu (криптиране Base64)
y: Ширина на координатната система на Байду (криптиране Base64);
Събрах значението на тези две числа онлайн:
http://api.map.baidu.com/ag/coord/convert?from=0&to=4&x=longitude&y=latitude
1: Ъглови координати, получени от GPS оборудване;
2: Метрични координати, получени чрез GPS, координати, използвани в sogou карти;
3: Координати, използвани за Google Maps, SOSO Maps, Aliyun Maps, MapABC Maps и AMAP Maps
4:3 Координатите на метъра, съответстващи на координатите на картата в списъка
5: Координатите на дължина и ширина, използвани от Baidu Maps
6: Метрични координати, използвани от Baidu Maps
7: координати на картата на картата;
8:51 Координати на картата Няма по подразбиране 1, което е координатите, получени от GPS устройството
За типовете координати на дестинацията има два варианта: 5, 6.
5: BD09LL (координати на ширина и дължина на Байду),
6: BD09MC (координати по ширина и дължина в 100 градуса метра); Не. По подразбиране е 5, т.е. bd09ll (координати на Baidu)

Горните се използват за преобразуване на 84 координати в координати на Baidu, по-долу нека поговорим как да се постигне обратното преобразуване на координатите, тоест Baidu координатите се преобразуват в 84 координати.
Намерих много алгоритми в интернет, и повечето от тях са ограничени до едно отместване, тоест обменът между координатите на Байду и координатите на Марс, обменът между координатите на Марс и координатите на Земята и т.н., и има малко споменаване на координатите на Байду до 84 координати.
В тази връзка опитах първо да преобразувам координатите на Байду в координати на Марс, а след това да преобразувам марсианските координати в координати на Земята, но резултатът не беше задоволителен, най-ниската грешка беше 60 метра, а най-голямата беше дори над 600 метра, така че трябваше да се откажа. Няма да публикувам повече алгоритъма, заинтересованите студенти могат сами да го намерят в интернет.
Тук използвам умен метод, конкретният метод е следният:
Координатите на Baidu и преобразуването на GPS координати са много близки на малки разстояния.
Да предположим, че имате координати на Baidu: x1=116.397428, y1=39.90923
Вземете тази координата като GPS координата и вземете неговите Baidu координати чрез интерфейса: 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 представлява координатите на Baidu след като G бъде преобразувана чрез Baidu api;
G' представлява координатите след като точка B бъде преобразувана чрез Baidu API;
Ако приемем, че стойността на изместването след преобразуване на координатите на Google в координати на Baidu е малка, тогава координатите на G-точка са напълно равни на
2B-G'。 След проверката, стойността на офсета след конвертиране на Google координатите в Baidu е около няколкостотин метра, което всъщност е незначително, затова използвайте този метод, за да решите проблема с офсет библиотеката с собствения API на Baidu и след това да игнорирате влиянието на преобразуването на стойности на офсет.
Разбира се, този метод има и голям недостатък, а именно, че изисква тези две точки да са в една и съща офсет база данни; ако се намира в две различни офсетни библиотеки, грешката може да е сравнително голяма.
Освен това има и друг метод, който в момента се подготвя за по-нататъшни изследвания, а именно създаването на офсетна библиотека и използването ѝ за допълнително елиминиране на това въздействие: тя все още предстои да бъде изследвана.
Ето и недостатъкът на онлайн конверсията: инструментът за конвертиране на онлайн API Baidu всъщност има ограничение на количеството конвертирани данни, всеки ключ може да конвертира само около 5 000 данни, а акаунт може да кандидатства за до 20 ключа, така че ако обемът данни е голям, всъщност не се препоръчва да се използва този вид онлайн конверсия, което е и първоначалната цел за изучаване на локалната офсет библиотека. Освен това, тъй като уеб страната може да е по-ограничена, скоростта на мрежата, едновременните заявки и др. могат да повлияят на резултатите и да повлияят на потребителското изживяване, затова горните методи са само за справка.





Предишен:Javascrip{filter}tmodule - load module require.js
Следващ:Използвайте метода на Ajax, за да POST JSON данни във фонов режим
Отричане:
Целият софтуер, програмни материали или статии, публикувани от Code Farmer Network, са само за учебни и изследователски цели; Горното съдържание не трябва да се използва за търговски или незаконни цели, в противен случай потребителите ще понесат всички последствия. Информацията на този сайт идва от интернет, а споровете за авторски права нямат нищо общо с този сайт. Трябва напълно да изтриете горното съдържание от компютъра си в рамките на 24 часа след изтеглянето. Ако ви харесва програмата, моля, подкрепете оригинален софтуер, купете регистрация и получете по-добри услуги. Ако има нарушение, моля, свържете се с нас по имейл.

Mail To:help@itsvse.com