gpt4 book ai didi

r - 将 GIS 形状文件转换为 R 中的栅格?

转载 作者:行者123 更新时间:2023-12-02 08:42:55 26 4
gpt4 key购买 nike

我需要将 shapefile 转换为栅格格式。

我在 R 包“raster”中使用了函数“rasterize”,但结果看起来不正确。

tst <- rasterize(shpfile, r, fun="count")  
Found 5 region(s) and 5 polygon(s)

没有出现记录的网格:

range(tst[],na.rm=TRUE)
[1] Inf -Inf
Warning messages:
1: In min(x) : no non-missing arguments to min; returning Inf
2: In max(x) : no non-missing arguments to max; returning -Inf

sum(tst[],na.rm=TRUE)
[1] 0

我写的R脚本:

# download the GIS shape file
download.file("http://esp.cr.usgs.gov/data/little/abiebrac.zip",
destfile = "abiebrac.zip")

# unzip
unzip("abiebrac.zip")

# Read shapefile into R
library(maptools)

shpfile <- readShapePoly("abiebrac")
extent(shpfile)

# mapping
plot(shpfile)

library(maps)
map("world",xlim=c(-180,-50),ylim=c(7,83),add=FALSE)
plot(shpfile,add=TRUE,lwd=10)


# rasterize
library(raster)

GridSize <- 0.5 # degree
r <- raster(ncol= round(abs(-180-(-50))/GridSize),
nrow=round(abs(83-7)/GridSize))
extent(r) <- extent(c(-180, -50, 7, 83))
tst <- rasterize(shpfile, r, fun="count")

# summary
sum(tst[],na.rm=TRUE)
range(tst[],na.rm=TRUE)

# mapping
plot(tst,col="red",main="abiebrac")
map("world",xlim=c(-180,-50),ylim=c(7,83),add=TRUE)

最佳答案

我不确定您为什么在 fun 参数中使用“计数”,但在这种情况下,因为没有重叠,它会产生 NA 结果。您还需要在 spatialPolygonDataFrame 对象中定义一个属性字段,以便为栅格分配值。您也可以直接从 sp 对象中提取范围。

此代码似乎产生了您想要的结果。

require(raster)
require(rgdal)
require(sp)

setwd("D:/TMP")
shpfile <- readOGR(getwd(), "abiebrac")
r <- raster(extent(shpfile))
res(r)=0.05
r <- rasterize(shpfile, field="ABIEBRAC_", r)

plot(r)
plot(shpfile,lwd=10,add=TRUE)

关于r - 将 GIS 形状文件转换为 R 中的栅格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15010690/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com