Determine area of cell in raster (QGIS)SUM Area irregular polygons per grid cellProjecting a Raster from WGS84 to planar Equal Area to Calculate Area: How to Select the Cell Size?Geographic vs. projected raster cell size areaCalculating area of polygon within square mile in ArcGIS?Sum area of specific poly attributes within raster grid cellHow to get unique values and cell counts of a raster in QGIS 2.6?Calculate area of raster grid cells in an unprojected raster using ArcGISChanging cell size of raster in QGIS during extraction (clip)QGIS 2D Raster Area CalculationCalculating the area of raster within polygon
Why can't we play rap on piano?
I'm flying to France today and my passport expires in less than 2 months
Is it possible to download Internet Explorer on my Mac running OS X El Capitan?
In a Spin are Both Wings Stalled?
1960's book about a plague that kills all white people
How can I tell someone that I want to be his or her friend?
Stopping power of mountain vs road bike
Can a rocket refuel on Mars from water?
Etiquette around loan refinance - decision is going to cost first broker a lot of money
Blender 2.8 I can't see vertices, edges or faces in edit mode
Assassin's bullet with mercury
Is it inappropriate for a student to attend their mentor's dissertation defense?
How do conventional missiles fly?
In Romance of the Three Kingdoms why do people still use bamboo sticks when papers are already invented?
Is it canonical bit space?
What exploit are these user agents trying to use?
Diode datasheet reading
Fully-Firstable Anagram Sets
Why is Collection not simply treated as Collection<?>
Can I use a neutral wire from another outlet to repair a broken neutral?
Watching something be written to a file live with tail
Why does Arabsat 6A need a Falcon Heavy to launch
AES: Why is it a good practice to use only the first 16bytes of a hash for encryption?
Twin primes whose sum is a cube
Determine area of cell in raster (QGIS)
SUM Area irregular polygons per grid cellProjecting a Raster from WGS84 to planar Equal Area to Calculate Area: How to Select the Cell Size?Geographic vs. projected raster cell size areaCalculating area of polygon within square mile in ArcGIS?Sum area of specific poly attributes within raster grid cellHow to get unique values and cell counts of a raster in QGIS 2.6?Calculate area of raster grid cells in an unprojected raster using ArcGISChanging cell size of raster in QGIS during extraction (clip)QGIS 2D Raster Area CalculationCalculating the area of raster within polygon
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;
I have a raster layer of which I would need to find the area (m2) per cell. Any suggestions for a simple approach to achieve this?
qgis raster cell-size
|
show 3 more comments
I have a raster layer of which I would need to find the area (m2) per cell. Any suggestions for a simple approach to achieve this?
qgis raster cell-size
1
Project your raster layer into an appropriate coordinate reference system (CRS) that uses meters. E.g. find the correct UTM zone and use that CRS.
– Jon
Apr 1 at 17:17
1
@Jon that's going to change the grid basis. Probably not a good idea. If the raster is already in a cartesian system then multiply the height by the width. If the grid is lat-long then there's some calculations to be done...
– Spacedman
Apr 1 at 17:34
1
I was assuming the data were in lat/long. Otherwise I thought it was obvious to just look at the pixel resolution, but maybe not.
– Jon
Apr 1 at 17:53
Thanks. To clarify - with height and width, are you referring to the cell size?
– A.N
Apr 1 at 17:53
1
Then the unit is degrees and area of a pixel in hectares depends on where on the Earth the pixel is located. The answer by @Jon is relevant. If your raster is rather small you can calculate the length of one degree latitude and longitude around your location with some online tool like csgnetwork.com/degreelenllavcalc.html and use the result as an estimate.
– user30184
Apr 1 at 19:44
|
show 3 more comments
I have a raster layer of which I would need to find the area (m2) per cell. Any suggestions for a simple approach to achieve this?
qgis raster cell-size
I have a raster layer of which I would need to find the area (m2) per cell. Any suggestions for a simple approach to achieve this?
qgis raster cell-size
qgis raster cell-size
asked Apr 1 at 17:15
A.NA.N
261
261
1
Project your raster layer into an appropriate coordinate reference system (CRS) that uses meters. E.g. find the correct UTM zone and use that CRS.
– Jon
Apr 1 at 17:17
1
@Jon that's going to change the grid basis. Probably not a good idea. If the raster is already in a cartesian system then multiply the height by the width. If the grid is lat-long then there's some calculations to be done...
– Spacedman
Apr 1 at 17:34
1
I was assuming the data were in lat/long. Otherwise I thought it was obvious to just look at the pixel resolution, but maybe not.
– Jon
Apr 1 at 17:53
Thanks. To clarify - with height and width, are you referring to the cell size?
– A.N
Apr 1 at 17:53
1
Then the unit is degrees and area of a pixel in hectares depends on where on the Earth the pixel is located. The answer by @Jon is relevant. If your raster is rather small you can calculate the length of one degree latitude and longitude around your location with some online tool like csgnetwork.com/degreelenllavcalc.html and use the result as an estimate.
– user30184
Apr 1 at 19:44
|
show 3 more comments
1
Project your raster layer into an appropriate coordinate reference system (CRS) that uses meters. E.g. find the correct UTM zone and use that CRS.
– Jon
Apr 1 at 17:17
1
@Jon that's going to change the grid basis. Probably not a good idea. If the raster is already in a cartesian system then multiply the height by the width. If the grid is lat-long then there's some calculations to be done...
– Spacedman
Apr 1 at 17:34
1
I was assuming the data were in lat/long. Otherwise I thought it was obvious to just look at the pixel resolution, but maybe not.
– Jon
Apr 1 at 17:53
Thanks. To clarify - with height and width, are you referring to the cell size?
– A.N
Apr 1 at 17:53
1
Then the unit is degrees and area of a pixel in hectares depends on where on the Earth the pixel is located. The answer by @Jon is relevant. If your raster is rather small you can calculate the length of one degree latitude and longitude around your location with some online tool like csgnetwork.com/degreelenllavcalc.html and use the result as an estimate.
– user30184
Apr 1 at 19:44
1
1
Project your raster layer into an appropriate coordinate reference system (CRS) that uses meters. E.g. find the correct UTM zone and use that CRS.
– Jon
Apr 1 at 17:17
Project your raster layer into an appropriate coordinate reference system (CRS) that uses meters. E.g. find the correct UTM zone and use that CRS.
– Jon
Apr 1 at 17:17
1
1
@Jon that's going to change the grid basis. Probably not a good idea. If the raster is already in a cartesian system then multiply the height by the width. If the grid is lat-long then there's some calculations to be done...
– Spacedman
Apr 1 at 17:34
@Jon that's going to change the grid basis. Probably not a good idea. If the raster is already in a cartesian system then multiply the height by the width. If the grid is lat-long then there's some calculations to be done...
– Spacedman
Apr 1 at 17:34
1
1
I was assuming the data were in lat/long. Otherwise I thought it was obvious to just look at the pixel resolution, but maybe not.
– Jon
Apr 1 at 17:53
I was assuming the data were in lat/long. Otherwise I thought it was obvious to just look at the pixel resolution, but maybe not.
– Jon
Apr 1 at 17:53
Thanks. To clarify - with height and width, are you referring to the cell size?
– A.N
Apr 1 at 17:53
Thanks. To clarify - with height and width, are you referring to the cell size?
– A.N
Apr 1 at 17:53
1
1
Then the unit is degrees and area of a pixel in hectares depends on where on the Earth the pixel is located. The answer by @Jon is relevant. If your raster is rather small you can calculate the length of one degree latitude and longitude around your location with some online tool like csgnetwork.com/degreelenllavcalc.html and use the result as an estimate.
– user30184
Apr 1 at 19:44
Then the unit is degrees and area of a pixel in hectares depends on where on the Earth the pixel is located. The answer by @Jon is relevant. If your raster is rather small you can calculate the length of one degree latitude and longitude around your location with some online tool like csgnetwork.com/degreelenllavcalc.html and use the result as an estimate.
– user30184
Apr 1 at 19:44
|
show 3 more comments
1 Answer
1
active
oldest
votes
Your question is not well constrained. If you are wondering how to find the area of a cell from a raster that is unprojected and aligned to WGS84 grid (e.g. epsg:4326), then the following Python code should help.
import numpy as np
import rasterio
fp = 'your_tiff_file.tif'
with rasterio.open(fp) as testif:
rast = testif.read(1)
gt = testif.transform
pix_width = gt[0]
ulX = gt[2]
ulY = gt[5]
rows = testif.height
cols = testif.width
lrX = ulX + gt[0] * cols
lrY = ulY + gt[4] * rows
lats = np.linspace(ulY,lrY,rows+1)
a = 6378137
b = 6356752.3142
# Degrees to radians
lats = lats * np.pi/180
# Intermediate vars
e = np.sqrt(1-(b/a)**2)
sinlats = np.sin(lats)
zm = 1 - e * sinlats
zp = 1 + e * sinlats
# Distance between meridians
# q = np.diff(longs)/360
q = pix_width/360
# Compute areas for each latitude in square km
areas_to_equator = np.pi * b**2 * ((2*np.arctanh(e*sinlats) / (2*e) + sinlats / (zp*zm))) / 10**6
areas_between_lats = np.diff(areas_to_equator)
areas_cells = np.abs(areas_between_lats) * q
areagrid = np.transpose(np.matlib.repmat(areas_cells,cols,1))
This snippet returns the array areagrid
that contains the area in square kilometers of each pixel in your 4326 raster. There are a number of considerations "under the hood" that I am not detailing here, but I will note that I have compared this method with reprojection methods and the results have always been very similar.
You asked for a QGIS solution, so you would have to modify this a bit to get it to run in the Python console. Maybe overkill for what you want.
add a comment |
Your Answer
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "79"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fgis.stackexchange.com%2fquestions%2f317392%2fdetermine-area-of-cell-in-raster-qgis%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
Your question is not well constrained. If you are wondering how to find the area of a cell from a raster that is unprojected and aligned to WGS84 grid (e.g. epsg:4326), then the following Python code should help.
import numpy as np
import rasterio
fp = 'your_tiff_file.tif'
with rasterio.open(fp) as testif:
rast = testif.read(1)
gt = testif.transform
pix_width = gt[0]
ulX = gt[2]
ulY = gt[5]
rows = testif.height
cols = testif.width
lrX = ulX + gt[0] * cols
lrY = ulY + gt[4] * rows
lats = np.linspace(ulY,lrY,rows+1)
a = 6378137
b = 6356752.3142
# Degrees to radians
lats = lats * np.pi/180
# Intermediate vars
e = np.sqrt(1-(b/a)**2)
sinlats = np.sin(lats)
zm = 1 - e * sinlats
zp = 1 + e * sinlats
# Distance between meridians
# q = np.diff(longs)/360
q = pix_width/360
# Compute areas for each latitude in square km
areas_to_equator = np.pi * b**2 * ((2*np.arctanh(e*sinlats) / (2*e) + sinlats / (zp*zm))) / 10**6
areas_between_lats = np.diff(areas_to_equator)
areas_cells = np.abs(areas_between_lats) * q
areagrid = np.transpose(np.matlib.repmat(areas_cells,cols,1))
This snippet returns the array areagrid
that contains the area in square kilometers of each pixel in your 4326 raster. There are a number of considerations "under the hood" that I am not detailing here, but I will note that I have compared this method with reprojection methods and the results have always been very similar.
You asked for a QGIS solution, so you would have to modify this a bit to get it to run in the Python console. Maybe overkill for what you want.
add a comment |
Your question is not well constrained. If you are wondering how to find the area of a cell from a raster that is unprojected and aligned to WGS84 grid (e.g. epsg:4326), then the following Python code should help.
import numpy as np
import rasterio
fp = 'your_tiff_file.tif'
with rasterio.open(fp) as testif:
rast = testif.read(1)
gt = testif.transform
pix_width = gt[0]
ulX = gt[2]
ulY = gt[5]
rows = testif.height
cols = testif.width
lrX = ulX + gt[0] * cols
lrY = ulY + gt[4] * rows
lats = np.linspace(ulY,lrY,rows+1)
a = 6378137
b = 6356752.3142
# Degrees to radians
lats = lats * np.pi/180
# Intermediate vars
e = np.sqrt(1-(b/a)**2)
sinlats = np.sin(lats)
zm = 1 - e * sinlats
zp = 1 + e * sinlats
# Distance between meridians
# q = np.diff(longs)/360
q = pix_width/360
# Compute areas for each latitude in square km
areas_to_equator = np.pi * b**2 * ((2*np.arctanh(e*sinlats) / (2*e) + sinlats / (zp*zm))) / 10**6
areas_between_lats = np.diff(areas_to_equator)
areas_cells = np.abs(areas_between_lats) * q
areagrid = np.transpose(np.matlib.repmat(areas_cells,cols,1))
This snippet returns the array areagrid
that contains the area in square kilometers of each pixel in your 4326 raster. There are a number of considerations "under the hood" that I am not detailing here, but I will note that I have compared this method with reprojection methods and the results have always been very similar.
You asked for a QGIS solution, so you would have to modify this a bit to get it to run in the Python console. Maybe overkill for what you want.
add a comment |
Your question is not well constrained. If you are wondering how to find the area of a cell from a raster that is unprojected and aligned to WGS84 grid (e.g. epsg:4326), then the following Python code should help.
import numpy as np
import rasterio
fp = 'your_tiff_file.tif'
with rasterio.open(fp) as testif:
rast = testif.read(1)
gt = testif.transform
pix_width = gt[0]
ulX = gt[2]
ulY = gt[5]
rows = testif.height
cols = testif.width
lrX = ulX + gt[0] * cols
lrY = ulY + gt[4] * rows
lats = np.linspace(ulY,lrY,rows+1)
a = 6378137
b = 6356752.3142
# Degrees to radians
lats = lats * np.pi/180
# Intermediate vars
e = np.sqrt(1-(b/a)**2)
sinlats = np.sin(lats)
zm = 1 - e * sinlats
zp = 1 + e * sinlats
# Distance between meridians
# q = np.diff(longs)/360
q = pix_width/360
# Compute areas for each latitude in square km
areas_to_equator = np.pi * b**2 * ((2*np.arctanh(e*sinlats) / (2*e) + sinlats / (zp*zm))) / 10**6
areas_between_lats = np.diff(areas_to_equator)
areas_cells = np.abs(areas_between_lats) * q
areagrid = np.transpose(np.matlib.repmat(areas_cells,cols,1))
This snippet returns the array areagrid
that contains the area in square kilometers of each pixel in your 4326 raster. There are a number of considerations "under the hood" that I am not detailing here, but I will note that I have compared this method with reprojection methods and the results have always been very similar.
You asked for a QGIS solution, so you would have to modify this a bit to get it to run in the Python console. Maybe overkill for what you want.
Your question is not well constrained. If you are wondering how to find the area of a cell from a raster that is unprojected and aligned to WGS84 grid (e.g. epsg:4326), then the following Python code should help.
import numpy as np
import rasterio
fp = 'your_tiff_file.tif'
with rasterio.open(fp) as testif:
rast = testif.read(1)
gt = testif.transform
pix_width = gt[0]
ulX = gt[2]
ulY = gt[5]
rows = testif.height
cols = testif.width
lrX = ulX + gt[0] * cols
lrY = ulY + gt[4] * rows
lats = np.linspace(ulY,lrY,rows+1)
a = 6378137
b = 6356752.3142
# Degrees to radians
lats = lats * np.pi/180
# Intermediate vars
e = np.sqrt(1-(b/a)**2)
sinlats = np.sin(lats)
zm = 1 - e * sinlats
zp = 1 + e * sinlats
# Distance between meridians
# q = np.diff(longs)/360
q = pix_width/360
# Compute areas for each latitude in square km
areas_to_equator = np.pi * b**2 * ((2*np.arctanh(e*sinlats) / (2*e) + sinlats / (zp*zm))) / 10**6
areas_between_lats = np.diff(areas_to_equator)
areas_cells = np.abs(areas_between_lats) * q
areagrid = np.transpose(np.matlib.repmat(areas_cells,cols,1))
This snippet returns the array areagrid
that contains the area in square kilometers of each pixel in your 4326 raster. There are a number of considerations "under the hood" that I am not detailing here, but I will note that I have compared this method with reprojection methods and the results have always been very similar.
You asked for a QGIS solution, so you would have to modify this a bit to get it to run in the Python console. Maybe overkill for what you want.
answered Apr 1 at 18:02
JonJon
1,4041421
1,4041421
add a comment |
add a comment |
Thanks for contributing an answer to Geographic Information Systems Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fgis.stackexchange.com%2fquestions%2f317392%2fdetermine-area-of-cell-in-raster-qgis%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
1
Project your raster layer into an appropriate coordinate reference system (CRS) that uses meters. E.g. find the correct UTM zone and use that CRS.
– Jon
Apr 1 at 17:17
1
@Jon that's going to change the grid basis. Probably not a good idea. If the raster is already in a cartesian system then multiply the height by the width. If the grid is lat-long then there's some calculations to be done...
– Spacedman
Apr 1 at 17:34
1
I was assuming the data were in lat/long. Otherwise I thought it was obvious to just look at the pixel resolution, but maybe not.
– Jon
Apr 1 at 17:53
Thanks. To clarify - with height and width, are you referring to the cell size?
– A.N
Apr 1 at 17:53
1
Then the unit is degrees and area of a pixel in hectares depends on where on the Earth the pixel is located. The answer by @Jon is relevant. If your raster is rather small you can calculate the length of one degree latitude and longitude around your location with some online tool like csgnetwork.com/degreelenllavcalc.html and use the result as an estimate.
– user30184
Apr 1 at 19:44