Tämä artikkeli on konekäännöksen peiliartikkeli, klikkaa tästä siirtyäksesi alkuperäiseen artikkeliin.

Näkymä: 11254|Vastaus: 1

Baidu-koordinaatit muunnetaan WGS84-koordinaatteiksi

[Kopioi linkki]
Julkaistu 11.10.2017 9.56.13 | | | |
Vaatimukset: Muunna Baidu-koordinaatit WGS84-koordinaateiksi
Toteutus:
Ensinnäkin esittelen monia monimutkaisia koordinaatistoja Kiinassa, kuten tiedämme, Yhdysvaltain GPS käyttää WGS84-koordinaatteja, mutta Kiinassa turvallisuussyistä, kun kartta julkaistaisiin ja julkaistaan, koordinaatit 84 ovat epälineaarisia ja vinoutuneita, ja saatuja koordinaatteja kutsutaan GCJ02-koordinaatistoiksi, yleisesti Marsin koordinaatteiksi. Lisäksi monet kotimaiset karttayritykset ovat mahdollisesti liiketoimintatarpeiden tai kilpailun vuoksi suorittaneet epälineaarisen poikkeaman Marsin koordinaattien perusteella ja hankkineet oman koordinaattijärjestelmänsä. Baidu on tällainen yritys. Baidu suoritti BD-09:n toissijaisen epälineaarisen vinouman GCJ02:n perusteella ja sai oman Baidu-koordinaatiston. Tämä voi olla hyödyllistä Baidun omalle yritykselle, mutta meille kehittäjille se on yksinkertaisesti ärsyttävää.
Seuraavassa on lyhyt johdatus joidenkin kiinalaisten karttapalveluntarjoajien käyttämiin koordinaatisjärjestelmiin:



Tällä hetkellä Baidu tarjoaa API:n koordinaattien muunnokseen, http://api.map.baidu.com/ag/coord/convert?from=0&to=4&x=longitude&y=latitude
siihen
• lähteestä: Lähdekoordinaatisto (0 alkuperäisille GPS-koordinaateille, 2 Google-koordinaateille)
• to: Muunnetut koordinaatit (4 on Baidun oma, ikään kuin tämän täytyisi olla 4)
• x: Tarkkuus
• y: Leveysaste
Palautettu tulos on json-merkkijono: {"error":0,"x":"MTIxLjUwMDIyODIxNDk2","y":"MzEuMjM1ODUwMjYwMTE3"}
• virhe: on virhemerkin bitti, ja "0" tarkoittaa OK
• x: Baidu-koordinaatiston tarkkuus (Base64-salaus)
y: Baidun koordinaatiston leveysaste (Base64-salaus);
Keräsin näiden kahden luvun merkityksen netistä:
http://api.map.baidu.com/ag/coord/convert?from=0&to=4&x=longitude&y=latitude
1: GPS-laitteella saatu kulmakoordinaatit;
2: GPS:llä saadut metriset koordinaatit, koordinaatit, joita käytetään sogou-kartoissa;
3: Google Mapsin, SOSO Mapsin, Aliyun Mapsin, MapABC Mapsin ja AMAP Mapsin koordinaatit
4:3 Mittarikoordinaatit, jotka vastaavat kartan koordinaatteja listalla
5: Baidu-kartoissa käytetyt pituus- ja leveyspiirikoordinaatit
6: Baidu Mapsin käyttämät metriset koordinaatit
7: karttapalkin karttakoordinaatit;
8:51 Karttakoordinaatit Oletus ei ole 1, joka on GPS-laitteen saamat koordinaatit
Kohdekoordinaattityypeille on kaksi vaihtoehtoa: 5, 6.
5: BD09LL (Baidun leveys- ja pituuspiirikoordinaatit),
6: BD09MC (leveys- ja pituusasteet 100 asteen metrissä); Ei Oletuksena on 5, eli bd09ll (Baidu-koordinaatit)

Edellä mainitut kaikki käytetään 84 koordinaatin muuntamiseen Baidu-koordinaateiksi, ja alla kerrotaan, miten saavutetaan koordinaattien käänteinen muunnos, eli Baidu-koordinaatit muunnetaan 84 koordinaatiksi.
Löysin paljon algoritmeja internetistä, ja suurin osa niistä rajoittuu yhteen siirtymään, eli Baidu- ja Mars-koordinaattien vaihtoon, Marsin ja Maan koordinaattien vaihtoon jne., eikä Baidu-koordinaateista mainita vain vähän 84 koordinaattiin.
Tässä yhteydessä yritin ensin muuntaa Baidun koordinaatit Marsin koordinaateiksi ja sitten Marsin koordinaatit Maan koordinaateiksi, mutta tulos ei ollut tyydyttävä, pienin virhe oli 60 metriä ja suurin yli 600 metriä, joten jouduin luovuttamaan. En julkaise algoritmia enää, kiinnostuneet opiskelijat voivat itse etsiä sen internetistä.
Tässä käytän nerokasta menetelmää, tarkka menetelmä on seuraava:
Baidu-koordinaatit ja GPS-koordinaattimuunnos ovat hyvin lähellä läheisiä etäisyyksillä.
Oletetaan, että sinulla on Baidu-koordinaatit: x1=116.397428, y1=39.90923
Ota tämä koordinaatti GPS-koordinaatiksi ja saat hänen Baidu-koordinaattinsa rajapinnan kautta: x2=116.41004950566, y2=39.916979519873

GPS:n koordinaatit voidaan laskea:
x = 2*x1-x2,y = 2*y1-y2
x=116.38480649434001
y=39.901480480127。
Varmistaakseni tämän menetelmän tarkkuuden, otin testattavaksi 14 suuren Kiinan kaupungin koordinaatit, jotka olivat Kiinan kaakkois-, luoteis- ja luoteispuolella, ja tulokset saivat poikkeamalla 13 metriä ja vähintään 0,x metriä. Kokonaisvirhe on 6 metriä. Tarkat testitulokset julkaistaan myöhemmin.
Piirrän yksinkertaisen kaavion havainnollistaakseni tätä ongelmaa.



G edustaa alkuperäisiä muuntamattomia Maan koordinaatteja;
B edustaa Baidu-koordinaatteja sen jälkeen, kun G on muunnettu Baidu-apin kautta;
G' edustaa koordinaatteja sen jälkeen, kun piste B on muunnettu Baidu API:n kautta;
Oletetaan, että Google-koordinaatit Baidu-koordinaateiksi muuntamisen jälkeen on pieni siirtymäarvo, G-pisteen koordinaatit ovat täydellisesti yhtä suuret kuin
2B-G'。 Varmistuksen jälkeen Google-koordinaatit Baidu-koordinaateiksi muuntamisen jälkeen offset-arvo on noin muutama sata metriä, mikä on itse asiassa merkityksetöntä, joten käytä tätä menetelmää ratkaistaksesi offset-kirjaston ongelman Baidun omalla API:lla, ja jätä sitten huomiotta offset-arvojen muuntamisen vaikutus.
Tietenkin tällä menetelmällä on myös suuri haittapuoli: se vaatii, että nämä kaksi pistettä ovat samassa offset-tietokannassa; jos ne sattuvat sijaitsemaan kahdessa eri offset-kirjastossa, virhe voi olla suhteellisen suuri.
Lisäksi on olemassa toinen menetelmä, jota parhaillaan valmistellaan jatkotutkimuksia varten, nimittäin offset-kirjaston perustaminen ja tämän offset-kirjaston hyödyntäminen vaikutuksen poistamiseksi: sitä on vielä tutkittavana.
Tässä on verkkomuunnoksen haittapuoli: Baidu Online API -muunnostyökalulla on itse asiassa rajoitus muunnetun datan määrälle, jokainen avain voi muuntaa vain noin 5 000 tietoa, ja tili voi hakea jopa 20 avainta, joten jos datamäärä on suuri, ei suositella tällaista verkkomuunnosta, joka oli myös alkuperäinen tarkoitus tutkia paikallista offset-kirjastoa. Lisäksi, koska verkkopuoli voi olla rajoitetumpi, verkon nopeus, samanaikaiset pyynnöt jne. voivat vaikuttaa tuloksiin ja käyttäjäkokemukseen, joten yllä olevat menetelmät ovat vain viitteitä.





Edellinen:Javascrip{filter}tmodule - load module require.js
Seuraava:Käytä Ajax-menetelmää lähettääksesi JSON-tiedot taustalle
Vastuuvapauslauseke:
Kaikki Code Farmer Networkin julkaisemat ohjelmistot, ohjelmamateriaalit tai artikkelit ovat tarkoitettu vain oppimis- ja tutkimustarkoituksiin; Yllä mainittua sisältöä ei saa käyttää kaupallisiin tai laittomiin tarkoituksiin, muuten käyttäjät joutuvat kantamaan kaikki seuraukset. Tämän sivuston tiedot ovat peräisin internetistä, eikä tekijänoikeuskiistat liity tähän sivustoon. Sinun tulee poistaa yllä oleva sisältö kokonaan tietokoneeltasi 24 tunnin kuluessa lataamisesta. Jos pidät ohjelmasta, tue aitoa ohjelmistoa, osta rekisteröityminen ja hanki parempia aitoja palveluita. Jos rikkomuksia ilmenee, ota meihin yhteyttä sähköpostitse.

Mail To:help@itsvse.com