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;








1















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?










share|improve this question

















  • 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















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?










share|improve this question

















  • 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








1








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?










share|improve this question














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






share|improve this question













share|improve this question











share|improve this question




share|improve this question










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












  • 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










1 Answer
1






active

oldest

votes


















0














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.






share|improve this answer























    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
    );



    );













    draft saved

    draft discarded


















    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









    0














    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.






    share|improve this answer



























      0














      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.






      share|improve this answer

























        0












        0








        0







        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.






        share|improve this answer













        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.







        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered Apr 1 at 18:02









        JonJon

        1,4041421




        1,4041421



























            draft saved

            draft discarded
















































            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.




            draft saved


            draft discarded














            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





















































            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







            Popular posts from this blog

            រឿង រ៉ូមេអូ និង ហ្ស៊ុយលីយេ សង្ខេបរឿង តួអង្គ បញ្ជីណែនាំ

            QGIS export composer to PDF scale the map [closed] Planned maintenance scheduled April 23, 2019 at 23:30 UTC (7:30pm US/Eastern) Announcing the arrival of Valued Associate #679: Cesar Manara Unicorn Meta Zoo #1: Why another podcast?Print Composer QGIS 2.6, how to export image?QGIS 2.8.1 print composer won't export all OpenCycleMap base layer tilesSave Print/Map QGIS composer view as PNG/PDF using Python (without changing anything in visible layout)?Export QGIS Print Composer PDF with searchable text labelsQGIS Print Composer does not change from landscape to portrait orientation?How can I avoid map size and scale changes in print composer?Fuzzy PDF export in QGIS running on macSierra OSExport the legend into its 100% size using Print ComposerScale-dependent rendering in QGIS PDF output

            PDF-ში გადმოწერა სანავიგაციო მენიუproject page