Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/75.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中扩展形状文件的(缓冲区)边界_R_Raster_Sf_Buffer Geometry_Rgeo Shapefile - Fatal编程技术网

在R中扩展形状文件的(缓冲区)边界

在R中扩展形状文件的(缓冲区)边界,r,raster,sf,buffer-geometry,rgeo-shapefile,R,Raster,Sf,Buffer Geometry,Rgeo Shapefile,我需要将场的边界(仅边界)延长x米。我试着使用rgeos R软件包中的gBuffer——转换的输出只给出了场的边界,场中的剩余多边形丢失了数据 如何使用gBuffer/任何其他方法将空间多边形对象(形状文件)的边界仅扩展10米,并保持所有内容(多边形和数据内部)完整 试码- field <- raster::shapefile("test.shp") class(field) plot(field) View(field@data) field <- sp::

我需要将场的边界(仅边界)延长x米。我试着使用rgeos R软件包中的gBuffer——转换的输出只给出了场的边界,场中的剩余多边形丢失了数据

如何使用gBuffer/任何其他方法将空间多边形对象(形状文件)的边界仅扩展10米,并保持所有内容(多边形和数据内部)完整

试码-

field <- raster::shapefile("test.shp")
class(field)
plot(field)
View(field@data)

field  <- sp::spTransform(field,CRS("+init=epsg:32632"))
plot(field)

field10m  <- rgeos::gBuffer(field , width = 10)
plot(field10m)

<>代码>字段> p>我建议您考虑一个基于<代码> {SF}包的工作流;它比sp和rgeos的代码更清晰(它将使用相同的几何引擎,但将粗糙的部分隐藏在引擎盖下)

代码保留了shapefile的所有数据特征(实际上,只有一个——一个名为Rx的列)

请注意,由于黄色元素/Rx=120/由多个多边形组成,因此每个多边形都被缓冲,从而产生重叠特征。这是预期的结果

这应该是不希望的行为,您可以考虑使用<代码> dPLYR::GROPYBY(RX)后面跟着“代码> DPLYR::SCOMPISIONE())/代码>在应用<代码> Sf::STYBuffER()/<代码>调用.< /P>之前消除内部边界线。

library(sf)
library(dplyr)
library(mapview) # needed only for the final overview
library(leafsync) # dtto.

test_map <- sf::st_read("./Map/test.shp")

# find an appropriate projected metric CRS
crsuggest::suggest_crs(test_map, type = "projected")

result <- test_map %>% 
  sf::st_transform(5683) %>%  # transform to a metric CRS
  sf::st_buffer(10) # buffer by 10 meters

# a visual check / note how the polygons are overlaid
leafsync::latticeview(mapview::mapview(test_map),
                      mapview::mapview(result))
库(sf)
图书馆(dplyr)
库(mapview)#仅用于最终概览
库(leafsync)#dto。
测试映射%#转换为度量CRS
sf::st#u缓冲区(10)#10米缓冲区
#目视检查/注意多边形的重叠方式
leafsync::latticeview(地图视图::地图视图(测试地图),
mapview::mapview(结果))

感谢您提出的“sf”方式,当然会相应地进行调整,在该解决方案中,内线(内部多边形)也会延长10米,预期结果是仅将场的外部边界延长10米,其他特征与初始值相同state@string啊,我现在明白了!对不起,太慢了。。。在本例中,我建议使用中描述的方法-它使用法国诺曼底部门的海上边界作为示例,我相信这可能对您的用例有所帮助