带有方形像素的 R-spatstat im? (用于导出到 Arc 光栅)
R-spatstat im with square pixels? (for export to Arc raster)
我在将密度 im 从 spatstat 导出为 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 具有正方形像素?
ArcGIS 必须使用 ascii 格式吗?使用任意 window 可能很难获得完美的正方形像素。像素分辨率由参数 eps
或参数 dimyx
(不是两者)控制,它们被发送到 as.mask
,您可以在该帮助文件中阅读更多内容。基本上 eps
是像素大小,所以最简单的方法是将其设置为给定值。但是,如果 window 大小在一个方向上与 window 不完全匹配,则像素可能会略微不正方形。例如。这非常有效:
X <- runifpoint(100, win = owin(c(0,9),c(0,10)))
d <- density.ppp(X, eps = 1)
但这给出了非方形像素:
d2 <- density.ppp(X, eps = 2)
我在将密度 im 从 spatstat 导出为 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 具有正方形像素?
ArcGIS 必须使用 ascii 格式吗?使用任意 window 可能很难获得完美的正方形像素。像素分辨率由参数 eps
或参数 dimyx
(不是两者)控制,它们被发送到 as.mask
,您可以在该帮助文件中阅读更多内容。基本上 eps
是像素大小,所以最简单的方法是将其设置为给定值。但是,如果 window 大小在一个方向上与 window 不完全匹配,则像素可能会略微不正方形。例如。这非常有效:
X <- runifpoint(100, win = owin(c(0,9),c(0,10)))
d <- density.ppp(X, eps = 1)
但这给出了非方形像素:
d2 <- density.ppp(X, eps = 2)