Ten artykuł jest lustrzanym artykułem tłumaczenia maszynowego, kliknij tutaj, aby przejść do oryginalnego artykułu.

Widok: 11254|Odpowiedź: 1

Współrzędne Baidu są przeliczane na współrzędne WGS84

[Skopiuj link]
Opublikowano 11.10.2017 09:56:13 | | | |
Wymagania: Przekonwertowanie współrzędnych Baidu na współrzędne WGS84
Realizacja:
Przede wszystkim pozwólcie, że przedstawię wiele skomplikowanych układów współrzędnych w Chinach – jak wszyscy wiemy, amerykański GPS używa współrzędnych WGS84, ale w Chinach, ze względów bezpieczeństwa, gdy mapa zostaje opublikowana, 84 współrzędne są nieliniowe i stronnicze, a uzyskane współrzędne nazywane są układami współrzędnych GCJ02, powszechnie znanymi jako współrzędne marsjańskie. Ponadto wiele krajowych firm mapowych, być może ze względów biznesowych lub z powodów konkurencji, przeprowadziło nieliniowe odchylenie na podstawie współrzędnych marsjańskich i uzyskało własny układ współrzędnych. Baidu to właśnie taka firma. Baidu wykonał wtórne nieliniowe bias BD-09 na bazie GCJ02 i uzyskał własny układ współrzędnych Baidu. Może to być korzystne dla firmy Baidu, ale dla nas, deweloperów, jest to po prostu irytujące.
Poniżej znajduje się krótkie wprowadzenie do układów współrzędnych używanych przez niektórych dostawców usług mapowych w Chinach:



Obecnie Baidu udostępnia API do konwersji współrzędnych, http://api.map.baidu.com/ag/coord/convert?from=0&to=4&x=longitude&y=latitude
w tym
• z: Źródłowy układ współrzędnych (0 dla oryginalnych współrzędnych GPS, 2 dla współrzędnych Google)
• do: Przekonwertowanych współrzędnych (4 to własne współrzędne Baidu, jakby to musiało być 4)
• x: Precyzja
• y: Szerokość geograficzna
Wynik zwracany to ciąg json: {"error":0,"x":"MTIxLjUwMDIyODIxNDk2","y":"MzEuMjM1ODUwMjYwMTE3"}
• błąd: to bit znaku błędu, a "0" oznacza OK
• x: Dokładność układu współrzędnych Baidu (szyfrowanie Base64)
y: Szerokość geograficzna układu współrzędnych Baidu (szyfrowanie Base64);
Zebrałem znaczenie tych dwóch liczb online:
http://api.map.baidu.com/ag/coord/convert?from=0&to=4&x=longitude&y=latitude
1: Współrzędne kątowe uzyskane przez sprzęt GPS;
2: Współrzędne metryczne uzyskane przez GPS, współrzędne używane w mapach Sogou;
3: Współrzędne używane dla Google Maps, SOSO Maps, Aliyun Maps, MapABC Maps oraz AMAP Maps
4:3 Współrzędne metrowe odpowiadające współrzędnym mapy z listy
5: Współrzędne długości i szerokości geograficznej używane przez Baidu Maps
6: Współrzędne metryczne używane przez Baidu Maps
7: współrzędne mapy na pasku mapy;
8:51 Współrzędne mapy Brak domyślnych wartości wynosi 1, czyli współrzędne uzyskane przez urządzenie GPS
Aby wybrać typy współrzędnych docelowych, są dwie opcje: 5, 6.
5: BD09LL (współrzędne szerokości i długości Baidu),
6: BD09MC (współrzędne szerokości i długości geograficznej w 100 stopniach); Nie. Domyślnie to 5, czyli bd09ll (współrzędne Baidu)

Powyższe są używane do konwersji 84 współrzędnych na współrzędne Baidu, poniżej porozmawiajmy o tym, jak osiągnąć odwrotną konwersję współrzędnych, czyli współrzędne Baidu są przeliczane na 84 współrzędne.
Znalazłem wiele algorytmów w Internecie, a większość z nich ogranicza się do jednego przesunięcia, czyli wymiany współrzędnych Baidu i Marsa, wymiany współrzędnych Marsa i Ziemi itd., a o współrzędnych Baidu jest niewiele wzmianki o współrzędnych Baidu do 84 współrzędnych.
W tym kontekście najpierw próbowałem przekonwertować współrzędne Baidu na marsjańskie, a potem marsjańskie na ziemskie, ale wynik nie był zadowalający – najmniejszy błąd to 60 metrów, a największy nawet ponad 600 metrów, więc musiałem się poddać. Nie będę już publikować algorytmu, zainteresowani studenci mogą sami szukać go w Internecie.
Tutaj stosuję sprytną metodę, a konkretna metoda jest następująca:
Współrzędne Baidu i konwersja współrzędnych GPS są bardzo blisko siebie na bliskich odległościach.
Załóżmy, że masz współrzędne Baidu: x1=116.397428, y1=39.90923
Weź tę współrzędną jako współrzędną GPS i pobierz jego współrzędne Baidu przez interfejs: x2=116.41004950566, y2=39.916979519873

Współrzędne GPS można uzyskać poprzez obliczenia:
x = 2*x1-x2,y = 2*y1-y2
x=116.38480649434001
y=39.901480480127。
Aby zweryfikować dokładność tej metody, pobrałem współrzędne 14 głównych miast w Chinach, południowo-wschodnich, północno-zachodnich i północno-zachodnich krajach, a wyniki uzyskały odchylenie 13 metrów i minimum 0,x metra. Błąd kompleksowy to 6 metrów. Szczegółowe wyniki testów zostaną opublikowane później.
Pozwólcie, że narysuję prosty diagram, aby zobrazować ten problem.



G oznacza oryginalne, nieprzekonwertowane współrzędne Ziemi;
B reprezentuje współrzędne Baidu po konwersji G przez API Baidu;
G' oznacza współrzędne po konwersji punktu B przez Baidu API;
Zakładając, że wartość przesunięcia po konwersji współrzędnych Google na współrzędne Baidu jest mała, to współrzędne punktu G są idealnie równe
2B-G'。 Po weryfikacji wartość przesunięcia po konwersji współrzędnych Google na współrzędne Baidu wynosi około kilkuset metrów, co jest w rzeczywistości pomijalne, więc użyj tej metody, aby rozwiązać problem biblioteki przesunięcia za pomocą własnego API Baidu, a następnie zignoruj wpływ konwersji wartości przesunięcia.
Oczywiście ta metoda ma też dużą wadę, ponieważ wymaga, aby te dwa punkty znajdowały się w tej samej bazie danych offset, jeśli znajduje się ona w dwóch różnych bibliotekach offsetów, błąd może być stosunkowo duży.
Ponadto jest obecnie przygotowywana inna metoda do dalszych badań, czyli utworzenie biblioteki offsetowej i wykorzystanie jej do dalszego wyeliminowania tego wpływu: wciąż jest ona do przeanalizowania.
Oto wada konwersji online: narzędzie do konwersji Baidu online API faktycznie ma limit ilości konwertowanych danych, każdy klucz może przekonwertować tylko około 5 000 fragmentów danych, a konto może aplikować do 20 kluczy, więc jeśli ilość danych jest duża, nie zaleca się stosowania tego typu konwersji online, co było również pierwotnym celem badania lokalnej biblioteki offsetowej. Dodatkowo, ponieważ strona internetowa może być bardziej ograniczona, prędkość sieci, jednoczesne żądania itp. mogą wpływać na wyniki i doświadczenie użytkownika, dlatego powyższe metody służą jedynie jako punkt odniesienia.





Poprzedni:Javascrip{filter}tmodule - load module require.js
Następny:Użyj metody Ajax, aby POST danych JSON przenieść do tła
Zrzeczenie się:
Całe oprogramowanie, materiały programistyczne lub artykuły publikowane przez Code Farmer Network służą wyłącznie celom edukacyjnym i badawczym; Powyższe treści nie mogą być wykorzystywane do celów komercyjnych ani nielegalnych, w przeciwnym razie użytkownicy ponoszą wszelkie konsekwencje. Informacje na tej stronie pochodzą z Internetu, a spory dotyczące praw autorskich nie mają z nią nic wspólnego. Musisz całkowicie usunąć powyższą zawartość z komputera w ciągu 24 godzin od pobrania. Jeśli spodoba Ci się program, wspieraj oryginalne oprogramowanie, kup rejestrację i korzystaj z lepszych, autentycznych usług. W przypadku naruszenia praw prosimy o kontakt mailowy.

Mail To:help@itsvse.com