
Boa Tarde, 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. Alguma sugestão? Abaixo o código ______ #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) y$SITE.ID <- as.character(y$SITE.ID) #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 x$SiteID[i] <- y$SITE.ID[j] } else { menor_dist <- dista1[k] x$Distancia[i] <- menor_dist x$SiteID[i] <- y$SITE.ID[k] } } } } write.csv(x, "Resultado.csv", row.names = FALSE) _______________ Resultado retornado: ï*..END_ID* *LAT* *LONG* *Distancia (m)* *SiteID* BASDR_1 -1.296.434 -3.847.421 144.669.250.579.953 YBARWL BALFS_2 -1.289.767 -3.832.365 146.401.362.045.206 YBARWL CEFLA_3 -377.709 -3.855.802 222.607.630.292.628 YBARWL Distancia (m) = distancia ao ponto mais próximo SiteID = nome do ponto mais próximo. At.te Bruno