CRS一致时栅格化sf点后栅格与点不匹配问题排查
栅格化SF点数据时的匹配偏差问题
我尝试栅格化sf点数据,尽管坐标参考系统(CRS)完全一致,但输出栅格与点数据存在匹配偏差。将栅格转换为多边形后,其与sf点数据完全对齐,却无法查明栅格不匹配的原因。
初始测试代码
library(spData) library(sf) library(raster) library(mapview) ## 导入数据 cycle_hire_osm = spData::cycle_hire_osm ## 投影转换为米制坐标系 cycle_hire_osm_projected = st_transform(cycle_hire_osm, crs = 27700) ## 创建栅格模板 raster_template <- raster(extent(cycle_hire_osm_projected), nrows = 10, ncols = 10, crs = 27700) ## 栅格化点数据 ch_raster1 = rasterize(cycle_hire_osm_projected, raster_template, field = 'capacity', fun = sum, crs = 27700) ## 将栅格转换为多边形 ch_poly <- rasterToPolygons(ch_raster1)
绘图后发现部分有值的栅格单元格内并无点数据:
## 地图可视化 mapview(ch_poly)+cycle_hire_osm_projected+ch_raster1
补充测试示例(需安装mapview和leaflet开发版以绘制SpatRasts)
library(spData) library(sf) library(terra) library(dplyr) # 移除NA值 dat <- spData::cycle_hire_osm %>% filter(!is.na(capacity)) v <- vect(dat) r <- rast(v, nrows=10, ncols=10) chr <- rasterize(v, r, field="capacity", fun=sum, na.rm=TRUE) ## 基础绘图 plot(chr) points(v, cex=.5) points(v[is.na(v$capacity)], cex=.5, col="red")

## mapview可视化 library(mapview) mapview(v)+chr

## leaflet可视化 library(leaflet) leaflet() |> addProviderTiles(providers$CartoDB.Positron) |> addCircles(data = v) |> addRasterImage(chr)

疑问:同一栅格在三种绘图方式中显示的有值单元格数量不同?
参数调整后的示例
添加project=FALSE参数后:
leaflet() |> addProviderTiles(providers$CartoDB.Positron) |> addCircles(data = v) |> addRasterImage(chr, project = FALSE)

内容的提问来源于stack exchange,提问作者Blaiso
相关产品推荐
相关产品推荐

