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:从密度()获取数字输出的主要内容,如果未能解决你的问题,请参考以下文章