Recuperar coordenadas de locais de uma estrada a partir do Google Maps

Ola a todos, estou devolta aqui. Estou com o seguinte problema. Olhando os dados de atropelamentos de varias especies de bixinhos ao longo de uma estrada, eu tenho os seguintes dados:
head(dados) Especie km 1 Especie 5 27 2 Especie 3 32 3 Especie 3 64 4 Especie 4 40 5 Especie 1 51 6 Especie 6 57
A especie que foi atropelada, e qual o km da estrada. Eu gostaria de fazer um gráfico espacial, de onde estão acontecendo esses atropelamentos. Os dados em questão são da Rodovia ES-060. Eu fui no google maps e encontrei ela. Ai peguei as coordenadas de alguns pontos e importei no R, por exemplo: Lon Lat Local 1 -40.32012 -20.39675 Inicio 2 -40.32477 -20.40193 KM 12 3 -40.39341 -20.54320 KM 30 4 -40.51056 -20.63095 KM 49 5 -40.55583 -20.73349 KM 66 6 -40.55161 -20.73921 Fim Peguei esses valores assim, eu ia no google street view, ai olhava na estrada as plaquinha km 30, ai ia la e marcava um ponto. Olhava outra plaquinha e marcava outro ponto. Se você traçar uma rota do fim para o inicio, da pra ver a estrada inteira (se a rota for ao contrario, não da muito certo, ja que tem que voltar pra uma rotatória no trajeto.). Eu gostaria de saber se tem uma estrategia simples, usando essas informações de saber as coordenadas para cada km do 11 ao 67. Pra completar minha primeira planilha, dados, com coordenadas. Tipo importar a rota e marcar pontos usando estes de referencia, pra saber a coordenada do km 11, do km 12 e assim por diante. Dai eu veria num mapa onde estão os atropelamentos. Segue um exemplo dos dados e um plot do mapa da estrada. library(RgoogleMaps) #exemplo de dados especie<-paste("Especie",1:6) km<-seq(11,67,by=1) dados<-data.frame(Especie=NA,km=NA) for(i in 1:20) { dados[i,1]<-sample(especie,1) dados[i,2]<-sample(km,1) } head(dados) #Locais no google maps em um data.frame dados.pos<-structure(list(Lon = c(-40.3201206572012, -40.3247698942156, -40.3934139596311, -40.5105609306218, -40.5558289282114, -40.551610815962), Lat = c(-20.3967530595136, -20.4019278830141, -20.5432001637965, -20.6309481844606, -20.733489883797, -20.7392078853725), Local = c("Inicio", "KM 12", "KM 30", "KM 49", "KM 66", "Fim")), .Names = c("Lon", "Lat", "Local"), row.names = c(NA, -6L), class = "data.frame") dados.pos #Baixando o maps lat = dados.pos[c(1,6),2] lon = dados.pos[c(1,6),1] center = c(lat=mean(lat), lon=mean(lon)) zoom <- min(MaxZoom(range(lat), range(lon))) MyMap <- GetMap(center=center,zoom=zoom,maptype ="roadmap") #plot PlotOnStaticMap(MyMap) #pontos conhecidos TextOnStaticMap(MyMap,claudia.coord[,2],claudia.coord[,1],labels = claudia.coord[,3]) Desde ja agradeço a atenção Abraços a todos -- Grato Augusto C. A. Ribas Site Pessoal: http://augustoribas.heliohost.org Lattes: http://lattes.cnpq.br/7355685961127056

So arrumando o script, la em baixo é pra usar o data.frame dados.pos e não claudia.coord, segue o script organizado library(RgoogleMaps) #dados de exemplo especie<-paste("Especie",1:6) km<-seq(11,67,by=1) dados<-data.frame(Especie=NA,km=NA) for(i in 1:20) { dados[i,1]<-sample(especie,1) dados[i,2]<-sample(km,1) } head(dados) #pontos de referencia dados.pos<-structure(list(Lon = c(-40.3201206572012, -40.3247698942156, -40.3934139596311, -40.5105609306218, -40.5558289282114, -40.551610815962), Lat = c(-20.3967530595136, -20.4019278830141, -20.5432001637965, -20.6309481844606, -20.733489883797, -20.7392078853725), Local = c("Inicio", "KM 12", "KM 30", "KM 49", "KM 66", "Fim")), .Names = c("Lon", "Lat", "Local"), row.names = c(NA, -6L), class = "data.frame") dados.pos #baixando um mapa lat = dados.pos[c(1,6),2] lon = dados.pos[c(1,6),1] center = c(lat=mean(lat), lon=mean(lon)) zoom <- min(MaxZoom(range(lat), range(lon))) MyMap <- GetMap(center=center,zoom=zoom,maptype ="roadmap") #plot de exemplo PlotOnStaticMap(MyMap) TextOnStaticMap(MyMap,dados.pos[,2],dados.pos[,1],labels = dados.pos[,3]) Em 17 de setembro de 2012 16:47, Augusto Ribas <ribas.aca@gmail.com>escreveu:
Ola a todos, estou devolta aqui. Estou com o seguinte problema. Olhando os dados de atropelamentos de varias especies de bixinhos ao longo de uma estrada, eu tenho os seguintes dados:
head(dados) Especie km 1 Especie 5 27 2 Especie 3 32 3 Especie 3 64 4 Especie 4 40 5 Especie 1 51 6 Especie 6 57
A especie que foi atropelada, e qual o km da estrada.
Eu gostaria de fazer um gráfico espacial, de onde estão acontecendo esses atropelamentos. Os dados em questão são da Rodovia ES-060. Eu fui no google maps e encontrei ela. Ai peguei as coordenadas de alguns pontos e importei no R, por exemplo:
Lon Lat Local 1 -40.32012 -20.39675 Inicio 2 -40.32477 -20.40193 KM 12 3 -40.39341 -20.54320 KM 30 4 -40.51056 -20.63095 KM 49 5 -40.55583 -20.73349 KM 66 6 -40.55161 -20.73921 Fim
Peguei esses valores assim, eu ia no google street view, ai olhava na estrada as plaquinha km 30, ai ia la e marcava um ponto. Olhava outra plaquinha e marcava outro ponto. Se você traçar uma rota do fim para o inicio, da pra ver a estrada inteira (se a rota for ao contrario, não da muito certo, ja que tem que voltar pra uma rotatória no trajeto.).
Eu gostaria de saber se tem uma estrategia simples, usando essas informações de saber as coordenadas para cada km do 11 ao 67. Pra completar minha primeira planilha, dados, com coordenadas. Tipo importar a rota e marcar pontos usando estes de referencia, pra saber a coordenada do km 11, do km 12 e assim por diante. Dai eu veria num mapa onde estão os atropelamentos.
Segue um exemplo dos dados e um plot do mapa da estrada.
library(RgoogleMaps)
#exemplo de dados especie<-paste("Especie",1:6) km<-seq(11,67,by=1)
dados<-data.frame(Especie=NA,km=NA) for(i in 1:20) { dados[i,1]<-sample(especie,1) dados[i,2]<-sample(km,1) }
head(dados)
#Locais no google maps em um data.frame dados.pos<-structure(list(Lon = c(-40.3201206572012, -40.3247698942156, -40.3934139596311, -40.5105609306218, -40.5558289282114, -40.551610815962), Lat = c(-20.3967530595136, -20.4019278830141, -20.5432001637965, -20.6309481844606, -20.733489883797, -20.7392078853725), Local = c("Inicio", "KM 12", "KM 30", "KM 49", "KM 66", "Fim")), .Names = c("Lon", "Lat", "Local"), row.names = c(NA, -6L), class = "data.frame")
dados.pos
#Baixando o maps lat = dados.pos[c(1,6),2] lon = dados.pos[c(1,6),1] center = c(lat=mean(lat), lon=mean(lon)) zoom <- min(MaxZoom(range(lat), range(lon)))
MyMap <- GetMap(center=center,zoom=zoom,maptype ="roadmap")
#plot PlotOnStaticMap(MyMap)
#pontos conhecidos TextOnStaticMap(MyMap,claudia.coord[,2],claudia.coord[,1],labels = claudia.coord[,3])
Desde ja agradeço a atenção Abraços a todos -- Grato Augusto C. A. Ribas
Site Pessoal: http://augustoribas.heliohost.org Lattes: http://lattes.cnpq.br/7355685961127056
-- Grato Augusto C. A. Ribas Site Pessoal: http://augustoribas.heliohost.org Lattes: http://lattes.cnpq.br/7355685961127056

Opa, caso sirva para alguém, consegui fazer uma solução, acho que até razoavel. Usando o programa Google Earth www.google.com/earth/ , eu salvei em .kml um grupo de pontos de referencia de uma estrada e uma rota do inicio ao fim da estrada que tenho interesse. Daqui fiz o seguinte, em script: #dados #coordenadas de referencia claudia.coord<-structure(list(X1 = c(-40.3201206572012, -40.3247698942156, -40.3934139596311, -40.5105609306218, -40.5558289282114, -40.551610815962), X2 = c(-20.3967530595136, -20.4019278830141, -20.5432001637965, -20.6309481844606, -20.733489883797, -20.7392078853725), X3 = c(11, 12, 30, 49, 66, 67)), .Names = c("X1", "X2", "X3"), row.names = c(NA, -6L), class = "data.frame") #rota rota.coord<-list(structure(c(-40.365423, -20.517075, 0), .Dim = c(1L, 3L)), structure(c(-40.552351, -20.737927, 0), .Dim = c(1L, 3L)), structure(c(-40.36541, -20.51709, 0), .Dim = c(1L, 3L)), structure(c(-40.43334, -20.61993, 0), .Dim = c(1L, 3L)), structure(c(-40.51806, -20.63094, 0), .Dim = c(1L, 3L)), structure(c(-40.36541, -40.365742, -40.381519, -40.38269, -40.383438, -40.384258, -40.391472, -40.392799, -40.394341, -40.397041, -40.406738, -40.406979, -40.40918, -40.415722, -40.416901, -40.41803, -40.418839, -40.42157, -40.423302, -40.423809, -40.424229, -40.42458, -40.424751, -40.4268, -40.42717, -40.42775, -40.428299, -40.429062, -40.43092, -40.433338, -40.433338, -40.43391, -40.43446, -40.43483, -40.43536, -40.435661, -40.437302, -40.441681, -40.44212, -40.44294, -40.443878, -40.4505, -40.453442, -40.454021, -40.455059, -40.457439, -40.457878, -40.45826, -40.458988, -40.46138, -40.466801, -40.467892, -40.469059, -40.469849, -40.47047, -40.472919, -40.473942, -40.474339, -40.47686, -40.47834, -40.48362, -40.485271, -40.487709, -40.48827, -40.489029, -40.489441, -40.489929, -40.490379, -40.490688, -40.490978, -40.492329, -40.492748, -40.493649, -40.494171, -40.494492, -40.495689, -40.495949, -40.496208, -40.496521, -40.496922, -40.50016, -40.500629, -40.50103, -40.50177, -40.502178, -40.504108, -40.50452, -40.50528, -40.505852, -40.506401, -40.506809, -40.509621, -40.510479, -40.510971, -40.511871, -40.516418, -40.517181, -40.518059, -40.518059, -40.518639, -40.519249, -40.521309, -40.521469, -40.52195, -40.522041, -40.521992, -40.522099, -40.522209, -40.52293, -40.524651, -40.52549, -40.528721, -40.52932, -40.529652, -40.530621, -40.531078, -40.531719, -40.532051, -40.532558, -40.533112, -40.534512, -40.534882, -40.53529, -40.53577, -40.53619, -40.54044, -40.541222, -40.541752, -40.542332, -40.54393, -40.54509, -40.545509, -40.54607, -40.546371, -40.546951, -40.547291, -40.549229, -40.550892, -40.551281, -40.551559, -40.554508, -40.555222, -40.558552, -40.559299, -40.55941, -40.55946, -40.559429, -40.559139, -40.559101, -40.559139, -40.559391, -40.56007, -40.560299, -40.56039, -40.56052, -40.560711, -40.560879, -40.561619, -40.562469, -40.563492, -40.564751, -40.565262, -40.565609, -40.565731, -40.565849, -40.566448, -40.566441, -40.566319, -40.566109, -40.56546, -40.563431, -40.562962, -40.562698, -40.562698, -40.564091, -40.564171, -40.56414, -40.563961, -40.56353, -40.562119, -40.56171, -40.561489, -40.561531, -40.561779, -40.56218, -40.56601, -40.568699, -40.572079, -40.572762, -40.573711, -40.575909, -40.57618, -40.576321, -40.57679, -40.576729, -40.576569, -40.576241, -40.57402, -40.573189, -40.571331, -40.5709, -40.570469, -40.569851, -40.569279, -40.568081, -40.564419, -40.563519, -40.562931, -40.560059, -40.559551, -40.559292, -40.559109, -40.558922, -40.558609, -40.55827, -40.557991, -40.557652, -40.557259, -40.555271, -40.554901, -40.5536, -40.553219, -40.552341, -20.51709, -20.51738, -20.528761, -20.529699, -20.530439, -20.531361, -20.54055, -20.54215, -20.54423, -20.54763, -20.56024, -20.56061, -20.564871, -20.577801, -20.58, -20.58148, -20.582291, -20.5844, -20.58593, -20.58654, -20.587191, -20.587971, -20.588579, -20.604839, -20.606581, -20.608749, -20.61027, -20.61215, -20.61635, -20.61993, -20.61993, -20.62042, -20.620621, -20.62063, -20.62051, -20.620399, -20.61956, -20.61656, -20.61628, -20.61587, -20.615589, -20.614269, -20.613899, -20.61376, -20.613359, -20.61187, -20.61165, -20.6115, -20.61134, -20.611191, -20.611139, -20.61092, -20.61051, -20.610331, -20.61025, -20.61017, -20.61025, -20.610331, -20.610991, -20.61129, -20.61158, -20.61153, -20.61129, -20.6113, -20.61146, -20.611629, -20.61191, -20.61227, -20.61261, -20.613041, -20.615709, -20.61632, -20.61739, -20.61812, -20.618879, -20.623011, -20.62348, -20.62381, -20.624109, -20.62439, -20.626459, -20.62674, -20.6269, -20.627069, -20.62709, -20.62686, -20.62685, -20.62698, -20.62718, -20.627501, -20.627819, -20.630289, -20.630779, -20.630951, -20.631149, -20.63121, -20.631149, -20.630939, -20.630939, -20.63081, -20.63076, -20.630699, -20.63076, -20.63142, -20.631781, -20.63208, -20.6325, -20.632681, -20.63323, -20.6341, -20.63463, -20.63726, -20.63785, -20.63825, -20.640039, -20.64072, -20.64105, -20.64115, -20.64119, -20.6411, -20.640739, -20.640711, -20.640739, -20.64094, -20.64123, -20.645691, -20.646441, -20.64678, -20.64695, -20.64716, -20.64744, -20.64765, -20.648211, -20.648729, -20.649561, -20.64978, -20.650709, -20.651979, -20.65222, -20.65233, -20.65299, -20.65325, -20.65505, -20.65576, -20.656139, -20.65661, -20.657141, -20.658529, -20.658911, -20.6593, -20.660089, -20.66123, -20.66185, -20.66239, -20.66415, -20.6646, -20.664869, -20.66543, -20.66588, -20.666519, -20.667521, -20.667971, -20.668381, -20.66872, -20.66913, -20.67264, -20.673201, -20.673679, -20.674101, -20.6751, -20.67775, -20.67856, -20.679569, -20.680531, -20.68688, -20.68738, -20.688101, -20.688749, -20.689541, -20.6912, -20.69183, -20.69257, -20.693319, -20.694019, -20.69454, -20.6982, -20.700491, -20.702909, -20.7036, -20.70483, -20.708309, -20.708969, -20.709459, -20.71533, -20.716431, -20.71719, -20.718081, -20.720119, -20.72117, -20.723829, -20.72436, -20.72471, -20.725121, -20.72541, -20.72574, -20.72599, -20.7262, -20.72645, -20.728041, -20.72846, -20.728769, -20.72912, -20.729691, -20.73107, -20.73184, -20.73222, -20.73255, -20.73283, -20.733919, -20.734209, -20.735689, -20.736271, -20.737921, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), .Dim = c(223L, 3L))) library(RgoogleMaps) library(maptools) library(sp) #importando um mapa de referencia lat = claudia.coord[c(1,6),2] lon = claudia.coord[c(1,6),1] center = c(lat=mean(lat), lon=mean(lon)); zoom <- min(MaxZoom(range(lat), range(lon))); MyMap <- GetMap(center=center,zoom=zoom,maptype ="roadmap") #visualizando o mapa PlotOnStaticMap(MyMap) #coordenadas de referencia TextOnStaticMap(MyMap,claudia.coord[,2],claudia.coord[,1],labels = claudia.coord[,3]) #observando a rota se esta correta #transformar dados de lista para matrix rota.coord<-data.frame(do.call(rbind,rota.coord)) TextOnStaticMap(MyMap,rota.coord[,2],rota.coord[,1],labels = rownames(rota.coord),cex=0.5) #é possivel usar o comando spDists para obter a distancia em km de 2 pontos em latitude e longitude spDists(as.matrix(rbind(claudia.coord[3,c(2,1)],rota.coord[,c(2,1)])),longlat=T)[,1] #assim eu posso comparar com meu ponto de referencia plot(rota.coord[,c(2,1)],type="b") text(claudia.coord[,c(2,1)], labels = claudia.coord[,3],col="red") #então comparando com o KM 30, usando somente ele como ponto de referencia rota.coord$X3<-spDists(as.matrix(rbind(claudia.coord[3,c(2,1)],rota.coord[,c(2,1)])),longlat=T)[-1,1] #então o ponto mais proximo na rota do meu KM 30 eu vou chamar de KM 30 na rota rota.coord$KM<-NA min(rota.coord$X3) which(rota.coord$X3==min(rota.coord$X3)) #esse ponto é o meio rota.coord$KM[13]<-30 #e vou separar em esquerda e direta #pos pra esquerda a kilometragem aumenta, e pra direta a kilometragem diminui #vou deixar meu ponto de referencia nos dois lados rota.coord.esquerda<-rota.coord[1:13,] rota.coord.direita<-rota.coord[13:228,] #esquerda #aqui os pontos estão bagunçados, veio assim da rota do google maps rota.coord.esquerda plot(rota.coord.esquerda[,c(2,1)]) text(rota.coord.esquerda[,c(2,1)], labels = round(rota.coord.esquerda[,3],digits=2),col="red") #mas tirando 3 pontos a rota fica organizada rota.coord.esquerda[-c(2,4,5),] plot(rota.coord.esquerda[-c(2,4,5),c(2,1)],type="b") text(rota.coord.esquerda[-c(2,4,5),c(2,1)], labels = round(rota.coord.esquerda[-c(2,4,5),3],digits=2),col="red") rota.coord.esquerda<-rota.coord.esquerda[-c(2,4,5),] #dai eu calculo a distancia em kilometros de um ponto e o ponto adjacente rota.coord.esquerda$Dist.next<-0 for(i in (nrow(rota.coord.esquerda)-1):1) { rota.coord.esquerda$Dist.next[i]<-spDists(as.matrix(rota.coord.esquerda[c(i,i+1),c(2,1)]),longlat=T)[2,1] } #vejo se os valores fazem sentido espacialmente rota.coord.esquerda plot(rota.coord.esquerda[,c(2,1)]) text(rota.coord.esquerda[,c(2,1)], labels = round(rota.coord.esquerda[,5],digits=2),col="red") #ai usando o km 30 de referencia eu vou diminuindo a kilometragem da estrada for(i in (nrow(rota.coord.esquerda)-1):1) { rota.coord.esquerda$KM[i]<-rota.coord.esquerda$KM[i+1]-rota.coord.esquerda$Dist.next[i] } #e dou uma olhada no contexto do mapa rota.coord.esquerda TextOnStaticMap(MyMap,rota.coord.esquerda[,2],rota.coord.esquerda[,1],labels = round(rota.coord.esquerda$KM,digits=2),cex=0.5) windows() TextOnStaticMap(MyMap,claudia.coord[,2],claudia.coord[,1],labels = claudia.coord[,3]) #parece que ficou ok, ai começo o mesmo processo pra direita #direita #pontos ok rota.coord.direita plot(rota.coord.direita[,c(2,1)],type="b") text(rota.coord.direita[,c(2,1)], labels = round(rota.coord.direita[,3],digits=2),col="red") #distancia ao proximo ponto rota.coord.direita$Dist.next<-0 for(i in (nrow(rota.coord.direita)-1):1) { rota.coord.direita$Dist.next[i]<-spDists(as.matrix(rota.coord.direita[c(i,i+1),c(2,1)]),longlat=T)[2,1] } #olhando num plot rota.coord.direita plot(rota.coord.direita[,c(2,1)]) text(rota.coord.direita[,c(2,1)], labels = round(rota.coord.direita[,5],digits=2),col="red") #somando a kilometragem estrada a frente for(i in 1:(nrow(rota.coord.direita)-1)) { rota.coord.direita$KM[i+1]<-rota.coord.direita$KM[i]+rota.coord.direita$Dist.next[i+1] } #olhando o resultado no mapa rota.coord.direita TextOnStaticMap(MyMap,rota.coord.direita[,2],rota.coord.direita[,1],labels = round(rota.coord.direita$KM,digits=2),cex=0.5) windows() TextOnStaticMap(MyMap,claudia.coord[,2],claudia.coord[,1],labels = claudia.coord[,3]) #plotando o resutado final final<-rbind(rota.coord.esquerda,rota.coord.direita) TextOnStaticMap(MyMap,final[,2],final[,1],labels = round(final$KM,digits=2),cex=0.5) #agora eu posso substituir nos meus dados a coordenada mais proxima #do km que esta na planilha de dados que tenho. #eu ainda vou tentar melhorar usando mais pontos de referencias e vendo se o resultado diferencia muito, e pensei em fazer uma média entre os pontos. #resolvi postar aqui, pos quem sabe pode ser util para alguem Em 17 de setembro de 2012 16:52, Augusto Ribas <ribas.aca@gmail.com> escreveu:
So arrumando o script, la em baixo é pra usar o data.frame dados.pos e não claudia.coord, segue o script organizado
library(RgoogleMaps)
#dados de exemplo
especie<-paste("Especie",1:6) km<-seq(11,67,by=1)
dados<-data.frame(Especie=NA,km=NA) for(i in 1:20) { dados[i,1]<-sample(especie,1) dados[i,2]<-sample(km,1) }
head(dados)
#pontos de referencia
dados.pos<-structure(list(Lon = c(-40.3201206572012, -40.3247698942156, -40.3934139596311, -40.5105609306218, -40.5558289282114, -40.551610815962), Lat = c(-20.3967530595136, -20.4019278830141, -20.5432001637965, -20.6309481844606, -20.733489883797, -20.7392078853725), Local = c("Inicio", "KM 12", "KM 30", "KM 49", "KM 66", "Fim")), .Names = c("Lon", "Lat", "Local"), row.names = c(NA, -6L), class = "data.frame")
dados.pos
#baixando um mapa
lat = dados.pos[c(1,6),2] lon = dados.pos[c(1,6),1] center = c(lat=mean(lat), lon=mean(lon)) zoom <- min(MaxZoom(range(lat), range(lon)))
MyMap <- GetMap(center=center,zoom=zoom,maptype ="roadmap")
#plot de exemplo PlotOnStaticMap(MyMap) TextOnStaticMap(MyMap,dados.pos[,2],dados.pos[,1],labels = dados.pos[,3])
Em 17 de setembro de 2012 16:47, Augusto Ribas <ribas.aca@gmail.com> escreveu:
Ola a todos, estou devolta aqui. Estou com o seguinte problema. Olhando os dados de atropelamentos de varias especies de bixinhos ao longo de uma estrada, eu tenho os seguintes dados:
head(dados) Especie km 1 Especie 5 27 2 Especie 3 32 3 Especie 3 64 4 Especie 4 40 5 Especie 1 51 6 Especie 6 57
A especie que foi atropelada, e qual o km da estrada.
Eu gostaria de fazer um gráfico espacial, de onde estão acontecendo esses atropelamentos. Os dados em questão são da Rodovia ES-060. Eu fui no google maps e encontrei ela. Ai peguei as coordenadas de alguns pontos e importei no R, por exemplo:
Lon Lat Local 1 -40.32012 -20.39675 Inicio 2 -40.32477 -20.40193 KM 12 3 -40.39341 -20.54320 KM 30 4 -40.51056 -20.63095 KM 49 5 -40.55583 -20.73349 KM 66 6 -40.55161 -20.73921 Fim
Peguei esses valores assim, eu ia no google street view, ai olhava na estrada as plaquinha km 30, ai ia la e marcava um ponto. Olhava outra plaquinha e marcava outro ponto. Se você traçar uma rota do fim para o inicio, da pra ver a estrada inteira (se a rota for ao contrario, não da muito certo, ja que tem que voltar pra uma rotatória no trajeto.).
Eu gostaria de saber se tem uma estrategia simples, usando essas informações de saber as coordenadas para cada km do 11 ao 67. Pra completar minha primeira planilha, dados, com coordenadas. Tipo importar a rota e marcar pontos usando estes de referencia, pra saber a coordenada do km 11, do km 12 e assim por diante. Dai eu veria num mapa onde estão os atropelamentos.
Segue um exemplo dos dados e um plot do mapa da estrada.
library(RgoogleMaps)
#exemplo de dados especie<-paste("Especie",1:6) km<-seq(11,67,by=1)
dados<-data.frame(Especie=NA,km=NA) for(i in 1:20) { dados[i,1]<-sample(especie,1) dados[i,2]<-sample(km,1) }
head(dados)
#Locais no google maps em um data.frame dados.pos<-structure(list(Lon = c(-40.3201206572012, -40.3247698942156, -40.3934139596311, -40.5105609306218, -40.5558289282114, -40.551610815962), Lat = c(-20.3967530595136, -20.4019278830141, -20.5432001637965, -20.6309481844606, -20.733489883797, -20.7392078853725), Local = c("Inicio", "KM 12", "KM 30", "KM 49", "KM 66", "Fim")), .Names = c("Lon", "Lat", "Local"), row.names = c(NA, -6L), class = "data.frame")
dados.pos
#Baixando o maps lat = dados.pos[c(1,6),2] lon = dados.pos[c(1,6),1] center = c(lat=mean(lat), lon=mean(lon)) zoom <- min(MaxZoom(range(lat), range(lon)))
MyMap <- GetMap(center=center,zoom=zoom,maptype ="roadmap")
#plot PlotOnStaticMap(MyMap)
#pontos conhecidos TextOnStaticMap(MyMap,claudia.coord[,2],claudia.coord[,1],labels = claudia.coord[,3])
Desde ja agradeço a atenção Abraços a todos -- Grato Augusto C. A. Ribas
Site Pessoal: http://augustoribas.heliohost.org Lattes: http://lattes.cnpq.br/7355685961127056
-- Grato Augusto C. A. Ribas
Site Pessoal: http://augustoribas.heliohost.org Lattes: http://lattes.cnpq.br/7355685961127056
-- Grato Augusto C. A. Ribas Site Pessoal: http://augustoribas.heliohost.org Lattes: http://lattes.cnpq.br/7355685961127056
participantes (1)
-
Augusto Ribas