R 如何有效地规划河流?

R 如何有效地规划河流?,r,ggplot2,gis,R,Ggplot2,Gis,我想出了一种用geom_路径绘制河流的方法。我不知道是否有更好的办法。我不得不将数据帧分割成数百条“河流”。所以它非常慢。有什么想法吗 world_map <- map_data('world') system("wget https://sites.google.com/site/joabelb/Home/PrincRiosBrazil.zip") system("unzip -o PrincRiosBrazil.zip") library(rgdal) shapeHid <-

我想出了一种用geom_路径绘制河流的方法。我不知道是否有更好的办法。我不得不将数据帧分割成数百条“河流”。所以它非常慢。有什么想法吗

world_map <- map_data('world') 
system("wget https://sites.google.com/site/joabelb/Home/PrincRiosBrazil.zip")
system("unzip -o PrincRiosBrazil.zip")
library(rgdal)
shapeHid <- readOGR(dsn = ".", layer = "PrincipaisRiosDoBrasil") 
shapeHid@data$id = rownames(shapeHid@data)
library(ggplot2)
shapeHid.points = fortify(shapeHid, region="id")#
shapeHid.df = merge(shapeHid.points, shapeHid@data, by="id", all=F)

listofrivers<-split(shapeHid.df, shapeHid.df$id)

myMap3 <- ggplot() +
  lapply(listofrivers, function(x) geom_path(data=x, aes(x=long, y=lat), color="gray70", linetype=1)) +
  geom_map(data = world_map, map = world_map, aes(map_id = region),
           color = 'black', fill = NA, linetype=2) +
  theme(panel.border = element_rect(fill = NA, colour = "black"))+
  theme(axis.title=element_blank())+
  scale_y_continuous(limits=c(-15,6),expand=c(0,0))+
  scale_x_continuous(limits=c(-76,-55),expand=c(0,0))
myMap3

world\u map我将执行以下操作:

library(sf)
library(ggplot2)

world_map <- map_data('world')
sdf <- read_sf("PrincipaisRiosDoBrasil.shp")

myMap3 <- ggplot() +
    geom_map(data = world_map, map = world_map, aes(map_id = region), color = 'black', fill = NA, linetype=2) +
    geom_sf(data = sdf)+
    theme(panel.border = element_rect(fill = NA, colour = "black"))+
    theme(axis.title=element_blank())+
    scale_y_continuous(limits=c(-15,6),expand=c(0,0))+
    scale_x_continuous(limits=c(-76,-55),expand=c(0,0))
myMap3
库(sf)
图书馆(GG2)

世界地图我会做以下事情:

library(sf)
library(ggplot2)

world_map <- map_data('world')
sdf <- read_sf("PrincipaisRiosDoBrasil.shp")

myMap3 <- ggplot() +
    geom_map(data = world_map, map = world_map, aes(map_id = region), color = 'black', fill = NA, linetype=2) +
    geom_sf(data = sdf)+
    theme(panel.border = element_rect(fill = NA, colour = "black"))+
    theme(axis.title=element_blank())+
    scale_y_continuous(limits=c(-15,6),expand=c(0,0))+
    scale_x_continuous(limits=c(-76,-55),expand=c(0,0))
myMap3
库(sf)
图书馆(GG2)

世界地图如果你经常使用形状文件,几何路径和几何多边形会提供你所需要的一切。在最新版本中,ggplot直接处理空间对象,因此不需要使用强化和合并(这可能是代码中花费更多时间的步骤)。以下是使用as底图的示例:

shapeUFs <- readOGR('.', 'BRUFE250GC_SIR')
shapeHid <- readOGR('.', 'PrincipaisRiosDoBrasil') 

ggplot(shapeUFs, aes(long, lat, group = group)) +
  geom_polygon(fill = 'gray90', color = 'black') +
  geom_path(data = shapeHid, color = 'steelblue2') +
  coord_map() + theme_void()

shapeUFs如果你经常使用shapefile,geom_路径和geom_多边形会提供你所需要的一切。在最新版本中,ggplot直接处理空间对象,因此不需要使用强化和合并(这可能是代码中花费更多时间的步骤)。以下是使用as底图的示例:

shapeUFs <- readOGR('.', 'BRUFE250GC_SIR')
shapeHid <- readOGR('.', 'PrincipaisRiosDoBrasil') 

ggplot(shapeUFs, aes(long, lat, group = group)) +
  geom_polygon(fill = 'gray90', color = 'black') +
  geom_path(data = shapeHid, color = 'steelblue2') +
  coord_map() + theme_void()

shapeUFs当我尝试添加一些几何点时,我必须添加一个名为groups的列,这是因为空间点不使用group,我在全局美学中定义了它以简化代码。尝试从第一行中删除
group=group
,并将
aes(group=group)
添加到几何多边形和几何路径中。或将aes(group=NULL)
添加到geom\u点。发布一个点数据的示例,以便我可以更新答案。当我尝试添加一些几何点时,我必须添加一个名为groups的列,这是因为空间点不使用group,我在全局美学中定义了它以简化代码。尝试从第一行中删除
group=group
,并将
aes(group=group)
添加到几何多边形和几何路径中。或将aes(group=NULL)
添加到geom\u点。张贴一个你的分数数据的例子,这样我可以更新答案。