R - 将 SpatialLines 转换为唯一的 SpatialPolygon
R - Convert SpatialLines to a unique SpatialPolygon
我有一个 SpatialLines 对象,我想将其转换为 SpatialPolygons 对象。更准确地说,我的目标是将 SpatiaLines(以下示例中的 DataFrame)转换为单个多边形。
我找到的唯一解决方案是 PBSmapping
包。但我对这个包的 PolySet
概念不太满意,结果也不完全令人满意。
所以我正在寻找一种使用 'classic' 包(sp
、rgeos
、rgdal
)及其 类.[=18 的方法=]
这是我的代码:
library(sp) ; library(rgdal)
library(rgeos) ; library(maptools)
my_directory <- "" # fill with your own directory
# Load the data
my_map <- readOGR(dsn = paste0(my_directory, "Departements"),
layer = "LIMITE_DEPARTEMENT")
borders_map <- my_map [my_map $NATURE %in% c("Fronti\xe8re internationale",
"Limite c\xf4ti\xe8re"), ]
class(borders_map) # a SpatialLinesDataFrame in this example
# Convert SpatialLinesDataFrame into SpatialPolygons
library(PBSmapping)
var_temp <- SpatialLines2PolySet(borders_map)
sp_try <- PolySet2SpatialPolygons(var_temp)
proj4string(sp_try) <- proj4string(borders_map)
class(sp_try)
plot(sp_try)
文件 SPH "Departements" 在这里:
https://drive.google.com/file/d/1wksMnkufQPdOfSbhWoZbPKMqlcLcll_j
结果(尤其是我不明白 "two" 多边形的叠加):
我在 DEPARTMENT 数据集中读取,它是 SpatialPolygon 对象。之后,我将所有县合并为一个独特的多边形。
my_map <- readOGR(dsn = paste0(my_directory, "Departements"),
layer = "DEPARTEMENT")
border <- unionSpatialPolygons(my_map, IDs=rep(1, 96))
plot(border)
str(border,2)
Formal class 'SpatialPolygons' [package "sp"] with 4 slots
..@ polygons :List of 1
..@ plotOrder : int 1
..@ bbox : num [1:2, 1:2] 99226 6049647 1242375 7110524
.. ..- attr(*, "dimnames")=List of 2
..@ proj4string:Formal class 'CRS' [package "sp"] with 1 slot
我有一个 SpatialLines 对象,我想将其转换为 SpatialPolygons 对象。更准确地说,我的目标是将 SpatiaLines(以下示例中的 DataFrame)转换为单个多边形。
我找到的唯一解决方案是 PBSmapping
包。但我对这个包的 PolySet
概念不太满意,结果也不完全令人满意。
所以我正在寻找一种使用 'classic' 包(sp
、rgeos
、rgdal
)及其 类.[=18 的方法=]
这是我的代码:
library(sp) ; library(rgdal)
library(rgeos) ; library(maptools)
my_directory <- "" # fill with your own directory
# Load the data
my_map <- readOGR(dsn = paste0(my_directory, "Departements"),
layer = "LIMITE_DEPARTEMENT")
borders_map <- my_map [my_map $NATURE %in% c("Fronti\xe8re internationale",
"Limite c\xf4ti\xe8re"), ]
class(borders_map) # a SpatialLinesDataFrame in this example
# Convert SpatialLinesDataFrame into SpatialPolygons
library(PBSmapping)
var_temp <- SpatialLines2PolySet(borders_map)
sp_try <- PolySet2SpatialPolygons(var_temp)
proj4string(sp_try) <- proj4string(borders_map)
class(sp_try)
plot(sp_try)
文件 SPH "Departements" 在这里: https://drive.google.com/file/d/1wksMnkufQPdOfSbhWoZbPKMqlcLcll_j
结果(尤其是我不明白 "two" 多边形的叠加):
我在 DEPARTMENT 数据集中读取,它是 SpatialPolygon 对象。之后,我将所有县合并为一个独特的多边形。
my_map <- readOGR(dsn = paste0(my_directory, "Departements"),
layer = "DEPARTEMENT")
border <- unionSpatialPolygons(my_map, IDs=rep(1, 96))
plot(border)
str(border,2)
Formal class 'SpatialPolygons' [package "sp"] with 4 slots
..@ polygons :List of 1
..@ plotOrder : int 1
..@ bbox : num [1:2, 1:2] 99226 6049647 1242375 7110524
.. ..- attr(*, "dimnames")=List of 2
..@ proj4string:Formal class 'CRS' [package "sp"] with 1 slot