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

Posted

技术标签:

【中文标题】R:从密度()获取数字输出【英文标题】:R: get number output from density() 【发布时间】:2016-08-09 15:13:11 【问题描述】:

我将 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() 函数输出整数值。或者,也许有一种方法可以将数据帧转换为整数数据类型?

【问题讨论】:

两种可能性:使用例如更改scipen 选项options(scipen=3);使用round 而不是format。我不知道他们是否会更快,但值得一试。 【参考方案1】:

我在这里看到两个选项。

    您可以按照@dash2 的建议使用options(scipen=99) 删除科学记数法。 将您的值乘以一个因子,例如 1000。尝试一些方法,直到您的值不再采用科学计数法。优点是您的栅格没有选项 1 那么多的前导零,并且占用的硬盘空间更少,但缺点是您必须在 QGIS 中将值乘以该因子。

【讨论】:

【参考方案2】:

“科学记数法”与此无关。那是用于文本表示,但是使用 writeRaster 您可以写入数字格式。它们只是实数。

我认为你可以简化:

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

问题可能是密度非常低。如果您想要更大的数字(如 jgadoury 建议的那样)

r <- r * 1000000

可能是圆角

r <- round(r)

然后

writeRaster(r, 'file.tif')

【讨论】:

以上是关于R:从密度()获取数字输出的主要内容,如果未能解决你的问题,请参考以下文章

洛谷 P1835 素数密度_NOI导刊2011提高(04)题解

P1730 最小密度路径 floyed

R语言逐步多元回归模型分析长鼻鱼密度影响因素|附代码数据

程序从命令行接收多个数字,求和之后输出结果。

程序从命令行接收多个数字,求和之后输出结果

Hard Life UVA - 1389(最大密度子图 输出点集)