Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 将sp空间数据块合并为单个块_R_Sp - Fatal编程技术网

R 将sp空间数据块合并为单个块

R 将sp空间数据块合并为单个块,r,sp,R,Sp,我有8个形状文件,每个文件包含许多河流集水区的轮廓。我使用了rgdal、rgeos和sp的组合来读取这些对象,并形成了8个空间多边形数据框对象的列表。我使用的代码如下: unit.num <- c(13,18,19,29,41,75,79,80) GetCatchmentShapes <- function(x) { file.name <- paste("GFMUnit",x,"_GFES_Watersheds_WGS84.shp",sep="") con = fil

我有8个形状文件,每个文件包含许多河流集水区的轮廓。我使用了rgdal、rgeos和sp的组合来读取这些对象,并形成了8个空间多边形数据框对象的列表。我使用的代码如下:

unit.num <- c(13,18,19,29,41,75,79,80)
GetCatchmentShapes <- function(x) {
  file.name <- paste("GFMUnit",x,"_GFES_Watersheds_WGS84.shp",sep="")
  con = file.path(project.folder,"RawData","Watersheds","GFES Watersheds",file.name)
  catchment.list <- readOGR(con,ogrListLayers(con)) 
}
all.catchments <- sapply(unit.num, GetCatchmentShapes)

unit.num这有点混乱,可能有更好的方法来创建唯一的行ID,但还是这样:

假设您的
空间多边形数据帧列表
称为
spdf_列表
,并且所有元素都具有相同的字段集:

spdf_list <- 
  mapply(spChFIDs, spdf_list, 
         split(as.character(seq_len(sum(sapply(spdf_list, length)))), 
               unlist(mapply(rep, seq_along(spdf_list), 
                             each=sapply(spdf_list, length)))))

single <- do.call(rbind, spdf_list)

spdf_list这有点混乱,可能有更好的方法来创建唯一的行ID,但还是这样:

假设您的
空间多边形数据帧列表
称为
spdf_列表
,并且所有元素都具有相同的字段集:

spdf_list <- 
  mapply(spChFIDs, spdf_list, 
         split(as.character(seq_len(sum(sapply(spdf_list, length)))), 
               unlist(mapply(rep, seq_along(spdf_list), 
                             each=sapply(spdf_list, length)))))

single <- do.call(rbind, spdf_list)

spdf\u list您可以使用package
sp
中的
spChFIDs(…)
函数将多边形ID更改为唯一值,然后使用
rbind(…)
组合空间多边形数据框对象

下面是一个使用法国、意大利和德国的shapefile的示例

## example dataset; shapfiles for France, Italy, Germany
## you have this already...
library(raster)
FR <- getData("GADM",country="FRA",level=1)
IT <- getData("GADM",country="ITA",level=1)
GR <- getData("GADM",country="DEU",level=1)
spList <- list(FR,IT,GR)    # list of country shapefiles

# you start here...
library(sp)   # loaded with `rgdal`
set.IDS <- function(sp,i) spChFIDs(sp,paste(i,rownames(sp@data),sep="."))
result  <- do.call(rbind,mapply(set.IDS,spList,seq_along(spList)))
plot(result)
##示例数据集;法国、意大利、德国的档案
##你已经有这个了。。。
图书馆(光栅)

FR您可以使用软件包
sp
中的
spChFIDs(…)
函数将多边形ID更改为唯一值,然后使用
rbind(…)
组合空间多边形数据框对象

下面是一个使用法国、意大利和德国的shapefile的示例

## example dataset; shapfiles for France, Italy, Germany
## you have this already...
library(raster)
FR <- getData("GADM",country="FRA",level=1)
IT <- getData("GADM",country="ITA",level=1)
GR <- getData("GADM",country="DEU",level=1)
spList <- list(FR,IT,GR)    # list of country shapefiles

# you start here...
library(sp)   # loaded with `rgdal`
set.IDS <- function(sp,i) spChFIDs(sp,paste(i,rownames(sp@data),sep="."))
result  <- do.call(rbind,mapply(set.IDS,spList,seq_along(spList)))
plot(result)
##示例数据集;法国、意大利、德国的档案
##你已经有这个了。。。
图书馆(光栅)

它们都有相同的字段集吗?我很确定它们都有。但它们没有唯一的标识符。标签字段仅为每个列表条目中集水区数量的1。它们是否都有相同的字段集?我很确定它们都有。但它们没有唯一的标识符。标签字段仅为每个列表条目中集水区数量的1。是的,这种ID创建方法比我的方法更合理!谢谢,这已经奏效了。不相关,但可能有用,我必须重命名其中一个区块的字段,我假设GIS生成过程中不一致地将一个字段大写-始终值得检查。一旦解决了这个问题,jlhoward的方法就非常有效。是的,这个ID创建方法比我的方法更明智!谢谢,这已经奏效了。不相关,但可能有用,我必须重命名其中一个区块的字段,我假设GIS生成过程中不一致地将一个字段大写-始终值得检查。一旦这个问题得到解决,霍华德的方法就非常有效。