更改SF对象的CRS

更改SF对象的CRS,r,spatial,sp,sf,R,Spatial,Sp,Sf,我将一些“道路”作为sp对象: class : SpatialLinesDataFrame features : 17360 extent : 490176.4, 567680.9, 148639.1, 212821 (xmin, xmax, ymin, ymax) coord. ref. : +init=epsg:27700 +proj=tmerc +lat_0=49 +lon_0=-2 +k=0.9996012717 +x_0=400000 +y_0

我将一些“道路”作为sp对象:

class       : SpatialLinesDataFrame 
features    : 17360 
extent      : 490176.4, 567680.9, 148639.1, 212821  (xmin, xmax, ymin, ymax)
coord. ref. : +init=epsg:27700 +proj=tmerc +lat_0=49 +lon_0=-2     +k=0.9996012717 +x_0=400000 +y_0=-100000 +datum=OSGB36 +units=m +no_defs     +ellps=airy +towgs84=446.448,-125.157,542.060,0.1502,0.2470,0.8421,-20.4894 
variables   : 4
names       :    osm_id, lanes,     type, width 
min values  :        73,     2, motorway,   6.3 
max values  : 587969162,     6,    trunk,  18.9
我将它们转换为sf对象,如下所示:

roads                   <- st_as_sf(roads, crs = 27700)
我想我需要解决这个问题,因为我想将我的数据转换成与光栅相同的CRS,我必须提取一些值

crs(raster)
CRS arguments:
 +proj=laea +lat_0=52 +lon_0=10 +x_0=4321000 +y_0=3210000 +ellps=GRS80 +units=m +no_defs
我想我可以通过这样做将我的“道路”转换为正确的CRS?但它不起作用。我得到

roads <- st_transform(roads, crs(raster))
'Error: cannot create a crs from an object of class CRS

roads您必须调整st_变换这样的参数:

roads <- st_transform(roads, crs = 4326)

roads
raster
使用S4类,因此需要调用适当的插槽来获取
prj4string
,而
sf
可以理解<代码>道路似乎需要稍微更新代码。使用来自sf_0.6-3的
st_crs()
道路
roads <- st_transform(roads, crs = 4326)
roads <- st_transform(roads, crs = proj4string(raster))
roads <- st_transform(roads, crs = crs(raster)@projargs)
roads <- st_transform(roads, crs = st_crs(raster))