如何在SpatRaster贴图上绘制点(经度/纬度)?

n9vozmp4  于 2023-04-18  发布在  其他
关注(0)|答案(1)|浏览(119)

我有一个名为presence的数据框(ScientificName,Lon和Lat列)。

plot(region, col="grey", legend=F)
points(presence, pch="+", col="red")

我得到了一个区域的图,但是当我运行“点”线时,我什么也没有得到(没有错误,没有图,什么都没有)。
我期望在我的光栅Map上出现点。我确保我的Map和出现点在同一坐标参考中。
编辑:这是我的数据看起来的样子。我试着去掉“scientificName”列并运行前面的代码增益,但它仍然不起作用,我没有得到任何错误。

> show(region)
class       : SpatRaster 
dimensions  : 420, 900, 1  (nrow, ncol, nlyr)
resolution  : 0.008333333, 0.008333333  (x, y)
extent      : 8, 15.5, 54.5, 58  (xmin, xmax, ymin, ymax)
coord. ref. : lon/lat WGS 84 (EPSG:4326) 
source(s)   : memory
name        : C_01 
min value   :    0 
max value   :    0 

show(presence)
# A tibble: 1,529 × 2
   decimalLatitude decimalLongitude
             <dbl>            <dbl>
 1            55.5            10.7 
 2            55.7            12.2 
 3            55.7            11.7 
 4            55.4            10.5 
 5            56.1            10.5 
 6            55.8            11.4 
 7            55.4            11.2 
 8            56.1             9.57
 9            56.2            10.2 
10            55.9            10.1 
# ℹ 1,519 more rows
# ℹ Use `print(n = ...)` to see more rows
2nc8po8w

2nc8po8w1#

您必须将presence数据框转换为shapefile才能将其添加到栅格Map上。您没有提供任何数据。因此,我使用terra包中可用的数据集。

library(terra)

f <- system.file("ex/elev.tif", package="terra") 
region <- rast(f)
plot(region)

presence <- data.frame(decimalLongitude=c(6.0,6.1,6.2,6.2), 
                decimalLatitude = c(49.7,49.8,49.9,49.6))

#convert the data frame into shapefile 
m <- vect(presence, geom=c("decimalLongitude", "decimalLatitude"), crs="+proj=longlat +datum=WGS84")

plot(m, add = T)

相关问题