- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
lat long
7.16 124.21
8.6 123.35
8.43 124.28
8.15 125.08
考虑这些坐标,这些坐标对应于测量降雨数据的气象站。
R 中 gstat 包的介绍使用 meuse 数据集。在本教程中的某个时刻:https://rpubs.com/nabilabd/118172 ,这些人在这行代码中使用了“meuse.grid”:
data("meuse.grid")
我没有这样的文件,并且不知道如何创建它,我可以使用这些坐标创建一个文件吗?或者至少向我指出讨论如何为自定义区域创建自定义网格的 Material (即不使用 GADM 的管理边界)。
可能措辞错误,甚至不知道这个问题对于精通 R 的人是否有意义。尽管如此,我还是很想听到一些指导,或者至少是提示。非常感谢!
R 和统计方面的菜鸟。
编辑:请参阅我发布的教程的示例网格,这就是我想要制作的东西。
编辑2:这种方法可行吗? https://rstudio-pubs-static.s3.amazonaws.com/46259_d328295794034414944deea60552a942.html
最佳答案
我将分享我为克里金法创建网格的方法。可能有更有效或更优雅的方法来完成相同的任务,但我希望这将成为促进一些讨论的开始。
最初的海报考虑的是每 10 个像素 1 公里,但这可能太多了。我将创建一个单元大小等于 1 km * 1 km 的网格。此外,原始海报没有指定网格的原点,因此我将花一些时间确定一个好的起点。我还假设球面墨卡托投影坐标系是投影的适当选择。这是 Google map 或开放街道 map 的常见投影。
我将使用以下软件包。 sp
、rgdal
和 raster
包为空间分析提供了许多有用的函数。 leaflet
和 mapview
是用于空间数据快速探索性可视化的软件包。
# Load packages
library(sp)
library(rgdal)
library(raster)
library(leaflet)
library(mapview)
我创建了一个交互式 map 来检查四个站点的位置。由于原始海报提供了这四个站点的纬度和经度,因此我可以使用纬度/经度投影创建一个SpatialPointsDataFrame
。请注意,纬度/经度投影的 EPSG 代码为 4326
。要了解有关 EPSG 代码的更多信息,请参阅本教程 ( https://www.nceas.ucsb.edu/~frazier/RSpatialGuides/OverviewCoordinateReferenceSystems.pdf )。
# Create a data frame showing the **Latitude/Longitude**
station <- data.frame(lat = c(7.16, 8.6, 8.43, 8.15),
long = c(124.21, 123.35, 124.28, 125.08),
station = 1:4)
# Convert to SpatialPointsDataFrame
coordinates(station) <- ~long + lat
# Set the projection. They were latitude and longitude, so use WGS84 long-lat projection
proj4string(station) <- CRS("+init=epsg:4326")
# View the station location using the mapview function
mapview(station)
mapview
函数将创建交互式 map 。我们可以使用这张 map 来确定什么适合网格的原点。
检查 map 后,我确定原点可能在经度 123
和纬度 7
附近。该原点位于网格的左下角。现在我需要找到代表球墨卡托投影下同一点的坐标。
# Set the origin
ori <- SpatialPoints(cbind(123, 7), proj4string = CRS("+init=epsg:4326"))
# Convert the projection of ori
# Use EPSG: 3857 (Spherical Mercator)
ori_t <- spTransform(ori, CRSobj = CRS("+init=epsg:3857"))
我首先根据原点的纬度和经度创建了一个 SpatialPoints
对象。之后我使用spTransform
来执行项目转换。对象 ori_t
现在是球面墨卡托投影的原点。请注意,球面墨卡托的 EPSG 代码是 3857
。
要查看坐标的值,我们可以使用coordinates
函数,如下所示。
coordinates(ori_t)
coords.x1 coords.x2
[1,] 13692297 781182.2
现在我需要确定可以覆盖所有四个点的网格范围以及克里金法所需的区域,这取决于像元大小和像元数量。以下代码根据该信息设置范围。我已确定像元大小为 1 km * 1 km,但我需要试验 x 和 y 方向的最佳像元数。
# The origin has been rounded to the nearest 100
x_ori <- round(coordinates(ori_t)[1, 1]/100) * 100
y_ori <- round(coordinates(ori_t)[1, 2]/100) * 100
# Define how many cells for x and y axis
x_cell <- 250
y_cell <- 200
# Define the resolution to be 1000 meters
cell_size <- 1000
# Create the extent
ext <- extent(x_ori, x_ori + (x_cell * cell_size), y_ori, y_ori + (y_cell * cell_size))
根据我创建的范围,我可以创建一个编号全部等于0
的栅格图层。然后我可以再次使用 mapview
函数来查看栅格和四个站点是否匹配良好。
# Initialize a raster layer
ras <- raster(ext)
# Set the resolution to be
res(ras) <- c(cell_size, cell_size)
ras[] <- 0
# Project the raster
projection(ras) <- CRS("+init=epsg:3857")
# Create interactive map
mapview(station) + mapview(ras)
我重复了这个过程几次。最后,我决定 x 方向和 y 方向的单元格数量分别为 250
和 200
。
现在我已经创建了一个具有适当范围的栅格图层。我可以先将此栅格保存为 GeoTiff 以供将来使用。
# Save the raster layer
writeRaster(ras, filename = "ras.tif", format="GTiff")
最后,要使用 gstat
包中的克里金函数,我需要将栅格转换为 SpatialPixels
。
# Convert to spatial pixel
st_grid <- rasterToPoints(ras, spatial = TRUE)
gridded(st_grid) <- TRUE
st_grid <- as(st_grid, "SpatialPixels")
st_grid
是可用于克里金法的SpatialPixels
。
这是一个确定合适网格的迭代过程。在整个过程中,用户可以根据分析的需要更改投影、原点、单元格大小或单元格数量。
关于r - 在 R 中为 gstat 中的克里金法创建网格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43436466/
我正在尝试在 R 中编写一段代码,使用 gstat 库来创建插值。我已经阅读了 gstat 手册,并根据互联网上的一些示例,我成功编写了这段代码(这只是一部分): g <- gstat(id="te
当我使用 gstat 包在 R 中进行插值时,会出现类似“[反距离加权插值]”或“[普通或加权最小二乘法预测]”这样的消息' 发生。例如: library('sp') library('gstat')
我想使用 gstat 包执行普通克里金法。 我只有 17 个位置,这对于 OK 来说是不够的,所以我还使用了每个节点的时间数据作为辅助数据来构建变异函数。但是,我想出了这个错误,请指导我解决这个问题。
lat long 7.16 124.21 8.6 123.35 8.43 124.28 8.15 125.08 考虑这些坐标,这些坐标对应于测量降雨数据的气象站。 R 中 gs
以下 R 程序使用 470 个数据点使用 gstat 包中的 walker Lake 数据创建了一个插值表面。 source("D:/kriging/allfunctions.r")
我是 R 的新手,我在使用 gstat R 执行通用克里金法时遇到了一些麻烦。 作为 Hengl 等人。 (2004) 说“通用克里金法应该保留用于将漂移(或趋势)建模为仅作为坐标函数的情况”。所以,
我正在尝试使用 R 的 gstat 包中的 krige 函数来插入 R 中的一些空间海洋深度数据。我发现超过约 1000点,该函数开始花费不合理的时间来完成(即,几小时到几天尚未完成)。这是正常现象还
我是一名优秀的程序员,十分优秀!