R中具有加权和边界校正的内核密度估计器?

时间:2018-09-07 20:27:40

标签: r gis geospatial kernel-density

我正尝试使用从具有分数像元值的栅格得出的加权点数据在R中创建内核密度栅格(栅格代表由农业而不是森林,土地覆盖的像素份额,然后转换为点数据集以用作内核输入)。

我还希望使用我的数据集所来自的城市的多边形shapefile对该数据进行边界校正。

我目前正在使用“ splancs” 程序包中的 spkernel2d 函数,该函数通过边界校正来计算内核估计,但是它并不将权重作为输入,意思是说,无论其价值(代表农业面积的百分比),每个点都被视为相同。

是否有既可以将权重作为输入又可以进行非矩形边界校正的内核软件包?我已经尝试过“ ks”软件包中的kde.boundary函数,但似乎只能适用于矩形边界。

我当前使用spkernel2d函数的代码(无权重)如下:

test_agro_pts_300 <- rasterToPoints(rast_agro_300m, fun=NULL, spatial=TRUE) #Converting my input raster to points data

poly <- slot(testmuni, "polygons")[[1]]
poly1 <- slot(poly, "Polygons")[[1]]
coords <- slot(poly1, "coords") #Extracting boundary coordinates from municipality shapefile (polygon)

grd1 <- GridTopology(bbox(rast_agro_300m)[,1] + res(rast_agro_300m)/2, res(rast_agro_300m), dim(rast_agro_300m)[2:1]) #Creating blank output grid for kernel results

b <- coordinates(test_agro_pts_300)
colnames(b)<-c("x","y") #Extracting point coordinates

#Kernels
Sys.time()
k_1500m <- spkernel2d(b, coords, h0=1500, grd1) #Estimating Kernels with 1.5km bandwidth - this function uses quantic kernel function
Sys.time()
df <- data.frame(k_1500m =k_1500m)
kernel1500 <- SpatialGridDataFrame(grd1, data=df)
kernel1500n <- raster(kernel1500) #Converting gridded output kernel estimates to raster
crs(kernel1500n) <- CRS_RC #adding back CRS projection
Sys.time()

plot(kernel1500n) #Visualizing results

0 个答案:

没有答案