Požiadavky: Konvertovať Baidu súradnice na WGS84 Implementácia: Najprv mi dovoľte predstaviť mnoho zložitých súradnicových systémov v Číne, ako všetci vieme, americké GPS používa súradnice WGS84, ale v Číne, z bezpečnostných dôvodov, keď je mapa zverejnená a publikovaná, 84 súradníc je nelineárnych a skreslených a získané súradnice sa nazývajú GCJ02 súradnicové systémy, bežne známe ako marsovské súradnice. Okrem toho mnohé domáce mapové spoločnosti, možno z dôvodu obchodných potrieb alebo z dôvodov konkurencie, vykonali nelineárnu odchýlku na základe marsovských súradníc a získali vlastný súradnicový systém. Baidu je taká spoločnosť. Baidu vykonal sekundárne nelineárne predpätie BD-09 na základe GCJ02 a získal vlastný Baidu súradnicový systém. To môže byť prospešné pre Baiduovu vlastnú spoločnosť, ale pre nás vývojárov je to jednoducho otravné. Nasleduje stručný úvod do súradnicových systémov používaných niektorými poskytovateľmi mapových služieb v Číne:
V súčasnosti Baidu poskytuje API na konverziu súradníc, http://api.map.baidu.com/ag/coord/convert?from=0&to=4&x=longitude&y=latitude do toho • z: Zdrojový súradnicový systém (0 pre pôvodné GPS súradnice, 2 pre Google súradnice) • na: Konvertované súradnice (4 je Baiduova vlastná, akoby to muselo byť 4) • x: Presnosť • y: Zemepisná šírka Výsledok vrátený je json reťazec: {"error":0,"x":"MTIxLjUwMDIyODIxNDk2","y""MzEuMjM1ODUwMjYwMTE3"} • chyba: je bit s chybovým znakom, a "0" znamená OK • x: Presnosť Baidu súradnicového systému (Base64 šifrovanie) y: Zemepisná šírka súradnicového systému Baidu (šifrovanie Base64); Význam týchto dvoch čísel som zhromaždil online:
http://api.map.baidu.com/ag/coord/convert?from=0&to=4&x=longitude&y=latitude 1: Uhlové súradnice získané pomocou GPS zariadení; 2: Metrické súradnice získané pomocou GPS, súradnice používané v Sogou mapách; 3: Súradnice používané pre Google Maps, SOSO Maps, Aliyun Maps, MapABC Maps a AMAP Maps 4:3 Metrové súradnice zodpovedajúce súradniciam mapy v zozname 5: Súradnice zemepisnej dĺžky a zemepisnej šírky používané mapami Baidu 6: Metrické súradnice používané v Baidu Maps 7: mapové súradnice na mape; 8:51 Súradnice na mape Žiadna predvolená hodnota nie je 1, čo sú súradnice získané GPS zariadením Na určenie cieľových typov súradníc existujú dve možnosti: 5, 6. 5: BD09LL (Baidu súradnice zemepisnej šírky a dĺžky), 6: BD09MC (súradnice zemepisnej šírky a dĺžky v 100 stupňoch); Nie Predvolené je 5, teda bd09ll (Baidu súradnice)
Všetky vyššie uvedené sa používajú na prevod 84 súradníc na Baidu súradnice, nižšie si povedzme, ako dosiahnuť reverzný prevod súradníc, teda Baidu súradnice sa konvertujú na 84 súradníc. Našiel som veľa algoritmov na internete a väčšina z nich je obmedzená na jeden posun, teda výmenu medzi Baidu a Marsovými súradnicami, výmenu medzi Marsovými a Zemskými súradnicami a podobne, a o Baidu súradniciach na 84 súradniciach je málo zmienok. V tomto ohľade som sa najprv pokúsil previesť Baiduove súradnice na marsovské a potom marťanské súradnice na zemské, ale výsledok nebol uspokojivý, najnižšia chyba bola 60 metrov a najväčšia chyba bola dokonca viac ako 600 metrov, takže som to musel vzdať. Algoritmus už nebudem zverejňovať, záujemcovia si ho môžu sami nájsť na internete. Tu používam šikovnú metódu, konkrétna metóda je nasledovná: Baidu súradnice a konverzia GPS súradníc sú veľmi blízke na blízku vzdialenosť. Predpokladajme, že máte Baiduove súradnice: x1=116,397428, y1=39,90923 Vezmite túto súradnicu ako GPS súradnicu a získajte jeho Baidu súradnice cez rozhranie: x2=116.41004950566, y2=39.916979519873
Súradnice GPS možno získať výpočtom: x = 2*x1-x2,y = 2*y1-y2 x=116.38480649434001 y=39.901480480127。 Aby som overil presnosť tejto metódy, zobral som súradnice 14 hlavných miest v Číne, juhovýchode, severozápade a severozápade Číny na testovanie, a výsledky priniesli odchýlku 13 metrov a minimálne 0,x metra. Komplexná chyba je 6 metrov. Konkrétne výsledky testov budú zverejnené neskôr. Dovoľte mi nakresliť jednoduchý diagram, ktorý ilustruje tento problém.
G predstavuje pôvodné nekonvertované súradnice Zeme; B predstavuje Baidu súradnice po konverzii G cez Baidu api; G' predstavuje súradnice po konverzii bodu B cez Baidu API; Ak predpokladáme, že hodnota posunu po konverzii Google súradníc na Baidu je malá, potom sú G-bodové súradnice dokonale rovnaké 2B-G'。 Po overení je hodnota posunu po konverzii Google súradníc na Baidu asi niekoľko stoviek metrov, čo je v skutočnosti zanedbateľné, preto použite túto metódu na vyriešenie problému knižnice posunu pomocou Baiduho API a potom ignorujte vplyv konverzie hodnôt posunu. Samozrejme, táto metóda má aj veľkú nevýhodu, a to je, že vyžaduje, aby tieto dva body boli v rovnakej offset databáze; ak sa nachádza v dvoch rôznych offset knižniciach, chyba môže byť relatívne veľká. Okrem toho sa momentálne pripravuje ďalšia metóda na ďalší výskum, a to je vytvorenie offsetovej knižnice a jej využitie na ďalšie odstránenie tohto vplyvu: stále sa len študuje. Tu je nevýhoda online konverzie: Baidu online API konverzný nástroj má vlastne limit na množstvo konvertovaných dát, každý kľúč dokáže konvertovať len asi 5 000 dát a účet môže požiadať o až 20 kľúčov, takže ak je množstvo dát veľké, neodporúča sa tento typ online konverzie používať, čo je tiež pôvodný zámer štúdia lokálnej offset knižnice. Okrem toho, keďže webová stránka môže byť viac obmedzená, rýchlosť siete, súbežné požiadavky a podobne môžu ovplyvniť výsledky a používateľský zážitok, takže vyššie uvedené metódy slúžia len na referenciu.
|