Requisiti: Convertire le coordinate di Baidu in coordinate WGS84 Implementazione: Prima di tutto, lasciatemi introdurre molti sistemi di coordinate complicati in Cina, come tutti sappiamo, il GPS degli Stati Uniti usa le coordinate WGS84, ma in Cina, per motivi di sicurezza, quando la mappa viene pubblicata e pubblicata, le 84 coordinate sono non lineari e distorte, e le coordinate ottenute sono chiamate sistemi di coordinate GCJ02, comunemente noti come coordinate di Marte. Inoltre, molte aziende cartografiche nazionali, forse per esigenze aziendali o per motivi di concorrenza, hanno effettuato una deviazione non lineare sulla base delle coordinate di Marte e hanno ottenuto un proprio sistema di coordinate. Baidu è una di queste aziende. Baidu ha effettuato il bias non lineare secondario BD-09 sulla base di GCJ02 e ha ottenuto un proprio sistema di coordinate Baidu. Questo può essere vantaggioso per la stessa azienda di Baidu, ma per noi sviluppatori è semplicemente fastidioso. Di seguito è riportata una breve introduzione ai sistemi di coordinate utilizzati da alcuni fornitori di servizi cartografici in Cina:
Attualmente, Baidu fornisce un'API per la conversione di coordinate, http://api.map.baidu.com/ag/coord/convert?from=0&to=4&x=longitude&y=latitude in cui • da: Sistema di coordinate sorgente (0 per le coordinate GPS originali, 2 per le coordinate Google) • a: Coordinate convertite (4 è proprio di Baidu, come se dovesse essere 4) • x: Precisione • y: Latitudine Il risultato restituito è una stringa json: {"error":0,"x":"MTIxLjUwMDIyODIxNDk2","y":"MzEuMjM1ODUwMjYwMTE3"} • errore: è il bit del segno di errore, e "0" indica OK • x: Accuratezza del sistema di coordinate Baidu (crittografia Base64) y: Latitudine del sistema di coordinate Baidu (crittografia Base64); Ho raccolto il significato di questi due numeri online:
http://api.map.baidu.com/ag/coord/convert?from=0&to=4&x=longitude&y=latitude 1: Coordinate angolari ottenute tramite apparecchiature GPS; 2: Coordinate metriche ottenute tramite GPS, coordinate usate nelle mappe sogou; 3: Coordinate utilizzate per Google Maps, SOSO Maps, Aliyun Maps, MapABC Maps e AMAP Maps 4:3 Le coordinate del metro corrispondenti alle coordinate della mappa nell'elenco 5: Le coordinate di longitudine e latitudine utilizzate da Baidu Maps 6: Coordinate metriche usate da Baidu Maps 7: coordinate mapbar mapbar; 8:51 Coordinate della mappa Nessun predefinito è 1, cioè le coordinate ottenute dal dispositivo GPS Per i tipi di coordinate di destinazione ci sono due opzioni: 5, 6. 5: BD09LL (coordinate di latitudine e longitudine Baidu), 6: BD09MC (coordinate di latitudine e longitudine in 100 metri); No Il predefinito è 5, cioè bd09ll (coordinate Baidu)
Quanto sopra sono tutte usate per convertire 84 coordinate in coordinate Baidu; di seguito parliamo di come ottenere la conversione inversa delle coordinate, cioè le coordinate Baidu vengono convertite in 84 coordinate. Ho trovato molti algoritmi su Internet, e la maggior parte di essi è limitata a un solo offset, cioè lo scambio tra coordinate Baidu e coordinate Marte, lo scambio tra coordinate Marte e Terra, ecc., e c'è poca menzione delle coordinate Baidu fino a 84 coordinate. A tal proposito, ho provato prima a convertire le coordinate di Baidu in coordinate di Marte, poi a convertire le coordinate marziane a quelle terrestri, ma il risultato non è stato soddisfacente: l'errore più basso è stato 60 metri e il massimo è stato anche superiore a 600 metri, quindi ho dovuto arrendermi. Non pubblicherò più l'algoritmo, gli studenti interessati possono andare su Internet per trovarlo da soli. Qui uso un metodo intelligente, il metodo specifico è il seguente: Le coordinate Baidu e la conversione GPS sono molto ravvicinate a distanze ridotte. Supponiamo di avere le coordinate Baidu: x1=116.397428, y1=39.90923 Prendi questa coordinata come una coordinata GPS e ottieni le sue coordinate Baidu attraverso l'interfaccia: x2=116.41004950566, y2=39.916979519873
Le coordinate del GPS possono essere ottenute tramite calcolo: x = 2*x1-x2,y = 2*y1-y2 x=116.38480649434001 y=39.901480480127。 Per verificare l'accuratezza di questo metodo, ho preso le coordinate di 14 grandi città della Cina, sud-est, nord-ovest e nord-ovest della Cina per test, e i risultati hanno ottenuto risultati con una deviazione di 13 metri e un minimo di 0,x metri. L'errore complessivo è di 6 metri. I risultati specifici dei test saranno pubblicati successivamente. Lasciate che disegni un semplice diagramma per illustrare questo problema.
G rappresenta le coordinate terrestri originali non convertite; B rappresenta le coordinate Baidu dopo che G viene convertita tramite API Baidu; G' rappresenta le coordinate dopo che il punto B è stato convertito tramite Baidu API; Assumendo che il valore di offset dopo aver convertito le coordinate Google in coordinate Baidu sia piccolo, allora le coordinate G-point sono perfettamente uguali a 2B-G'。 Dopo la verifica, il valore di offset dopo aver convertito le coordinate Google in coordinate Baidu è di circa qualche centinaio di metri, che in realtà è trascurabile, quindi usa questo metodo per risolvere il problema della libreria offset con l'API di Baidu, e poi ignora l'impatto della conversione dei valori di offset. Naturalmente, questo metodo ha anche un grande svantaggio, cioè richiede che questi due punti siano nello stesso database di offset; se si trova in due librerie offset diverse, l'errore può essere relativamente grande. Inoltre, c'è un altro metodo attualmente in preparazione per ulteriori ricerche, che consiste nell'istituire una libreria offset e utilizzare questa libreria offset per eliminare ulteriormente questo impatto: è ancora da studiare. Ecco lo svantaggio della conversione online: lo strumento di conversione API online di Baidu ha in realtà un limite sulla quantità di dati convertiti, ogni chiave può convertire solo circa 5.000 pezzi di dati e un account può richiedere fino a 20 chiavi, quindi se la quantità di dati è elevata, in realtà non è consigliato utilizzare questo tipo di conversione online, che è anche l'intenzione originale di studiare la libreria offset locale. Inoltre, poiché il lato web può essere più limitato, la velocità di rete, le richieste concorrenti, ecc. possono influenzare i risultati e l'esperienza utente, quindi i metodi sopra riportati sono solo di riferimento.
|