使用R将四次核热图转换为大多边形
我有欧胡岛海岸附近的点数据。其他人使用这些相同的数据创建了一个大的polygon. 我相信他首先创建了heatmap一个quartic (biweight) kernel,每个点周围半径为 1 公里,像素大小可能为 1 平方公里。他引用了 Silverman(1986 年,第 76 页,方程 4.5,我认为它指的是“统计和数据分析的密度估计”一书)。我相信他将他heatmap的polygon. 我正在尝试polygon使用R和用假数据来近似他Windows 10。我可以使用包中的kde函数来接近ks(见下图)。但该软件包仅包含Gaussian kernels. 是否可以polygon使用 a创建类似的quartic kernel?
另一个分析实际上创建了两个版本的polygon. 一个边界被标记为“> 1 每公里密度”;另一个边界被标记为“> 0.5 每公里密度”。我不知道他是否使用R,QGIS,ArcGIS或别的东西。我无法创建一个大polygon的QGIS,也没有ArcGIS.
感谢您对如何创建任何建议,polygon类似所示的一个,但使用quartic kernel的替代Gaussian kernel。如果我能提供更多信息,请告诉我。
这是我的虚假数据的链接CSV和QGIS格式:在此处输入链接描述 (编辑:希望现在任何人都可以访问虚假数据。我以前可以,但我想其他人不能。)
1. fake_points_oahu.csv
a. raw data
2. fake_points_oahu_utm (.shp, .dbf, .prj, .shx)
a. vector point layer
3. fake_points_oahu_June11_2021.png
a. the figure shown above
这是我的R代码:
setwd('C:/Users/mark_/Documents/ctmm/density_in_R/density_files_for_StackOverflow/')
library(sf) # to read shapefile
library(ks) # to use kde function
my.data <- read.csv("fake_points_oahu.csv", header = TRUE, stringsAsFactors = FALSE, na.strings = "NA")
head(my.data)
# Import shapefile
st_layers("fake_points_oahu_utm.shp")
points_utm <- st_read(dsn = "fake_points_oahu_utm.shp", layer = 'fake_points_oahu_utm')
st_crs(points_utm)
plot(points_utm)
my.matrix <- as.matrix(my.data[,2:3])
head(my.matrix)
# This uses the Guassian kernel
my_gps_hpi <- Hpi(x = my.matrix, pilot = "samse", pre = "scale")
my.fhat <- kde(x = my.matrix, compute.cont = TRUE, h = my_gps_hpi,
xmin = c(min(my.data$longitude), min(my.data$latitude)),
xmax = c(max(my.data$longitude), max(my.data$latitude)),
bgridsize = c(500, 500))
my.contours <- c(96.5)
contourLevels(my.fhat, cont = my.contours)
contourSizes(my.fhat, cont = my.contours, approx = TRUE)
plot(my.data$longitude, my.data$latitude)
plot(my.fhat, lwd = 3, display = "filled.contour", cont = my.contours, add = TRUE)
png(file="fake_points_oahu_June11_2021.png")
plot(my.data$longitude, my.data$latitude)
plot(my.fhat, lwd = 3, display = "filled.contour", cont = my.contours, add = TRUE)
dev.off()