Denne artikel er en spejling af maskinoversættelse, klik venligst her for at springe til den oprindelige artikel.

Udsigt: 11254|Svar: 1

Baidu-koordinaterne konverteres til WGS84-koordinater

[Kopier link]
Opslået på 11/10/2017 09.56.13 | | | |
Krav: Konverter Baidu-koordinater til WGS84-koordinater
Implementering:
Først og fremmest vil jeg introducere mange komplicerede koordinatsystemer i Kina; som vi alle ved, bruger den amerikanske GPS WGS84-koordinater, men i Kina, af sikkerhedsmæssige årsager, er de 84 koordinater, når kortet frigives og offentliggøres, ikke-lineære og skæve, og de opnåede koordinater kaldes GCJ02-koordinatsystemer, almindeligvis kendt som Mars-koordinater. Derudover har mange indenlandske kortfirmaer, måske på grund af forretningsbehov eller visse årsager til forretningskonkurrence, udført en ikke-lineær afvigelse på basis af Mars-koordinater og opnået deres eget koordinatsystem. Baidu er sådan et firma. Baidu udførte BD-09 sekundær ikke-lineær bias på basis af GCJ02 og opnåede sit eget Baidu-koordinatsystem. Det kan være gavnligt for Baidus eget firma, men for os udviklere er det simpelthen irriterende.
Følgende er en kort introduktion til koordinatsystemer, der bruges af nogle korttjenesteudbydere i Kina:



I øjeblikket tilbyder Baidu et API til koordinatkonvertering, http://api.map.baidu.com/ag/coord/convert?from=0&to=4&x=longitude&y=latitude
derind
• fra: Kildekoordinatsystem (0 for originale GPS-koordinater, 2 for Google-koordinater)
• til: Konverterede koordinater (4 er Baidus egne, som om dette må være 4)
• x: Præcision
• y: Breddegrad
Resultatet, der returneres, er en json-streng: {"error":0,"x":"MTIxLjUwMDIyODIxNDk2","y":"MzEuMjM1ODUwMjYwMTE3"}
• fejl: er fejlmarkørbitet, og "0" angiver OK
• x: Nøjagtigheden af Baidu-koordinatsystemet (Base64-kryptering)
y: Latitude of Baidu koordinatsystem (Base64-kryptering);
Jeg samlede betydningen af disse to tal online:
http://api.map.baidu.com/ag/coord/convert?from=0&to=4&x=longitude&y=latitude
1: Vinkelkoordinater opnået af GPS-udstyr;
2: Metriske koordinater opnået med GPS, koordinater brugt i sogou-kort;
3: Koordinater brugt til Google Maps, SOSO Maps, Aliyun Maps, MapABC Maps og AMAP Maps
4:3 De målerkoordinater, der svarer til koordinaterne for kortet i listen
5: Længde- og breddegradskoordinaterne brugt af Baidu-kort
6: Metriske koordinater brugt af Baidu Maps
7: koordinater på mapbar-kortet;
8:51 Kortkoordinater Ingen standard er 1, hvilket er koordinaterne opnået af GPS-enheden
Der er to muligheder for destinationskoordinattyper: 5, 6.
5: BD09LL (Baidu-bredde- og længdekoordinater),
6: BD09MC (bredde- og længdegradskoordinater i 100 graders afstand); Nej Standarden er 5, dvs. bd09ll (Baidu-koordinater)

Ovenstående bruges alle til at konvertere 84 koordinater til Baidu-koordinater, nedenfor lad os tale om, hvordan man opnår omvendt konvertering af koordinater, det vil sige, Baidu-koordinater konverteres til 84 koordinater.
Jeg fandt mange algoritmer på internettet, og de fleste er begrænset til én offset, altså udvekslingen mellem Baidu-koordinater og Mars-koordinater, udvekslingen mellem Mars-koordinater og Jordens koordinater osv., og der nævnes kun lidt om Baidu-koordinater til 84 koordinater.
I den forbindelse forsøgte jeg først at konvertere Baidu-koordinater til Mars-koordinater og derefter konvertere Mars-koordinaterne til Jordens koordinater, men resultatet var ikke tilfredsstillende, den laveste fejl var 60 meter, og den højeste var endda mere end 600 meters fejl, så jeg måtte opgive. Jeg vil ikke poste algoritmen mere, interesserede studerende kan selv gå på internettet for at finde den.
Her bruger jeg en klog metode, den specifikke metode er som følger:
Baidu-koordinater og GPS-koordinatkonvertering er meget tæt på hinanden på kort afstand.
Antag, at du har Baidu-koordinater: x1=116,397428, y1=39,90923
Tag denne koordinat som en GPS-koordinat og få hans Baidu-koordinater gennem interfacet: x2=116.41004950566, y2=39.916979519873

GPS'ens koordinater kan opnås ved beregning:
x = 2*x1-x2,y = 2*y1-y2
x=116.38480649434001
y=39.901480480127。
For at verificere nøjagtigheden af denne metode tog jeg koordinaterne for 14 større byer i Kina, sydøst, nordvest og nordvest for Kina, til test, og resultaterne opnåede resultater med en afvigelse på 13 meter og mindst 0,x meter. Den omfattende fejl er 6 meter. De specifikke testresultater vil blive offentliggjort senere.
Lad mig tegne et simpelt diagram for at illustrere dette problem.



G repræsenterer de oprindelige ukonverterede jordkoordinater;
B repræsenterer Baidu-koordinaterne efter G er konverteret gennem Baidu api;
G' repræsenterer koordinaterne efter at punkt B er konverteret gennem Baidu API;
Hvis man antager, at offset-værdien efter at have konverteret Google-koordinater til Baidu-koordinater er lille, så er G-punktets koordinater perfekt lig med
2B-G'。 Efter verifikation er offset-værdien efter konvertering af Google-koordinater til Baidu-koordinater omkring et par hundrede meter, hvilket faktisk er ubetydeligt, så brug denne metode til at løse problemet med offset-biblioteket med Baidus eget API, og ignorer derefter effekten af at konvertere offset-værdier.
Selvfølgelig har denne metode også en stor ulempe, nemlig at den kræver, at disse to punkter skal være i den samme offset-database; hvis den tilfældigvis er placeret i to forskellige offset-biblioteker, kan fejlen være relativt stor.
Derudover er der en anden metode, der i øjeblikket udarbejdes til videre forskning, nemlig at etablere et offset-bibliotek og bruge dette offset-bibliotek til yderligere at eliminere denne påvirkning: det mangler stadig at blive studeret.
Her er ulempen ved online konvertering: Baidu online API-konverteringsværktøj har faktisk en grænse for, hvor meget data der konverteres, hver nøgle kan kun konvertere omkring 5.000 datastykker, og en konto kan ansøge om op til 20 nøgler, så hvis mængden af data er stor, anbefales det faktisk ikke at bruge denne type online konvertering, hvilket også var den oprindelige hensigt med at studere det lokale offset-bibliotek. Derudover, fordi websiden kan være mere begrænset, kan netværkshastighed, samtidige forespørgsler osv. påvirke resultaterne og brugeroplevelsen, så ovenstående metoder er kun til reference.





Tidligere:Javascrip{filter}tmodule - load module require.js
Næste:Brug Ajax-metoden til at POSTE JSON-data til baggrunden
Ansvarsfraskrivelse:
Al software, programmeringsmaterialer eller artikler udgivet af Code Farmer Network er kun til lærings- og forskningsformål; Ovenstående indhold må ikke bruges til kommercielle eller ulovlige formål, ellers skal brugerne bære alle konsekvenser. Oplysningerne på dette site kommer fra internettet, og ophavsretstvister har intet med dette site at gøre. Du skal slette ovenstående indhold fuldstændigt fra din computer inden for 24 timer efter download. Hvis du kan lide programmet, så understøt venligst ægte software, køb registrering og få bedre ægte tjenester. Hvis der er nogen overtrædelse, bedes du kontakte os via e-mail.

Mail To:help@itsvse.com