我有一些道路'作为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)
转换后,SRID为空,proj4string(可能)看起来不正确。为什么是这样?我能解决吗?
Simple feature collection with 17360 features and 4 fields
geometry type: LINESTRING
dimension: XY
bbox: xmin: 490176.4 ymin: 148639.1 xmax: 567680.9 ymax: 212821
epsg (SRID): NA
proj4string: +proj=tmerc +lat_0=49 +lon_0=-2 +k=0.9996012717 +x_0=400000 +y_0=-100000 +ellps=airy +towgs84=446.448,-125.157,542.06,0.1502,0.247,0.8421,-20.4894 +units=m +no_defs
First 10 features:
osm_id lanes type width geometry
73 73 2 primary 6.3 LINESTRING (526256 191950, ...
74 74 2 primary 6.3 LINESTRING (525236.4 190755...
75 75 2 primary 6.3 LINESTRING (526324.4 192518...
79 79 2 primary 6.3 LINESTRING (524912.4 190235...
482 482 2 primary 6.3 LINESTRING (527283.9 198571...
546 546 2 primary 6.3 LINESTRING (506089.1 205091...
1210 1210 2 primary 6.3 LINESTRING (526023.9 195013...
1213 1213 2 primary 6.3 LINESTRING (524861.1 196243...
1214 1214 2 primary 6.3 LINESTRING (524482.3 196798...
1698 1698 2 primary 6.3 LINESTRING (527335.3 195524...
我想我需要解决这个问题,因为我想把st_transform()我的数据转换为与栅格相同的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
我认为我可以改变我的道路&#39;通过做这样的事情来获得正确的CRS?但它不起作用。我明白了......
roads <- st_transform(roads, crs(raster))
'Error: cannot create a crs from an object of class CRS
帮助表示感谢。谢谢。
答案 0 :(得分:6)
您必须调整 st_transform 这样的参数:
roads <- st_transform(roads, crs = 4326)
OR
roads <- st_transform(roads, crs = proj4string(raster))
或者@TimSalabim说:
roads <- st_transform(roads, crs = crs(raster)@projargs)
或者@ R&#39; n&#39; E指出:
roads <- st_transform(roads, crs = st_crs(raster))