<div dir="ltr"><div dir="ltr"><div><br></div><div>Boa Tarde,</div><div><br></div><div>Estou escrevendo um algorítimo que calcule a distância entre uma serie de coordenadas e retorne qual o ponto mais próximo.</div><div><br></div><div>Para isso, o código utiliza dois datasets de coordenadas geográficas (lat/long) e o calculo da distancia é feito utilizando a biblioteca "geosphere".</div><div><br></div><div>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.</div><div><br></div><div>Alguma sugestão?</div><div><br></div><div>Abaixo o código</div><div><br></div><div>______</div><div><br></div><div><div>#biblioteca necessária</div><div>#install.packages("geosphere")</div><div>library("geosphere")</div><div><br></div><div>#carregar arquivos</div><div>x <- read.csv(file.choose(),sep=";",dec=",") # carregar lista de pontos nominais TIM</div><div>y <- read.csv(file.choose(),sep=";",dec=",") # carregar base de sites</div><div><br></div><div>#converter site id em characther</div><div>x$SiteID <- as.character(x$SiteID)</div><div>y$<a href="http://SITE.ID">SITE.ID</a> <- as.character(y$<a href="http://SITE.ID">SITE.ID</a>)</div><div><br></div><div>#Mostrar tabelas</div><div>View(y)</div><div>View(x)</div><div><br></div><div>dista1 <- c() #distancia do ponto nominal ao site</div><div><br></div><div># Calculo Distancia</div><div>for (i in 1:216) {</div><div> coord1 <- c(x$LONG[i],x$LAT[i])</div><div> for (j in 1:11195 ) {</div><div> coord2 <- c(y$Longitude[j],y$Latitude[j])</div><div> dista1[j] <- as.numeric(distm(coord1,coord2, fun = distGeo))</div><div> #Calculo da menor distancia</div><div> if (j>1) {</div><div> k <- j-1</div><div> if (dista1[j]<dista1[k]) {</div><div> menor_dist <- dista1[j]</div><div> x$Distancia[i] <- menor_dist</div><div> x$SiteID[i] <- y$<a href="http://SITE.ID">SITE.ID</a>[j]</div><div> }</div><div> else {</div><div> menor_dist <- dista1[k]</div><div> x$Distancia[i] <- menor_dist</div><div> x$SiteID[i] <- y$<a href="http://SITE.ID">SITE.ID</a>[k]</div><div> }</div><div> }</div><div> }</div><div>}</div><div><br></div><div>write.csv(x, "Resultado.csv", row.names = FALSE)</div></div><div><br></div><div>_______________</div><div><br></div><div>Resultado retornado:</div><div><br></div><div><table border="0" cellpadding="0" cellspacing="0" width="501" style="border-collapse:collapse;width:376pt">
<colgroup><col width="93" style="width:70pt">
<col width="95" span="2" style="width:71pt">
<col width="130" style="width:98pt">
<col width="88" style="width:66pt">
</colgroup><tbody><tr height="20" style="height:15pt">
<td height="20" class="gmail-xl65" width="93" style="height:15pt;width:70pt;text-align:center;padding-top:1px;padding-right:1px;padding-left:1px;color:black;font-size:11pt;font-family:Calibri,sans-serif;vertical-align:bottom;border:none;white-space:nowrap">ï<b>..END_ID</b></td>
<td class="gmail-xl65" width="95" style="width:71pt;text-align:center;padding-top:1px;padding-right:1px;padding-left:1px;color:black;font-size:11pt;font-family:Calibri,sans-serif;vertical-align:bottom;border:none;white-space:nowrap"><b>LAT</b></td>
<td class="gmail-xl65" width="95" style="width:71pt;text-align:center;padding-top:1px;padding-right:1px;padding-left:1px;color:black;font-size:11pt;font-family:Calibri,sans-serif;vertical-align:bottom;border:none;white-space:nowrap"><b>LONG</b></td>
<td class="gmail-xl65" width="130" style="width:98pt;text-align:center;padding-top:1px;padding-right:1px;padding-left:1px;color:black;font-size:11pt;font-family:Calibri,sans-serif;vertical-align:bottom;border:none;white-space:nowrap"><b>Distancia (m)</b></td>
<td class="gmail-xl65" width="88" style="width:66pt;text-align:center;padding-top:1px;padding-right:1px;padding-left:1px;color:black;font-size:11pt;font-family:Calibri,sans-serif;vertical-align:bottom;border:none;white-space:nowrap"><b>SiteID</b></td>
</tr>
<tr height="20" style="height:15pt">
<td height="20" class="gmail-xl65" style="height:15pt;text-align:center;padding-top:1px;padding-right:1px;padding-left:1px;color:black;font-size:11pt;font-family:Calibri,sans-serif;vertical-align:bottom;border:none;white-space:nowrap">BASDR_1</td>
<td class="gmail-xl66" style="text-align:center;padding-top:1px;padding-right:1px;padding-left:1px;color:black;font-size:11pt;font-family:Calibri,sans-serif;vertical-align:bottom;border:none;white-space:nowrap">-1.296.434</td>
<td class="gmail-xl66" style="text-align:center;padding-top:1px;padding-right:1px;padding-left:1px;color:black;font-size:11pt;font-family:Calibri,sans-serif;vertical-align:bottom;border:none;white-space:nowrap">-3.847.421</td>
<td class="gmail-xl66" style="text-align:center;padding-top:1px;padding-right:1px;padding-left:1px;color:black;font-size:11pt;font-family:Calibri,sans-serif;vertical-align:bottom;border:none;white-space:nowrap">144.669.250.579.953</td>
<td class="gmail-xl65" style="text-align:center;padding-top:1px;padding-right:1px;padding-left:1px;color:black;font-size:11pt;font-family:Calibri,sans-serif;vertical-align:bottom;border:none;white-space:nowrap">YBARWL</td>
</tr>
<tr height="20" style="height:15pt">
<td height="20" class="gmail-xl65" style="height:15pt;text-align:center;padding-top:1px;padding-right:1px;padding-left:1px;color:black;font-size:11pt;font-family:Calibri,sans-serif;vertical-align:bottom;border:none;white-space:nowrap">BALFS_2</td>
<td class="gmail-xl66" style="text-align:center;padding-top:1px;padding-right:1px;padding-left:1px;color:black;font-size:11pt;font-family:Calibri,sans-serif;vertical-align:bottom;border:none;white-space:nowrap">-1.289.767</td>
<td class="gmail-xl66" style="text-align:center;padding-top:1px;padding-right:1px;padding-left:1px;color:black;font-size:11pt;font-family:Calibri,sans-serif;vertical-align:bottom;border:none;white-space:nowrap">-3.832.365</td>
<td class="gmail-xl66" style="text-align:center;padding-top:1px;padding-right:1px;padding-left:1px;color:black;font-size:11pt;font-family:Calibri,sans-serif;vertical-align:bottom;border:none;white-space:nowrap">146.401.362.045.206</td>
<td class="gmail-xl65" style="text-align:center;padding-top:1px;padding-right:1px;padding-left:1px;color:black;font-size:11pt;font-family:Calibri,sans-serif;vertical-align:bottom;border:none;white-space:nowrap">YBARWL</td>
</tr>
<tr height="20" style="height:15pt">
<td height="20" class="gmail-xl65" style="height:15pt;text-align:center;padding-top:1px;padding-right:1px;padding-left:1px;color:black;font-size:11pt;font-family:Calibri,sans-serif;vertical-align:bottom;border:none;white-space:nowrap">CEFLA_3</td>
<td class="gmail-xl66" style="text-align:center;padding-top:1px;padding-right:1px;padding-left:1px;color:black;font-size:11pt;font-family:Calibri,sans-serif;vertical-align:bottom;border:none;white-space:nowrap">-377.709</td>
<td class="gmail-xl66" style="text-align:center;padding-top:1px;padding-right:1px;padding-left:1px;color:black;font-size:11pt;font-family:Calibri,sans-serif;vertical-align:bottom;border:none;white-space:nowrap">-3.855.802</td>
<td class="gmail-xl66" style="text-align:center;padding-top:1px;padding-right:1px;padding-left:1px;color:black;font-size:11pt;font-family:Calibri,sans-serif;vertical-align:bottom;border:none;white-space:nowrap">222.607.630.292.628</td>
<td class="gmail-xl65" style="text-align:center;padding-top:1px;padding-right:1px;padding-left:1px;color:black;font-size:11pt;font-family:Calibri,sans-serif;vertical-align:bottom;border:none;white-space:nowrap">YBARWL</td>
</tr>
</tbody></table><br></div><div><div>Distancia (m) = distancia ao ponto mais próximo</div><div>SiteID = nome do ponto mais próximo.</div></div><div><br></div><div>At.te</div><div><br></div><div>Bruno</div><div><br></div></div></div>