Požadavky: Převést Baidu souřadnice na WGS84 Implementace: Nejprve bych rád představil mnoho složitých souřadnicových systémů v Číně, jak všichni víme, americké GPS používá souřadnice WGS84, ale v Číně z bezpečnostních důvodů, když je mapa zveřejněna a publikována, jsou tyto souřadnice 84 nelineární a zkreslené, a získáné souřadnice se nazývají souřadnice GCJ02, běžně známé jako marsovské souřadnice. Kromě toho mnoho domácích mapových společností, možná kvůli obchodním potřebám nebo z důvodů obchodní konkurence, provedlo nelineární odchylku na základě marsovských souřadnic a získalo vlastní souřadnicový systém. Baidu je taková společnost. Baidu provedl sekundární nelineární bias BD-09 na základě GCJ02 a získal vlastní souřadnicový systém Baidu. To může být pro Baiduovu vlastní firmu přínosné, ale pro nás vývojáře je to prostě otravné. Následuje stručný úvod do souřadnicových systémů používaných některými poskytovateli mapových služeb v Číně:
V současnosti Baidu poskytuje API pro převod souřadnic, http://api.map.baidu.com/ag/coord/convert?from=0&to=4&x=longitude&y=latitude do toho • z: Zdrojový souřadnicový systém (0 pro původní GPS souřadnice, 2 pro Google souřadnice) • do: Převedených souřadnic (4 je Baiduova vlastní, jako by to muselo být 4) • x: Přesnost • y: Zeměpisná šířka Výsledkem je řetězec json: {"error":0,"x":"MTIxLjUwMDIyODIxNDk2","y":"MzEuMjM1ODUwMjYwMTE3"} • chyba: je bit chybového znaku a "0" znamená OK • x: Přesnost souřadnicového systému Baidu (šifrování Base64) y: Zeměpisná šířka souřadnicového systému Baidu (šifrování Base64); Význam těchto dvou čísel jsem shromáždil online:
http://api.map.baidu.com/ag/coord/convert?from=0&to=4&x=longitude&y=latitude 1: Úhlové souřadnice získané pomocí GPS zařízení; 2: Metrické souřadnice získané pomocí GPS, souřadnice používané v Sogou mapách; 3: Souřadnice používané pro Google Maps, SOSO Maps, Aliyun Maps, MapABC Maps a AMAP Maps 4:3 Metrové souřadnice odpovídající souřadnicím mapy v seznamu 5: Souřadnice zeměpisné délky a šířky používané Baidu Maps 6: Metrické souřadnice používané Baidu Maps 7: mapové souřadnice; 8:51 Souřadnice na mapě Žádná výchozí hodnota není 1, což jsou souřadnice získané GPS zařízením Pro typy destinačních souřadnic existují dvě možnosti: 5, 6. 5: BD09LL (Baidu zeměpisné a dlouhorozměrné souřadnice), 6: BD09MC (souřadnice zeměpisné šířky a délky ve 100 metrech); Ne. Výchozí je 5, tj. bd09ll (Baidu souřadnice)
Výše uvedené se všechny používají k převodu 84 souřadnic na Baidu, níže si pojďme promluvit, jak dosáhnout reverzní konverze souřadnic, tedy Baidu souřadnice se převedou na 84 souřadnic. Našel jsem na internetu spoustu algoritmů a většina z nich je omezena na jeden posun, tedy výměnu mezi Baidu souřadnicemi a Marsem, výměnu mezi Marsovými a Zemskými souřadnicemi atd., a o Baidu souřadnicích je jen málo zmínka na 84 souřadnic. V tomto ohledu jsem se nejprve pokusil převést Baiduovy souřadnice na marsovské souřadnice a pak převést marťanské souřadnice na pozemské, ale výsledek nebyl uspokojivý, nejnižší chyba byla 60 metrů a nejdelší chyba dokonce přes 600 metrů, takže jsem to musel vzdát. Algoritmus už nebudu zveřejňovat, zájemci si ho mohou sami najít na internetu. Zde používám chytrou metodu, konkrétní metoda je následující: Baidu souřadnice a převod GPS souřadnic jsou velmi blízké na krátkou vzdálenost. Předpokládejme, že máte Baiduovy souřadnice: x1=116.397428, y1=39.90923 Vezměte tuto souřadnici jako GPS souřadnici a získejte jeho Baidu souřadnice přes rozhraní: x2=116.41004950566, y2=39.916979519873
Souřadnice GPS lze získat výpočtem: x = 2*x1-x2,y = 2*y1-y2 x=116.38480649434001 y=39.901480480127。 Abych ověřil přesnost této metody, provedl jsem testování souřadnice 14 hlavních měst v Číně, jihovýchodě, severozápadě a severozápadě Číny, a výsledky přinesly odchylku 13 metrů a minimální 0,x metru. Komplexní chyba je 6 metrů. Konkrétní výsledky testů budou zveřejněny později. Dovolte mi nakreslit jednoduchý diagram, který tento problém ilustruje.
G představuje původní nepřevedené souřadnice Země; B představuje Baidu souřadnice po převodu G přes Baidu api; G' představuje souřadnice po převodu bodu B přes Baidu API; Za předpokladu, že hodnota posunu po převodu Google souřadnic na Baidu je malá, pak jsou souřadnice G-bodu dokonale rovné 2B-G'。 Po ověření je hodnota posunu po převodu Google souřadnic na Baidu asi několik set metrů, což je ve skutečnosti zanedbatelné, proto použijte tuto metodu k vyřešení problému knihovny posunu pomocí Baiduova vlastního API a pak ignorujte dopad převodu hodnot posunu. Samozřejmě má tato metoda také velkou nevýhodu, totiž vyžaduje, aby tyto dva body byly ve stejné offsetové databázi; pokud se nachází ve dvou různých offsetových knihovnách, chyba může být relativně velká. Kromě toho se v současnosti připravuje další metoda pro další výzkum, a to je vytvoření offsetové knihovny a využití této offsetové knihovny k dalšímu odstranění tohoto dopadu: stále je předmětem studia. Tady je nevýhoda online konverze: Baidu online API konverzní nástroj má ve skutečnosti limit na množství převedených dat, každý klíč dokáže převést jen asi 5 000 datových částí a účet může žádat až o 20 klíčů, takže pokud je množství dat velké, nedoporučuje se tento typ online konverze používat, což byl také původní záměr studia místní offsetové knihovny. Navíc, protože webová stránka může být více omezená, rychlost sítě, souběžné požadavky atd. mohou ovlivnit výsledky a uživatelský zážitek, takže výše uvedené metody jsou pouze pro referenci.
|