【问题标题】:R - Convert SpatialLines to a unique SpatialPolygonR - 将 SpatialLines 转换为唯一的 SpatialPolygon
【发布时间】:2017-11-14 19:02:39
【问题描述】:

我有一个 SpatialLines 对象,我想将其转换为 SpatialPolygons 对象。更准确地说,我的目标是将 SpatiaLines(以下示例中的 DataFrame)转换为单个多边形。

我找到的唯一解决方案是使用 PBSmapping 包。但我对这个包的PolySet 概念不太满意,结果并不完全令人满意。

所以我正在寻找一种使用“经典”包(sprgeosrgdal)及其类的方法。

这是我的代码:

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“部门”文件在这里: https://drive.google.com/file/d/1wksMnkufQPdOfSbhWoZbPKMqlcLcll_j

结果(尤其是我不明白“两个”多边形的叠加):

【问题讨论】:

  • 您的代码创建了 81 个多边形。这些多边形在某种程度上是人造的,因为它们代表了法国边界的一部分并且毫无意义。你的最终目标是什么?您是否渴望将 SpatialLinesDataframe 转换为一个独特的多边形?
  • 是的,我的最终目标是将 SpatiaLines(在我的示例中为 DataFrame)转换为单个多边形。我已经修改了标题并相应地完成了我的帖子。

标签: r line polygon spatial


【解决方案1】:

我在 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

【讨论】:

  • 好的,显而易见的方法...谢谢。所以我将删除谁变得无关紧要的问题。根据我自己的理解,您是如何“知道”如果您读取 SPH 文件的另一层,您将导入一个 SP 对象而不是 SL 对象?
猜你喜欢
  • 2019-05-06
  • 2014-11-21
  • 2016-08-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多