DPe*_*Pek 0 gis debugging r coordinate-systems r-sf
尝试通过这篇文章将数据框转换为 sf 对象(如何将数据框转换为空间坐标)。但是我不断收到以下错误..
Error in `[.default`(x, coords) :  only 0's may be mixed with negative subscripts
我尝试根据这篇文章(R 调试:“只有 0 可能与负下标混合”)来解决它,认为因为我的坐标是全局的,所以 R 不喜欢值的范围。然而,我将其子集为西北半球,并收到了相同的错误。下面是我正在使用的代码
dat.sf <- st_as_sf(x=dat2,
                   coords = c(dat2$centroid_lon, dat2$centroid_lat),
                   crs= "+proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0")
Run Code Online (Sandbox Code Playgroud)
其中 dat2 只是与该纬度和经度相关的风暴事件的坐标和唯一 ID(组 ID)。
更新:我尝试了其他一些事情,例如:
coordinates <- as.data.frame(cbind(dat2$centroid_lon, dat2$centroid_lat))
dat.sf <- st_as_sf(x=dat2,
                   coords = coordinates,
                   crs= "+proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0")
Run Code Online (Sandbox Code Playgroud)
并收到了这个Error in `[.default`(x, coords) : invalid subscript type 'list'
和这个....
coordinates <- cbind(dat2$centroid_lon, dat2$centroid_lat)
dat.sf <- st_as_sf(x=dat2,
                   coords = coordinates,
                   crs= "+proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0")
Run Code Online (Sandbox Code Playgroud)
并收到了这个Error in as.matrix(x)[i] : subscript out of bounds。Traceback() 告诉我这绝对是我的坐标的问题。
如果您查看文档,st_as_sf您会发现该coords参数应该是:
coords:如果是点数据:保存坐标的数字列的名称或编号
因此,您需要传递列的名称,但要传递列本身。您还将看到这就是coords您链接的答案中的使用方式。因此,如果您这样做:
dat.sf <- st_as_sf(x=dat2,
                   coords = c("centroid_lon", "centroid_lat"),
                   crs= "+proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0")
Run Code Online (Sandbox Code Playgroud)
您应该得到正确的结果。
|   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           8628 次  |  
        
|   最近记录:  |