Estou escrevendo um algorítimo que calcule a distância entre uma serie de coordenadas e retorne qual o ponto mais próximo.
Para isso, o código utiliza dois datasets de coordenadas geográficas (lat/long) e o calculo da distancia é feito utilizando a biblioteca "geosphere".
Porém, basicamente todos os resultados do algorítimo sempre apontam para a ultimo ponto do segundo dataset como sendo o mais próximo, assim creio ter algum erro no loop.
#biblioteca necessária
#install.packages("geosphere")
library("geosphere")
#carregar arquivos
x <- read.csv(file.choose(),sep=";",dec=",") # carregar lista de pontos nominais TIM
y <- read.csv(file.choose(),sep=";",dec=",") # carregar base de sites
#converter site id em characther
x$SiteID <- as.character(x$SiteID)
#Mostrar tabelas
View(y)
View(x)
dista1 <- c() #distancia do ponto nominal ao site
# Calculo Distancia
for (i in 1:216) {
coord1 <- c(x$LONG[i],x$LAT[i])
for (j in 1:11195 ) {
coord2 <- c(y$Longitude[j],y$Latitude[j])
dista1[j] <- as.numeric(distm(coord1,coord2, fun = distGeo))
#Calculo da menor distancia
if (j>1) {
k <- j-1
if (dista1[j]<dista1[k]) {
menor_dist <- dista1[j]
x$Distancia[i] <- menor_dist
}
else {
menor_dist <- dista1[k]
x$Distancia[i] <- menor_dist
}
}
}
}
write.csv(x, "Resultado.csv", row.names = FALSE)