Követelmények: A Baidu koordinátákat WGS84 koordinátákra alakítsuk Megvalósítás: Először is hadd mutassam be sok bonyolult koordinátarendszert Kínában, ahogy mindannyian tudjuk, az Egyesült Államok GPS-je WGS84 koordinátákat használ, de Kínában biztonsági okokból, amikor a térképet közzéteszik és közzéteszik, a 84 koordináta nem lineáris és elfogult, és a kapott koordinátákat GCJ02 koordinátarendszereknek nevezik, közismert nevén Mars koordináták. Emellett sok hazai térképgyártó cég, talán üzleti szükségletek vagy üzleti verseny okai miatt, nem lineáris eltérést hajtott végre a Mars koordináták alapján, és saját koordinátarendszert kapott. Baidu egy ilyen cég. A Baidu a GCJ02 alapján végzett BD-09 másodlagos nemlineáris torzítást, és saját Baidu koordinátarendszert kapott. Ez talán előnyös a Baidu saját cégének, de nekünk, fejlesztőknek, egyszerűen bosszantó. Az alábbiakban rövid bevezetés található a kínai térképszolgáltatók által használt koordinátarendszerekbe:
Jelenleg a Baidu API-t biztosít koordináta-átalakításhoz, http://api.map.baidu.com/ag/coord/convert?from=0&to=4&x=longitude&y=latitude Innen • forráskoordináta-rendszer (0 az eredeti GPS koordinátákhoz, 2 a Google koordinátákhoz) • to: Átalakított koordináták (4 Baidu sajátja, mintha ez 4-nek kellene lennie) • x: Precizitás • y: Szélességi fok Az eredmény egy json string: {"error":0,"x":"MTIxLjUwMDIyODIxNDk2","y":"MzEuMjM1ODUwMjYwMTE3"} • hiba: a hibajel bit, és a "0" az OK • x: A Baidu koordinátarendszer pontossága (Base64 titkosítás) y: Baidu koordinátarendszerének szélességi foka (Base64 titkosítás); Ezen két szám jelentését online gyűjtöttem össze:
http://api.map.baidu.com/ag/coord/convert?from=0&to=4&x=longitude&y=latitude 1: GPS berendezés által nyert szögkoordináták; 2: GPS által kapott metrikus koordináták, a sogou térképeken használt koordináták; 3: Koordináták, amelyeket a Google Maps, SOSO Maps, Aliyun Maps, MapABC Maps és AMAP Maps használnak 4:3 A mérőkoordináták, amelyek megfelelnek a térkép koordinátáinak a listán 5: A Baidu térképek által használt hosszúsági és szélességi koordináták 6: A Baidu Maps által használt metrikus koordináták 7: térképszalag koordináták; 8:51 Térképkoordináták Nincs alapértelmezés 1, ami a GPS eszköz által kapott koordinátákat A célkoordináta-típusokhoz két lehetőség van: 5, 6. 5: BD09LL (Baidu szélességi és hosszúsági koordináták), 6: BD09MC (szélességi és hosszúsági koordináták 100 fok méterben); Nincs Az alapértelmezés 5, azaz bd09ll (Baidu koordináták)
A fentiek mind 84 koordinátát Baidu koordinátává alakítására használják, az alábbiakban beszéljünk arról, hogyan lehet elérni a koordináták fordított átalakítását, vagyis a Baidu koordinátákat 84 koordinátává alakítjuk át. Sok algoritmust találtam az interneten, és a legtöbb csak egy elmozdulásra korlátozódik, vagyis a Baidu és a Mars koordináták közötti cserére, a Mars és a Föld koordinátái közötti cserére, és a Baidu koordinátáiról alig van szó 84 koordinátáról. Ebben a tekintetben megpróbáltam először átalakítani a Baidu koordinátákat Mars-koordinátákra, majd a marsi koordinátákat Föld koordinátáira, de az eredmény nem volt kielégítő, a legkisebb hiba 60 méter volt, a legtöbb pedig 600 méternél több hiba, így fel kellett adnom. Nem fogom tovább posztolni az algoritmust, az érdeklődő diákok maguk is megtalálhatják az interneten. Itt egy okos módszert használok, a konkrét módszer a következő: A Baidu koordináták és a GPS koordináta-átalakítás nagyon közeli távolságban is közel állnak. Tegyük fel, hogy Baidu koordinátáid vannak: x1=116,397428, y1=39,90923 Ezt a koordinátát GPS koordinátaként vedd át, és szerezd meg a Baidu koordinátáit a felületen keresztül: x2=116.41004950566, y2=39.916979519873
A GPS koordinátái számítással mérhetők ki: x = 2*x1-x2,y = 2*y1-y2 x=116.38480649434001 y=39.901480480127。 A módszer pontosságának ellenőrzése érdekében teszteltem Kína 14 nagyvárosának koordinátáit, amely Kína délkeleti, északnyugati és északnyugati részén található, és az eredmények 13 méteres eltéréssel és minimum 0,x méterrel kapták meg az eredményeket. A teljes hiba 6 méter. A konkrét teszteredményeket később közzéteszik. Engedjék meg, hogy rajzoljak egy egyszerű diagramot, hogy szemléltessem ezt a problémát.
G az eredeti, nem átalakított Föld koordinátákat jelképezi; B a Baidu koordinátákat jelenti, miután G-t Baidu api-n keresztül átalakítjuk; G' a B pont Baidu API-n keresztüli átalakítása utáni koordinátákat jelenti; Feltételezve, hogy a Google koordinátákat Baidu koordinátákra átalakítás után kicsi az eltolási érték, akkor a G-pont koordináták tökéletesen egyenlőek a következőkkel 2B-G'。 Ellenőrzés után a Google koordinátáinak Baidu koordinátákra való átalakítása után a Google koordinátáinak átalakítása után körülbelül néhány száz méter oldható elhanyagolható, ami valójában elhanyagolható, ezért használd ezt a módszert a Baidu saját API-jával történő eltérítési könyvtár problémájának megoldására, majd figyelmen kívül hagyd az eltérítési értékek átalakításának hatását. Természetesen ennek a módszernek nagy hátránya is van, vagyis megköveteli, hogy ez a két pont ugyanabban az elmozdult adatbázisban legyen, ha két különböző eltolási könyvtárban található, a hiba viszonylag nagy lehet. Ezen túlmenően jelenleg egy másik módszer is készül további kutatásra: egy offset könyvtár létrehozása, és ezt az offset könyvtárat felhasználva tovább kiküszöbölik ezt a hatást: ez még tanulmányozni kell. Az online átalakítás hátránya: a Baidu online API konvertáló eszköznek valójában van korlátja az átalakított adatmennyiségre, minden kulcs csak körülbelül 5 000 adatdarabot tud konvertálni, és egy fiók akár 20 kulcsra is pályázhat, így ha nagy az adatmennyiség, valójában nem ajánlott ilyen online átalakítást használni, ami az eredeti cél is volt a helyi offset könyvtár tanulmányozásának eredeti célja. Ezen túl, mivel a weboldal korlátozottabb lehet, a hálózati sebesség, az egyidejű kérések stb. befolyásolhatják az eredményeket és a felhasználói élményt, így a fenti módszerek csak referenciaként szolgálnak.
|