R - 将SpatialPolygonsDataFrame从大西洋视图重新定位到太平洋视图,但保留数据。

问题描述 投票:0回答:1

我需要将西半球的秘鲁SpatialPolygonsDataFrame经度(-81.3307,-68.65311)覆盖在一个大的气候数据RasterBrick(dim = 721 1440 14610)经度(-0.125,359.875)上。当然这是不可能的,因为shapefile是大西洋视图,而rasterbrick是太平洋视图。

我首先尝试使用 rotate() 来重新定位栅格砖在大西洋视图上的位置,但这是不可能耗费时间的。

然后我发现 recenter() 来自 sp 包。这样做是可行的;新的秘鲁形状文件是太平洋视图。然而,这只是一个SpatialPolygons -- 它丢失了我在Peru的SpatialPolygonsDataFrame中的数据。有什么办法可以保留这些数据,或者有其他类似的功能可以保留这些数据吗?

r sp
1个回答
2
投票

如果你想留在 sp 并使用 recenter()我认为唯一的方法是将data.frame复制回输出的SpatialPolygons。像这样的。

peru_pac <- recenter(peru_atl)
peru_pac_spdf <- SpatialPointsDataFrame(peru_pac, peru_atl@data)

但我也建议使用较新的 sf 包来代替。如果你已经有一个 SpatialPolygonsDataFrame 对象,那么很容易通过使用 sfobject <- st_as_sf(spdataframe),然后用 st_shift_longitude. 如果你需要转换回 sp 对象,你可以用 spdataframe <- as(sfobject, "Spatial").


1
投票

您可以考虑使用 sf 包,它将对象处理为空间数据框架(如geopandas)。函数 st_shift_longitude() 等于 recenter() 在sp.

文件 - https:/www.rdocumentation.orgpackagessfversions0.9-2topicsst_shift_longitude

© www.soinside.com 2019 - 2024. All rights reserved.