# Accuracy of raster cell size area to real world area

I read from somewhere here that a UTM raster's pixel count ratio is 1 pixel = 1 meter. I am working on a raster that says the island is 4.03 km² in area but a quick google search says the island is 4.8 km². I need to make sure that my area calculations are accurate.

How accurate is a raster's area to the real world? Does this depend on whether the data are projected on WGS 84?

You are wrong to assume that 1 grid cell (pixel) side is 1 meter in UTM or any other coordinate reference system. It can be anything (up to ~600 km for a single column raster, if you want to stay within UTM zone boundaries).

It is also important to note that cell size is not constant. With a longitude/latitude coordinate reference system (CRS), I assume that is what you erroneously refer to with `WGS84`, it changes with latitude. With a planar CRS cell size may change (decrease) as you move away from the origin of the CRS (unless you are using an equal-area CRS; UTM is not equal-area); there is an illustration here). For a very small area as in your example this variation is minimal.

The area covered by a raster should be very similar to that of a vector representation, except for the extreme case where the island is reduced to only a few grid cells.

Here is some R code to illustrate this for the Isle of Man, for vector data (lon/lat and UTM) and raster data with 30 arc-seconds, 10 m and 1 km spatial resolution (length of the side of each cell).

``````library(terra)
library(raster)
g <- getData("GADM", country="Isle of Man", level=0)
g <- vect(g)
crs(g)
#  "+proj=longlat +datum=WGS84 +no_defs"

# rasterize the vector data to a lon/lat raster
# with a 1/120=30 seconds spatial resolution (a bit less than 1 km2)
r0 <- rast(g, res=1/120)
r0 <- rasterize(g, r0)
``````

Transform the vector data to UTM (but staying with the WGS84 datum) and rasterize again.

``````gutm <- project(g, "+proj=utm +zone=30 +datum=WGS84")
crs(gutm, proj4=TRUE)
#  "+proj=utm +zone=30 +datum=WGS84 +units=m +no_defs"

# 10 m resolution
r1 <- rast(gutm, res=10)
res(r1)
# 10 10
r1 <- rasterize(gutm, r1)

# 1 km resolution
r2 <- rast(gutm, res=1000)
r2 <- rasterize(gutm, r2)
``````

Now compute the size of the island for the different representations.

``````area_lonlat <- area(g)
area_utm <- area(gutm)
area_rst_lonlat_1km <- area(r0)
area_rst_utm_10m <- area(r1)
area_rst_utm_1km <- area(r2)

akm2 <- cbind(area_lonlat, area_utm, area_rst_lonlat_1km,
area_rst_utm_10m, area_rst_utm_1km) / 1000000

round(akm2, 2)
area_lonlat area_utm area_rst_lonlat_1km area_rst_utm_10m area_rst_utm_1km
[1,]      579.67   579.35              579.72           579.36              579
``````

Above are the five estimates of the island size in km2. There is some minor variation, but less than what you report. With the 10 m resolution it is only 0.07 km2 compared to the polygon.

Relative to the size of your island, 0.8 km2 is a lot, so you may need to use a higher spatial resolution. (It depends on what you ultimate goal is, presumably that is not to estimate the island size).

Based on your description I am assuming you used the wrong spatial resolution. There are other possibilities: the raster data can be of poor quality, the other source can be wrong. But you do not provide much to go on; you do not mention the island's name, nor how you calculated its size.

• Thanks for the answer I understand it now. Im sorry I did not include much about the problem. I was using a raster data with 1 arc second global 30 meters spatial resolution. The cell size of the raster I produced was at 30.9 x and y so I think it might've been the problem. I am working with a susceptibility map of Bohol Island which is 4.9 km^2. I think another reason the area I got was different is because the raster might have been reduced to my smallest raster data of the island when I ran a weighted linear combination. May 7 at 10:25