Normalmente o gps informa as coordenadas geográficas através do protocolo NMEA. Tem um projeto pynmea,
que faz a tradução do protocolo pra coordenadas, mas realmente não sei nenhum simulador pra linux. Contudo, acho que gerar coordenadas dentro de um raio de 30km, não é complicado.
Ponto X Brr 166 : Lat -4.05977, long -38.49640
Ponto Y Via sul : Lat -3.79509, long -38.47999
Tem a distancia +- de 30Km em relação a latitude, tanto que a variação foi de 0,26468. Tanto que a longitude não mudou muito por que vi no mapa mais ou menos em linha reta.
Ponto Z Lat: -3.81744, long: -38.79943
Ponto Y Via sul : Lat -3.79509, long -38.47999
Tem a distancia +- de 30Km em relação a Longitude, tanto que a variação foi de 0,31944. Tanto que a Latitude não mudou muito por que vi no mapa mais ou menos em linha reta.
Agora, basta você passar o ponto central da sua coordenada e aplica aquela fórmula da distancia entre 2 pontos, usando como variação pra latitude 0,26468, e pra longitude, 0,31944.
De forma rápida e bem prática, sem muita precisão eu fiz assim. tomara que seja +- isso que você queira.
from random import *
class Pontos:
def __init__(self, lat, lng):
self.lat = lat #latitude
self.lng = lng #longitude
self.centro = [self.lat, self.lng]
self.distMax = [0.26468, 0.31944] #Minha variação de latitude e longitude, que dá em volta de 30km pra cada
def gerarPontos(self):
print self.distMax, (self.distMax[0]*100000)
lat = float((randrange(0, int(self.distMax[0]*100000))))
lng = float((randrange(0, int(self.distMax[1]*100000))))
return [lat, lng]
def criarPonto(self, lat, lng):
calc = randint(0, 4)
print "Calc", calc, lat/1000000, lng/1000000
if calc == 0:
mlat = self.lat+(lat/1000000)
mlng = self.lng+(lng/1000000)
if calc == 1:
mlat = self.lat+(lat/1000000)
mlng = self.lng-(lng/1000000)
if calc == 2:
mlat = self.lat-(lat/1000000)
mlng = self.lng+(lng/1000000)
if calc == 3:
mlat = self.lat-(lat/1000000)
mlng = self.lng-(lng/1000000)
return [mlat, mlng]
pontos = Pontos(-3.79509, -38.47999) #Passando o ponto central, esse ponto é ao lado do via sul.
gpontos = pontos.gerarPontos() #Gerando os pontos dentro de 30km
fpontos = pontos.criarPonto(gpontos[0], gpontos[1]) #Calculando de forma aleatória para qualquer quadrante
print fpontos
Coloca lá no google Maps, como chegar, e passa no A: -3.79509, -38.47999 é em cima do Via Sul.
E depois coloca no B, o ponto gerado.
Se você quiser o calculo exato distancia em km, por graus em latitude ou longitude. aí tem que fazer a fórmula, não lembro, mas deve ter por aí. Valeu.