R:从密度()获取数字输出

R: get number output from density()

我将 R 用于带有 spatstat 和相关包的 GIS 应用程序。我想生成一个核密度栅格,我已经使用以下方法成功地做到了:

spatialgrid <- as(density(mypattern,5000,eps=50),'SpatialGridDataFrame')
rastergrid <- raster(spatialgrid)
writeRaster(rastergrid, filename=‘/file.tif’,format=‘GTiff’)

但是,当我将生成的栅格加载到 QGIS 时,我遇到了问题,因为单元格值是用科学记数法而不是简单的数字编写的。

基于this question,我尝试了format(density(),scientific=FALSE),但这导致了CPU的大幅飙升,并且花了很长时间才达到运行,以至于我最终杀死了过程。

我想找到一种方法让 density() 函数输出整数值。或者,也许有一种方法可以将数据帧转换为整数数据类型?

我在这里看到两个选项。

  1. 您可以使用 options(scipen=99) 删除科学记数法,正如@dash2 所建议的那样。
  2. 将您的值乘以一个因数,例如 1000。尝试一些操作,直到您的值不再采用科学记数法。优点是您的栅格不会像选项 1 那样有那么多前导零,并且占用更少的硬盘 space,但缺点是您必须将您的值乘以 QGIS 中的那个因子。

"Scientific notation"与此无关。那是用于文本表示,但是使用 writeRaster 您可以写入数字格式。它们只是实数。

我认为你可以简化:

d <- density(mypattern,5000,eps=50)
r <- raster(d)

问题可能是密度太低了。如果你想要更大的数字(如 jgadoury 所建议的)

r <- r * 1000000

可能四舍五入

r <- round(r)

然后

writeRaster(r, 'file.tif')