Existe um cálculo simples que posso fazer para converter km em um valor que posso adicionar a uma flutuação lat ou lon para calcular uma caixa delimitadora para pesquisas? Não precisa ser totalmente preciso.
Por exemplo: se eu recebesse uma latitude / longitude para Londres, Inglaterra (51,5001524, -0,1262362) e eu quisesse calcular qual lat seria 25km leste / oeste daquele ponto e qual long seria 25km norte / sul daquele ponto, o que eu preciso fazer para converter os 25km em um decimal para somar aos valores acima?
Estou procurando uma regra geral, ou seja: 1km == +/- 0.XXX
Editar:
Minha pesquisa original por "lat lon" não retornou este resultado:
Como calcular a caixa delimitadora para uma determinada localização lat / lng?
A resposta aceita parece adequada para minhas necessidades.
fonte
Respostas:
As conversões aproximadas são:
Isso não é totalmente correto para o achatamento polar da Terra - para isso, você provavelmente gostaria de uma fórmula mais complicada usando o elipsóide de referência WGS84 (o modelo usado para GPS). Mas o erro provavelmente é insignificante para seus propósitos.
Fonte: http://en.wikipedia.org/wiki/Latitude
Cuidado : Esteja ciente de que as coordenadas latlong são expressas em graus, enquanto a
cos
função na maioria (todas?) Das linguagens normalmente aceita radianos, portanto, uma conversão de grau para radianos é necessária.fonte
cos(0°) = 1
=> Portanto, não há fator de correção aplicado ao fazer o cálculo no equador. As longitudes são as mais largas lá.cos(90°) = 0
=> Nos pólos as longitudes se encontram em um ponto. Não há distância a ser calculada.Se você estiver usando Java, Javascript ou PHP, existe uma biblioteca que fará esses cálculos exatamente, usando uma trigonometria divertidamente complicada (mas ainda rápida):
http://www.jstott.me.uk/jcoord/
fonte
http://www.jstott.me.uk/jcoord/ - use esta biblioteca
fonte
Interessante que eu não vi nenhuma menção às coordenadas UTM.
https://en.wikipedia.org/wiki/Universal_Transverse_Mercator_coordinate_system .
Pelo menos se você deseja adicionar km à mesma zona, deve ser simples (em Python: https://pypi.org/project/utm/ )
utm.from_latlon e utm.to_latlon.
fonte
Obrigado Jim Lewis por sua ótima resposta e eu gostaria de ilustrar esta solução por minha função no Swift:
Nesta função para converter distância eu uso as seguintes fórmulas:
fonte
Por que não usar consultas geoespaciais devidamente formuladas ??
Aqui está a página de referência do servidor SQL na função geoespacial STContains:
https://docs.microsoft.com/en-us/sql/t-sql/spatial-geography/stcontains-geography-data-type?view=sql-server-ver15
ou se você não desistir de usar conversão de caixa e radianos, você pode sempre usar a função de distância para encontrar os pontos que você precisa:
Deve haver funcionalidade semelhante para quase qualquer banco de dados lá fora.
Se você implementou a indexação geoespacial corretamente, suas pesquisas seriam muito mais rápidas do que a abordagem que você está usando
fonte