Tengo un marco de datos de líneas espaciales y algunos puntos en él. Los puntos tienen una tercera columna, algunos números, digamos que el promedio de atropellamientos (animales muertos por autos, también conocidos como atropello y fuga) en las coordenadas xey. Quiero trazar en qué parte de la carretera estos números son altos, pero todavía no puedo colocar puntos en la red. Un código de ejemplo lo obtengo de listo para usar el ejemplo de marco de datos de líneas espaciales.

PD: Estoy bien para usar otras parcelas siempre que se vea bien. Por favor envíeme sugerencias si tiene alguna. PS2: me encantaría ponerlo en el mapa real, pero no puedo entender cómo hacer que el mapa funcione con las coordenadas xey

  Coords <- matrix(c(4095215,2303286,4095275,2303226,4095275,2303196,4095395,2303076,
                   4095425,2303076,4095485,2303016,4095485,2302896,4095545,2302836,4095545,2302806,
                   4095575,2302776,4095575,2302746,4095635,2302686,4095635,2302656,4095665,2302626,
                   4095665,2302596,4095695,2302566,4095695,2302536,4095725,2302506,4095725,2302476,
                   4095755,2302446,4095785,2302446,4095815,2302476,4095845,2302446,4095875,2302446,
                   4095965,2302356,4095965,2302296,4096055,2302206,4096055,2302146,4096085,2302116,
                   4096085,2302086,4096205,2301966,4096205,2301906,4096295,2301816,4096295,2301666,
                   4096325,2301636,4096325,2301516,4096385,2301456,4096385,2301426,4096445,2301366,
                   4096415,2301336,4096415,2301276,4096445,2301246,4096445,2301156,4096385,2301096,
                   4096415,2301066,4096415,2300886,4096385,2300856,4096385,2300826,4096355,2300796,
                   4096385,2300766,4096355,2300736,4096355,2300706,4096265,2300616,4096265,2300556,
                   4096205,2300496,4096235,2300466,4096205,2300436,4096205,2300406,4096235,2300376,
                   4096235,2300346,4096175,2300286,4096115,2300286,4096085,2300256,4096085,2300226,
                   4095995,2300136,4095995,2300106,4095875,2299986,4095875,2299956,4095905,2299926,
                   4095905,2299896,4095875,2299866,4095875,2299806,4095845,2299776,4095815,2299806,
                   4095605,2299596,4095605,2299566,4095575,2299536,4095545,2299566,4095515,2299536,
                   4095485,2299566), ncol = 2, byrow = T)

myLine <- Line(Coords)
myLines <- Lines(list(myLine), ID = 1)
mySL <- SpatialLines(list(myLines), proj4string = CRS("+proj=laea +lat_0=52 +lon_0=10 +x_0=4321000 +y_0=3210000 +ellps=GRS80 +units=m +no_defs"))
mySLDF <- SpatialLinesDataFrame(mySL, data = data.frame(ID = 1))


poiX=c(4095485,4096415,4095605)
poiY=c(2302896,2301336,2299596)
poiZ=c(.3,.2,.43)
poii=cbind(poiX,poiY,poiZ)

plot(mySLDF)
points(poii,col="red")

Intenté este código pero no funcionó

library(sp)
mySLDF_fortify <- fortify(mySLDF)
ggplot(mySLDF_fortify, aes(x=long, y=lat, group=group)) + 
  geom_path() +
  theme_classic()

ggplot(mySLDF_fortify, aes(x=long, y=lat, group=z)) + 
  geom_path() + geom_point(poii, aes(x=ooiX, y=poiY,color=poiZ))+
  scale_color_gradient2(low="yellow",mid = "darkblue",high="red")
0
iHermes 26 oct. 2020 a las 11:04

1 respuesta

La mejor respuesta

Hice algunos cambios para que ggplot funcione. Hice poii un marco de datos con una columna group y modifiqué la llamada geom_point con parámetros con nombre explícitos, así como también corrigí los nombres de las columnas del marco de datos que se pasaban.

library(sp)
library(ggplot2)
Coords <- matrix(c(4095215,2303286,4095275,2303226,4095275,2303196,4095395,2303076,
                                         4095425,2303076,4095485,2303016,4095485,2302896,4095545,2302836,4095545,2302806,
                                         4095575,2302776,4095575,2302746,4095635,2302686,4095635,2302656,4095665,2302626,
                                         4095665,2302596,4095695,2302566,4095695,2302536,4095725,2302506,4095725,2302476,
                                         4095755,2302446,4095785,2302446,4095815,2302476,4095845,2302446,4095875,2302446,
                                         4095965,2302356,4095965,2302296,4096055,2302206,4096055,2302146,4096085,2302116,
                                         4096085,2302086,4096205,2301966,4096205,2301906,4096295,2301816,4096295,2301666,
                                         4096325,2301636,4096325,2301516,4096385,2301456,4096385,2301426,4096445,2301366,
                                         4096415,2301336,4096415,2301276,4096445,2301246,4096445,2301156,4096385,2301096,
                                         4096415,2301066,4096415,2300886,4096385,2300856,4096385,2300826,4096355,2300796,
                                         4096385,2300766,4096355,2300736,4096355,2300706,4096265,2300616,4096265,2300556,
                                         4096205,2300496,4096235,2300466,4096205,2300436,4096205,2300406,4096235,2300376,
                                         4096235,2300346,4096175,2300286,4096115,2300286,4096085,2300256,4096085,2300226,
                                         4095995,2300136,4095995,2300106,4095875,2299986,4095875,2299956,4095905,2299926,
                                         4095905,2299896,4095875,2299866,4095875,2299806,4095845,2299776,4095815,2299806,
                                         4095605,2299596,4095605,2299566,4095575,2299536,4095545,2299566,4095515,2299536,
                                         4095485,2299566), ncol = 2, byrow = T)
    
myLine <- Line(Coords)
myLines <- Lines(list(myLine), ID = 1)
mySL <- SpatialLines(list(myLines), proj4string = CRS("+proj=laea +lat_0=52 +lon_0=10 +x_0=4321000 +y_0=3210000 +ellps=GRS80 +units=m +no_defs"))
mySLDF <- SpatialLinesDataFrame(mySL, data = data.frame(ID = 1))
    
long=c(4095485,4096415,4095605)
lat=c(2302896,2301336,2299596)
poiZ=c(.3,.2,.43)
group = c(1.1, 1.1, 1.1)
poii=data.frame(long,lat,poiZ,group)
    
mySLDF_fortify <- fortify(mySLDF)
    
ggplot(mySLDF_fortify, aes(x=long, y=lat, group=group)) +
    geom_path() + 
    geom_point(data=poii, mapping=aes(x=long, y=lat, color=poiZ, group=group)) +
    scale_color_gradient2(low="yellow", mid="darkblue", high="red") + 
    theme_classic()
    

El resultado se ve así.

enter image description here

1
Andrew Chisholm 26 oct. 2020 a las 09:02