Requisitos: Convertir coordenadas de Baidu a coordenadas WGS84 Implementación: En primer lugar, permítanme presentar muchos sistemas de coordenadas complicados en China; como todos sabemos, el GPS de Estados Unidos utiliza las coordenadas WGS84, pero en China, por razones de seguridad, cuando se publica el mapa, las 84 coordenadas son no lineales y sesgadas, y las coordenadas obtenidas se llaman sistemas de coordenadas GCJ02, comúnmente conocidas como coordenadas de Marte. Además, muchas empresas cartográficas nacionales, quizá por necesidades empresariales o por razones de competencia empresarial, han realizado una desviación no lineal basada en coordenadas marcianas y han obtenido su propio sistema de coordenadas. Baidu es una de esas empresas. Baidu realizó un sesgo no lineal secundario BD-09 basado en GCJ02 y obtuvo su propio sistema de coordenadas Baidu. Esto puede ser beneficioso para la propia empresa de Baidu, pero para nosotros, los desarrolladores, es simplemente molesto. A continuación se presenta una breve introducción a los sistemas de coordenadas utilizados por algunos proveedores de servicios cartográficos en China:
Actualmente, Baidu proporciona una API para la conversión de coordenadas, http://api.map.baidu.com/ag/coord/convert?from=0&to=4&x=longitude&y=latitude en ese sentido • de: Sistema de coordenadas de origen (0 para coordenadas GPS originales, 2 para coordenadas Google) • a: Coordenadas convertidas (4 es la propia de Baidu, como si tuviera que ser 4) • x: Precisión • y: Latitud El resultado devuelto es una cadena json: {"error":0,"x":"MTIxLjUwMDIyODIxNDk2","y":"MzEuMjM1ODUwMjYwMTE3"} • error: es el bit de marca de error, y "0" indica OK • x: Precisión del sistema de coordenadas Baidu (cifrado Base64) y: Latitud del sistema de coordenadas Baidu (cifrado Base64); He recopilado el significado de estos dos números en internet:
http://api.map.baidu.com/ag/coord/convert?from=0&to=4&x=longitude&y=latitude 1: Coordenadas angulares obtenidas por equipos GPS; 2: Coordenadas métricas obtenidas por GPS, coordenadas usadas en mapas sogou; 3: Coordenadas utilizadas para Google Maps, SOSO Maps, Aliyun Maps, MapABC Maps y AMAP Maps 4:3 Las coordenadas métricas correspondientes a las coordenadas del mapa en la lista 5: Las coordenadas de longitud y latitud utilizadas por Baidu Maps 6: Coordenadas métricas utilizadas por Baidu Maps 7: coordenadas del mapa en la barra del mapa; 8:51 Coordenadas del mapa No hay valor por defecto 1, que son las coordenadas obtenidas por el dispositivo GPS En cuanto a los tipos de coordenadas de destino, hay dos opciones: 5, 6. 5: BD09LL (coordenadas de latitud y longitud Baidu), 6: BD09MC (coordenadas de latitud y longitud en 100 grados); No El valor por defecto es 5, es decir, bd09ll (coordenadas de Baidu)
Lo anterior se utiliza para convertir 84 coordenadas a coordenadas Baidu; a continuación, hablemos de cómo lograr la conversión inversa de coordenadas, es decir, las coordenadas Baidu se convierten en 84 coordenadas. He encontrado muchos algoritmos en Internet, y la mayoría están limitados a un solo desplazamiento, es decir, el intercambio entre las coordenadas Baidu y las de Marte, el intercambio entre las coordenadas de Marte y las de la Tierra, etc., y apenas se menciona las coordenadas Baidu hasta 84 coordenadas. En este sentido, intenté convertir primero las coordenadas de Baidu a las de Marte, y luego convertir las coordenadas marcianas a las de la Tierra, pero el resultado no fue satisfactorio: el error más bajo fue de 60 metros y el máximo incluso más de 600 metros, así que tuve que rendirme. No voy a publicar más el algoritmo, los estudiantes interesados pueden buscar por Internet por sí mismos. Aquí uso un método ingenioso, el método específico es el siguiente: Las coordenadas Baidu y la conversión de coordenadas GPS son muy cercanas a distancias cortas. Supongamos que tienes las coordenadas Baidu: x1=116.397428, y1=39.90923 Toma esta coordenada como una coordenada GPS y obtén sus coordenadas Baidu a través de la interfaz: x2=116.41004950566, y2=39.916979519873
Las coordenadas del GPS pueden obtenerse mediante cálculo: x = 2*x1-x2,y = 2*y1-y2 x=116.38480649434001 y=39.901480480127。 Para verificar la precisión de este método, tomé las coordenadas de 14 ciudades principales de China, sureste, noroeste y noroeste de China para analizarlas, y los resultados obtuvieron con una desviación de 13 metros y un mínimo de 0,x metros. El error de comprensión es de 6 metros. Los resultados específicos de las pruebas se publicarán más adelante. Permítanme dibujar un diagrama sencillo para ilustrar este problema.
G representa las coordenadas terrestres originales no convertidas; B representa las coordenadas de Baidu después de que G se convierte mediante API de Baidu; G' representa las coordenadas tras la conversión del punto B a través de la API Baidu; Suponiendo que el valor de desplazamiento tras convertir las coordenadas de Google a coordenadas Baidu es pequeño, entonces las coordenadas de punto G son perfectamente iguales a 2B-G'。 Tras la verificación, el valor de desplazamiento tras convertir las coordenadas de Google a coordenadas de Baidu es de unos pocos cientos de metros, lo cual en realidad es insignificante, así que usa este método para resolver el problema de la librería de offset con la propia API de Baidu, y luego ignora el impacto de convertir valores de desplazamiento. Por supuesto, este método también tiene una gran desventaja, es decir, requiere que estos dos puntos estén en la misma base de datos de desplazamientos; si se encuentra en dos bibliotecas de desplazamientos diferentes, el error puede ser relativamente grande. Además, hay otro método que se está preparando para futuras investigaciones, que consiste en establecer una biblioteca offset y utilizar esta biblioteca offset para eliminar aún más este impacto: aún está por estudiarse. Esta es la desventaja de la conversión online: la herramienta de conversión API online de Baidu en realidad tiene un límite en la cantidad de datos convertidos, cada clave solo puede convertir unas 5.000 piezas de datos, y una cuenta puede solicitar hasta 20 claves, así que si la cantidad de datos es grande, en realidad no se recomienda usar este tipo de conversión online, que también era la intención original de estudiar la biblioteca local de offsets. Además, dado que el lado web puede estar más restringido, la velocidad de red, las solicitudes concurrentes, etc., pueden afectar a los resultados y a la experiencia del usuario, por lo que los métodos anteriores son solo de referencia.
|