R-spatstat im方形像素? (用于导出到Arc栅格)

时间:2015-04-03 15:46:22

标签: r export raster spatstat

我在将spatstat中的密度im导出为ArcGIS可读的文件格式时遇到问题。这是我的代码

library(raster)
library(spatstat)
library(maptools)
library(sp)
# make a spatstat ppp with California boundary as window
ca <- readShapePoly("ca.shp")
o3 <- readShapePoints("o3.shp")
o3 <- as(o3, "SpatialPoints")
o3p <- as.ppp(o3)
o3p$window <- as.owin(ca)
# calculate density
d.o3p <- density.ppp(o3p)

一切正常。但是当我尝试导出到ascii光栅文件

writeRaster(raster(d.o3p), filename="grid.asc", format="ascii", NAflag=-9999)

我遇到了这个问题

Error in .startAsciiWriting(x, filename, ...) : 
x has unequal horizontal and vertical resolutions. Such data cannot be  
stored in arc-ascii format

我使用的数据是针对加利福尼亚州的,因此宽高比不是1.所以...我如何使密度im具有正方形像素?

1 个答案:

答案 0 :(得分:0)

您是否必须使用ArcGIS的ascii格式?使用任意窗口获得完美的正方形像素可能很困难。像素分辨率由参数eps或参数dimyx(不是两者)控制,它们被发送到as.mask,您可以在该帮助文件中阅读更多内容。基本上eps是像素大小,因此最简单的方法是将其设置为给定值。但是,如果窗口大小与窗口在一个方向上不完全匹配,则像素可能略微不方形。例如。这非常有效:

X <- runifpoint(100, win = owin(c(0,9),c(0,10)))
d <- density.ppp(X, eps = 1)

但这会产生非方形像素:

d2 <- density.ppp(X, eps = 2)