繁体   English   中英

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

[英]R - recenter SpatialPolygonsDataFrame from Atlantic to Pacific view but keep data

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

我首先尝试使用rotate()在大西洋视图上重新定位光栅砖,但这非常耗时。

然后我从sp package 中找到了 centerer recenter() 这行得通; 新的秘鲁 shapefile 位于太平洋视图中。 然而,它只是一个 SpatialPolygons——它丢失了我在秘鲁的 SpatialPolygonsDataFrame 中的数据。 有什么方法可以保留数据,或者其他类似的 function 是否保留数据?

如果您想留在sp并使用recenter() ,我认为唯一的方法是将 data.frame 复制回 output SpatialPolygons。 就像是:

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

但我也建议尽可能使用较新的sf package。 如果您已经有一个 SpatialPolygonsDataFrame object,很容易转换为简单的特征 object 与sfobject <- st_as_sf(spdataframe) ,然后使用st_shift_longitude 如果需要转换回sp对象,可以使用spdataframe <- as(sfobject, "Spatial")

您可以考虑使用sf package,它将对象作为空间数据框(如 geopandas)处理。 function st_shift_longitude() recenter() sp. 中的 centerer()。

文档 - https://www.rdocumentation.org/packages/sf/versions/0.9-2/topics/st_shift_longitude

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM