Este artigo é um artigo espelhado de tradução automática, por favor clique aqui para ir para o artigo original.

Vista: 11254|Resposta: 1

As coordenadas Baidu são convertidas para coordenadas WGS84

[Copiar link]
Publicado em 11/10/2017 09:56:13 | | | |
Requisitos: Converter coordenadas Baidu para coordenadas WGS84
Implementação:
Primeiramente, deixe-me apresentar muitos sistemas de coordenadas complicados na China, como todos sabemos, o GPS dos Estados Unidos usa coordenadas WGS84, mas na China, por razões de segurança, quando o mapa é divulgado e publicado, as 84 coordenadas são não lineares e tendenciosas, e as coordenadas obtidas são chamadas de sistemas de coordenadas GCJ02, comumente conhecidos como coordenadas de Marte. Além disso, muitas empresas de mapas domésticas, talvez devido a necessidades comerciais ou por motivos de concorrência comercial, realizaram um desvio não linear com base nas coordenadas de Marte e obtiveram seu próprio sistema de coordenadas. A Baidu é uma dessas empresas. A Baidu realizou o viés secundário não linear BD-09 com base no GCJ02 e obteve seu próprio sistema de coordenadas Baidu. Isso pode ser benéfico para a própria empresa da Baidu, mas para nós, desenvolvedores, é simplesmente irritante.
A seguir, uma breve introdução aos sistemas de coordenadas usados por alguns provedores de serviços de mapas na China:



Atualmente, a Baidu fornece uma API para conversão de coordenadas, http://api.map.baidu.com/ag/coord/convert?from=0&to=4&x=longitude&y=latitude
a partir daí
• de: Sistema de coordenadas de origem (0 para coordenadas GPS originais, 2 para coordenadas Google)
• para: Coordenadas convertidas (4 é da própria Baidu, como se isso tivesse que ser 4)
• x: Precisão
• y: Latitude
O resultado retornado é uma string json: {"error":0,"x":"MTIxLjUwMDIyODIxNDk2","y":"MzEuMjM1ODUwMjYwMTE3"}
• erro: é o bit de marca de erro, e "0" indica OK
• x: Precisão do sistema de coordenadas Baidu (criptografia Base64)
y: Latitude do sistema de coordenadas Baidu (criptografia Base64);
Eu coletei o significado desses dois números online:
http://api.map.baidu.com/ag/coord/convert?from=0&to=4&x=longitude&y=latitude
1: Coordenadas angulares obtidas por equipamentos GPS;
2: Coordenadas métricas obtidas por GPS, coordenadas usadas em mapas sogou;
3: Coordenadas usadas para Google Maps, SOSO Maps, Aliyun Maps, MapABC Maps e AMAP Maps
4:3 As coordenadas métricas correspondentes às coordenadas do mapa na lista
5: As coordenadas de longitude e latitude usadas pelos Mapas Baidu
6: Coordenadas métricas usadas pelos Baidu Maps
7: coordenadas do mapa da barra do mapa;
8:51 Coordenadas do mapa Nenhum padrão é 1, que são as coordenadas obtidas pelo dispositivo GPS
Para os tipos de coordenadas de destino, existem duas opções: 5, 6.
5: BD09LL (coordenadas de latitude e longitude de Baidu),
6: BD09MC (coordenadas de latitude e longitude em 100 graus); Não. O padrão é 5, ou seja, bd09ll (coordenadas Baidu)

As informações acima são todas usadas para converter 84 coordenadas para coordenadas Baidu; abaixo, vamos falar sobre como realizar a conversão reversa das coordenadas, ou seja, as coordenadas Baidu são convertidas para 84 coordenadas.
Encontrei muitos algoritmos na Internet, e a maioria deles é limitada a um único deslocamento, ou seja, a troca entre coordenadas Baidu e Marte, a intercâmbio entre coordenadas Marte e Terra, etc., e há pouca menção às coordenadas Baidu para 84 coordenadas.
Nesse sentido, tentei converter as coordenadas de Baidu para as de Marte primeiro, e depois converter as coordenadas marcianas para as da Terra, mas o resultado não foi satisfatório, o menor erro foi 60 metros, e o máximo foi até mais de 600 metros, então tive que desistir. Não vou mais postar o algoritmo, estudantes interessados podem procurar na Internet para encontrá-lo sozinhos.
Aqui, uso um método inteligente, o método específico é o seguinte:
As coordenadas Baidu e a conversão de coordenadas GPS são muito próximas a distâncias próximas.
Suponha que você tenha as coordenadas Baidu: x1=116.397428, y1=39.90923
Pegue essa coordenada como uma coordenada GPS e obtenha as coordenadas Baidu dele pela interface: x2=116,41004950566, y2=39,916979519873

As coordenadas do GPS podem ser obtidas por meio do cálculo:
x = 2*x1-x2,y = 2*y1-y2
x=116.38480649434001
y=39.901480480127。
Para verificar a precisão desse método, usei as coordenadas de 14 grandes cidades da China, sudeste, noroeste e noroeste da China para testes, e os resultados obtiveram um desvio de 13 metros e mínimo 0,x metros. O erro de abrangência é de 6 metros. Os resultados específicos dos testes serão publicados posteriormente.
Deixe-me desenhar um diagrama simples para ilustrar essa questão.



G representa as coordenadas originais da Terra não convertidas;
B representa as coordenadas Baidu após a conversão de G através da API Baidu;
G' representa as coordenadas após o ponto B ser convertido via API Baidu;
Assumindo que o valor do deslocamento após converter coordenadas do Google para coordenadas Baidu é pequeno, então as coordenadas do ponto G são perfeitamente iguais a
2B-G'。 Após a verificação, o valor de offset após converter as coordenadas do Google para as coordenadas do Baidu é de cerca de algumas centenas de metros, o que na verdade é desprezível, então use esse método para resolver o problema da biblioteca de offset com a própria API do Baidu, e então ignore o impacto da conversão dos valores de offset.
Claro, esse método também tem uma grande desvantagem, ou seja, exige que esses dois pontos estejam no mesmo banco de dados de offset; se estiver localizado em duas bibliotecas de offset diferentes, o erro pode ser relativamente grande.
Além disso, há outro método que está sendo preparado para pesquisas futuras, que é estabelecer uma biblioteca offset e usar essa biblioteca offset para eliminar ainda mais esse impacto: ainda está a ser estudado.
Aqui está a desvantagem da conversão online: a ferramenta de conversão online da API Baidu tem um limite para a quantidade de dados convertidos, cada chave pode converter apenas cerca de 5.000 dados, e uma conta pode solicitar até 20 chaves, então, se a quantidade de dados for grande, não é recomendado usar esse tipo de conversão online, que também é a intenção original de estudar a biblioteca local de offsets. Além disso, como o lado web pode ser mais restrito, a velocidade da rede, requisições concorrentes, etc., podem afetar os resultados e a experiência do usuário, então os métodos acima são apenas para referência.





Anterior:Javascrip{filter}tmodule - load module require.js
Próximo:Use o método Ajax para POSTAR dados JSON em segundo plano
Disclaimer:
Todo software, material de programação ou artigos publicados pela Code Farmer Network são apenas para fins de aprendizado e pesquisa; O conteúdo acima não deve ser usado para fins comerciais ou ilegais, caso contrário, os usuários terão todas as consequências. As informações deste site vêm da Internet, e disputas de direitos autorais não têm nada a ver com este site. Você deve deletar completamente o conteúdo acima do seu computador em até 24 horas após o download. Se você gosta do programa, por favor, apoie um software genuíno, compre o registro e obtenha serviços genuínos melhores. Se houver qualquer infração, por favor, entre em contato conosco por e-mail.

Mail To:help@itsvse.com