lat long
7.16 124.21
8.6 123.35
8.43 124.28
8.15 125.08
Consider these coordinates, these coordinates correspond to weather stations that measure rainfall data.
The intro to the gstat package in R uses the meuse dataset. At some point in this tutorial: https://rpubs.com/nabilabd/118172, the guys makes use of a "meuse.grid" in this line of code:
data("meuse.grid")
I do not have such a file and I do not know how to create it, can I create one using these coordinates? Or at least point me to material that discusses how to create a custom grid for a custom area (i.e not using administrative boundaries from GADM).
Probably wording this wrong, don't even know if this question makes sense to R savvy people. Still, would love to hear some direction, or at least tips. Thanks a lot!
Total noob at R and statistics.
EDIT: See the sample grid that the tutorial I posted looks like, that's the thing I want to make.
EDIT 2: Would this method be viable? https://rstudio-pubs-static.s3.amazonaws.com/46259_d328295794034414944deea60552a942.html
If you have your study area as a polygon, imported as a
SpatialPolygons
, you could either use package raster to rasterize it, or usesp::spsample
to sample it using sampling typeregular
.If you don't have such a polygon, you can create points regularly spread over a rectangular long/lat area using
expand.grid
, usingseq
to generate a sequence of long and lat values.I am going to share my approach to create a grid for kriging. There are probably more efficient or elegant ways to achieve the same task, but I hope this will be a start to facilitate some discussions.
The original poster was thinking about 1 km for every 10 pixels, but that is probably too much. I am going to create a grid with cell size equals to 1 km * 1 km. In addition, the original poster did not specify an origin of the grid, so I will spend some time determining a good starting point. I also assume that the Spherical Mercator projection coordinate system is the appropriate choice for the projection. This is a common projection for Google Map or Open Street Maps.
1. Load Packages
I am going to use the following packages.
sp
,rgdal
, andraster
are packages provide many useful functions for spatial analysis.leaflet
andmapview
are packages for quick exploratory visualization of spatial data.2. Exploratory Visualization of the station locations
I created an interactive map to inspect the location of the four stations. Because the original poster provided the latitude and longitude of these four stations, I can create a
SpatialPointsDataFrame
with Latitude/Longitude projection. Notice the EPSG code for Latitude/Longitude projection is4326
. To learn more about EPSG code, please see this tutorial (https://www.nceas.ucsb.edu/~frazier/RSpatialGuides/OverviewCoordinateReferenceSystems.pdf).The
mapview
function will create an interactive map. We can use this map to determine what could be a suitable for the origin of the grid.3. Determine the origin
After inspecting the map, I decided that the origin could be around longitude
123
and latitude7
. This origin will be on the lower left of the grid. Now I need to find the coordinate representing the same point under Spherical Mercator projection.I first created a
SpatialPoints
object based on the latitude and longitude of the origin. After that I used thespTransform
to perform project transformation. The objectori_t
now is the origin with Spherical Mercator projection. Notice that the EPSG code for Spherical Mercator is3857
.To see the value of coordinates, we can use the
coordinates
function as follows.4. Determine the extent of the grid
Now I need to decide the extent of the grid that can cover all the four points and the desired area for kriging, which depends on the cell size and the number of cells. The following code sets up the extent based on the information. I have decided that the cell size is 1 km * 1 km, but I need to experiment on what would be a good cell number for both x- and y-direction.
Based on the extent I created, I can create a raster layer with number all equal to
0
. Then I can use themapview
function again to see if the raster and the four stations matches well.I repeated this process several times. Finally I decided that the number of cells is
250
and200
for x- and y-direction, respectively.5. Create spatial grid
Now I have created a raster layer with proper extent. I can first save this raster as a GeoTiff for future use.
Finally, to use the kriging functions from the package
gstat
, I need to convert the raster toSpatialPixels
.The
st_grid
is aSpatialPixels
that can be used in kriging.This is an iterative process to determine a suitable grid. Throughout the process, users can change the projection, origin, cell size, or cell number depends on the needs of their analysis.
@yzw and @Edzer bring up good points for creating a regular rectangular grid, but sometimes, there is the need to create an irregular grid over a defined polygon, usually for kriging.
This is a sparsely documented topic. One good answer can be found here. I expand on it with code below:
Consider the the built in meuse dataset.
meuse.grid
is an irregularly shaped grid. How do we make an grid like meuse.grid for our unique study area?Imagine an irregularly shaped
SpatialPolygon
orSpatialPolygonsDataFrame
, calledspdf
. You first build a regular rectangular grid over it, then subset the points in that regular grid by the irregularly-shaped polygon.1. Make a rectangular grid over your
SpatialPolygonsDataFrame
2. Convert the grid to
SpatialPoints
and subset these points by the polygon.3. Visualize your clipped grid, which can be used for kriging.