Exigences : Convertir les coordonnées de Baidu en coordonnées WGS84 Mise en œuvre : Tout d’abord, permettez-moi de présenter de nombreux systèmes de coordonnées complexes en Chine ; comme nous le savons tous, le GPS des États-Unis utilise les coordonnées WGS84, mais en Chine, pour des raisons de sécurité, lorsque la carte est publiée et publiée, les 84 coordonnées sont non linéaires et biaisées, et les coordonnées obtenues sont appelées systèmes de coordonnées GCJ02, communément appelées coordonnées martiennes. De plus, de nombreuses entreprises cartographiques nationales, peut-être pour des besoins commerciaux ou pour des raisons de concurrence, ont réalisé une déviation non linéaire sur la base des coordonnées martiennes et ont obtenu leur propre système de coordonnées. Baidu est une telle entreprise. Baidu a réalisé un biais secondaire non linéaire BD-09 sur la base de GCJ02 et a obtenu son propre système de coordonnées Baidu. Cela peut être bénéfique pour la propre entreprise de Baidu, mais pour nous, les développeurs, c’est tout simplement agaçant. Voici une brève introduction aux systèmes de coordonnées utilisés par certains fournisseurs de services cartographiques en Chine :
Actuellement, Baidu fournit une API pour la conversion de coordonnées, http://api.map.baidu.com/ag/coord/convert?from=0&to=4&x=longitude&y=latitude dans ce domaine • de : Système de coordonnées source (0 pour les coordonnées GPS originales, 2 pour les coordonnées Google) • vers : Coordonnées converties (4 est celui de Baidu, comme si cela devait être 4) • x : Précision • y : Latitude Le résultat retourné est une chaîne json : {"error » :0,"x » :"MTIxLjUwMDIyODIxNDk2 »,"y » :"MzEuMjM1ODUwMjYwMTE3"} • erreur : est le bit de marque d’erreur, et « 0 » indique OK • x : Précision du système de coordonnées Baidu (chiffrement Base64) y : latitude du système de coordonnées Baidu (chiffrement Base64) ; J’ai recueilli la signification de ces deux chiffres en ligne :
http://api.map.baidu.com/ag/coord/convert?from=0&to=4&x=longitude&y=latitude 1 : Coordonnées angulaires obtenues par un équipement GPS ; 2 : Coordonnées métriques obtenues par GPS, coordonnées utilisées dans les cartes sogou ; 3 : Coordonnées utilisées pour Google Maps, SOSO Maps, Aliyun Maps, MapABC Maps et AMAP Maps 4:3 Les coordonnées du mètre correspondant aux coordonnées de la carte dans la liste 5 : Les coordonnées de longitude et latitude utilisées par Baidu Maps 6 : Coordonnées métriques utilisées par Baidu Maps 7 : coordonnées cartographiques de la barre de carte ; 8:51 Coordonnées cartographiques Aucun défaut n’est 1, c’est-à-dire les coordonnées obtenues par le dispositif GPS Pour les types de coordonnées de destination, il y a deux options : 5, 6. 5 : BD09LL (coordonnées de latitude et longitude de Baidu), 6 : BD09MC (coordonnées de latitude et longitude à 100 degrés) ; Non Le défaut est 5, c’est-à-dire bd09ll (coordonnées Baidu)
Les éléments ci-dessus sont tous utilisés pour convertir 84 coordonnées en coordonnées Baidu, ci-dessous parlons de la manière d’obtenir la conversion inverse des coordonnées, c’est-à-dire que les coordonnées Baidu sont converties en 84 coordonnées. J’ai trouvé beaucoup d’algorithmes sur Internet, et la plupart sont limités à un seul décalage, c’est-à-dire l’échange entre les coordonnées Baidu et Martien, l’échange entre les coordonnées martiennes et terrestres, etc., et il y a peu de mention des coordonnées Baidu jusqu’à 84 coordonnées. À cet égard, j’ai essayé de convertir d’abord les coordonnées de Baidu en coordonnées martiennes, puis de convertir les coordonnées martiennes en coordonnées terrestres, mais le résultat n’était pas satisfaisant, l’erreur la plus basse était de 60 mètres, et la plus grande même plus de 600 mètres, donc j’ai dû abandonner. Je ne publierai plus l’algorithme, les étudiants intéressés peuvent aller sur Internet pour le trouver eux-mêmes. Ici, j’utilise une méthode astucieuse, la méthode spécifique est la suivante : Les coordonnées Baidu et la conversion GPS sont très proches à courtes distances. Supposons que vous ayez les coordonnées Baidu : x1=116,397428, y1=39,90923 Prenez cette coordonnée comme coordonnée GPS et obtenez ses coordonnées Baidu via l’interface : x2=116,41004950566, y2=39,916979519873
Les coordonnées du GPS peuvent être obtenues par calcul : x = 2*x1-x2,y = 2*y1-y2 x=116.38480649434001 y=39.901480480127。 Pour vérifier la précision de cette méthode, j’ai pris les coordonnées de 14 grandes villes de Chine, du sud-est, du nord-ouest et du nord-ouest de la Chine pour test, et les résultats ont obtenu un écart de 13 mètres et un minimum de 0,x mètre. L’erreur globale est de 6 mètres. Les résultats spécifiques des tests seront publiés ultérieurement. Permettez-moi de dessiner un schéma simple pour illustrer ce problème.
G représente les coordonnées terrestres originales non converties ; B représente les coordonnées Baidu après conversion de G via l’API Baidu ; G' représente les coordonnées après la conversion du point B via l’API Baidu ; En supposant que la valeur de décalage après conversion des coordonnées Google en coordonnées Baidu soit petite, alors les coordonnées du point G sont parfaitement égales à 2B-G'。 Après vérification, la valeur de décalage après conversion des coordonnées Google en coordonnées Baidu est d’environ quelques centaines de mètres, ce qui est en réalité négligeable, donc utilisez cette méthode pour résoudre le problème de la bibliothèque de décalage avec l’API de Baidu, puis ignorez l’impact de la conversion des valeurs de décalage. Bien sûr, cette méthode présente aussi un gros inconvénient, à savoir qu’elle exige que ces deux points soient dans la même base de données de décalage ; si elle se trouve dans deux bibliothèques de décalage différentes, l’erreur peut être relativement importante. De plus, une autre méthode est actuellement en préparation pour de futures recherches, à savoir établir une bibliothèque de décalage et utiliser cette bibliothèque de décalage pour éliminer davantage cet impact : elle reste à étudier. Voici l’inconvénient de la conversion en ligne : l’outil de conversion API en ligne Baidu a en fait une limite sur la quantité de données converties, chaque clé ne peut convertir qu’environ 5 000 données, et un compte peut demander jusqu’à 20 clés, donc si la quantité de données est importante, il n’est en fait pas recommandé d’utiliser ce type de conversion en ligne, ce qui est aussi l’objectif initial d’étudier la bibliothèque locale de décalage. De plus, comme le côté web peut être plus restreint, la vitesse réseau, les requêtes concurrentes, etc. peuvent affecter les résultats et l’expérience utilisateur, donc les méthodes ci-dessus ne sont qu’à titre de référence.
|