Denne artikkelen er en speilartikkel om maskinoversettelse, vennligst klikk her for å hoppe til originalartikkelen.

Utsikt: 11254|Svare: 1

Baidu-koordinatene konverteres til WGS84-koordinater

[Kopier lenke]
Publisert på 11.10.2017 09:56:13 | | | |
Krav: Konverter Baidu-koordinater til WGS84-koordinater
Implementering:
Først og fremst vil jeg introdusere mange kompliserte koordinatsystemer i Kina; som vi alle vet, bruker United States GPS WGS84-koordinater, men i Kina, av sikkerhetsgrunner, når kartet frigjøres og publiseres, er de 84 koordinatene ikke-lineære og skjeve, og de oppnådde koordinatene kalles GCJ02-koordinatsystemer, vanligvis kjent som Mars-koordinater. I tillegg har mange innenlandske kartselskaper, kanskje på grunn av forretningsbehov eller konkurranse, gjennomført en ikke-lineær avvik basert på Mars-koordinater og fått sitt eget koordinatsystem. Baidu er et slikt firma. Baidu gjennomførte BD-09 sekundær ikke-lineær bias basert på GCJ02 og fikk sitt eget Baidu-koordinatsystem. Dette kan være fordelaktig for Baidus eget selskap, men for oss utviklere er det rett og slett irriterende.
Følgende er en kort introduksjon til koordinatsystemene som brukes av noen karttjenesteleverandører i Kina:



For øyeblikket tilbyr Baidu et API for koordinatkonvertering, http://api.map.baidu.com/ag/coord/convert?from=0&to=4&x=longitude&y=latitude
Dertil
• fra: Kildekoordinatsystem (0 for originale GPS-koordinater, 2 for Google-koordinater)
• til: Konverterte koordinater (4 er Baidus egne, som om dette må være 4)
• x: Presisjon
• y: breddegrad
Resultatet som returneres er en json-streng: {"error":0,"x":"MTIxLjUwMDIyODIxNDk2","y":"MzEuMjM1ODUwMjYwMTE3"}
• feil: er feilmerkebiten, og "0" indikerer OK
• x: Nøyaktigheten til Baidu-koordinatsystemet (Base64-kryptering)
y: Latitude of Baidu-koordinatsystemet (Base64-kryptering);
Jeg samlet betydningen av disse to tallene på nettet:
http://api.map.baidu.com/ag/coord/convert?from=0&to=4&x=longitude&y=latitude
1: Vinkelkoordinater oppnådd med GPS-utstyr;
2: Metriske koordinater oppnådd med GPS, koordinater brukt i sogou-kart;
3: Koordinater brukt for Google Maps, SOSO Maps, Aliyun Maps, MapABC Maps og AMAP Maps
4:3 Målerkoordinatene som tilsvarer koordinatene til kartet i listen
5: Lengdegrads- og breddegradskoordinatene brukt av Baidu Maps
6: Metriske koordinater brukt av Baidu Maps
7: koordinater for mapbar-kart;
8:51 Kartkoordinater Ingen standard er 1, som er koordinatene oppnådd av GPS-enheten
For destinasjonskoordinattyper finnes det to alternativer: 5, 6.
5: BD09LL (Baidu bredde- og lengdegradskoordinater),
6: BD09MC (bredde- og lengdegradskoordinater i 100 graders avstand); Nei Standarden er 5, altså bd09ll (Baidu-koordinater)

Ovennevnte brukes alle til å konvertere 84 koordinater til Baidu-koordinater, nedenfor skal vi snakke om hvordan man oppnår omvendt konvertering av koordinater, det vil si at Baidu-koordinater konverteres til 84 koordinater.
Jeg fant mange algoritmer på Internett, og de fleste er begrenset til én offset, det vil si utvekslingen mellom Baidu-koordinater og Mars-koordinater, utvekslingen mellom Mars-koordinater og Jordens koordinater, osv., og det er lite omtale av Baidu-koordinater til 84 koordinater.
I denne sammenhengen prøvde jeg først å konvertere Baidu-koordinater til Mars-koordinater, og deretter konvertere Mars-koordinatene til jord-koordinater, men resultatet var ikke tilfredsstillende, laveste feil var 60 meter, og den høyeste var til og med mer enn 600 meter feil, så jeg måtte gi opp. Jeg kommer ikke til å poste algoritmen mer, interesserte studenter kan gå til Internett for å finne den selv.
Her bruker jeg en smart metode, den spesifikke metoden er som følger:
Baidu-koordinater og GPS-koordinatkonvertering er svært nære på kort avstand.
Anta at du har Baidu-koordinater: x1=116,397428, y1=39,90923
Ta denne koordinaten som en GPS-koordinat og hent hans Baidu-koordinater gjennom grensesnittet: x2=116.41004950566, y2=39.916979519873

GPS-koordinatene kan bestemmes ved beregning:
x = 2*x1-x2,y = 2*y1-y2
x=116.38480649434001
y=39.901480480127。
For å verifisere nøyaktigheten av denne metoden tok jeg koordinatene til 14 store byer i Kina, sørøst, nordvest og nordvest for testing, og resultatene ga resultater med en avvik på 13 meter og minimum 0,x meter. Totalfeilen er 6 meter. De spesifikke testresultatene vil bli lagt ut senere.
La meg tegne et enkelt diagram for å illustrere dette problemet.



G representerer de opprinnelige ukonverterte jordkoordinatene;
B representerer Baidu-koordinatene etter at G er konvertert gjennom Baidu api;
G' representerer koordinatene etter at punkt B er konvertert gjennom Baidu API;
Forutsatt at offset-verdien etter å ha konvertert Google-koordinater til Baidu-koordinater er liten, er G-punktkoordinatene helt lik
2B-G'。 Etter verifisering er offset-verdien etter konvertering av Google-koordinater til Baidu-koordinater omtrent noen hundre meter, noe som faktisk er neglisjerbart, så bruk denne metoden for å løse problemet med offset-biblioteket med Baidus eget API, og ignorer deretter virkningen av å konvertere offset-verdier.
Selvfølgelig har denne metoden også en stor ulempe, det vil si at den krever at disse to punktene må være i samme offset-database; hvis den tilfeldigvis er plassert i to forskjellige offset-biblioteker, kan feilen være relativt stor.
I tillegg er det en annen metode som for tiden utarbeides for videre forskning, nemlig å etablere et offset-bibliotek og bruke dette offset-biblioteket for å ytterligere eliminere denne påvirkningen: det gjenstår å studeres.
Her er ulempen med online konvertering: Baidu sitt online API-konverteringsverktøy har faktisk en grense for hvor mye data som konverteres, hver nøkkel kan bare konvertere omtrent 5 000 databiter, og en konto kan søke om opptil 20 nøkler, så hvis datamengden er stor, anbefales det faktisk ikke å bruke denne typen nettbasert konvertering, som også var den opprinnelige hensikten med å studere det lokale offset-biblioteket. I tillegg, fordi websiden kan være mer begrenset, kan nettverkshastighet, samtidige forespørsler osv. påvirke resultatene og brukeropplevelsen, så metodene ovenfor er kun til referanse.





Foregående:Javascrip{filter}tmodule - load module require.js
Neste:Bruk Ajax-metoden for å POSTE JSON-data til bakgrunnen
Ansvarsfraskrivelse:
All programvare, programmeringsmateriell eller artikler publisert av Code Farmer Network er kun for lærings- og forskningsformål; Innholdet ovenfor skal ikke brukes til kommersielle eller ulovlige formål, ellers skal brukerne bære alle konsekvenser. Informasjonen på dette nettstedet kommer fra Internett, og opphavsrettstvister har ingenting med dette nettstedet å gjøre. Du må fullstendig slette innholdet ovenfor fra datamaskinen din innen 24 timer etter nedlasting. Hvis du liker programmet, vennligst støtt ekte programvare, kjøp registrering, og få bedre ekte tjenester. Hvis det foreligger noen krenkelse, vennligst kontakt oss på e-post.

Mail To:help@itsvse.com