[gdal-dev] combine two raster data

Ari Jolma ari.jolma at gmail.com
Wed Oct 7 14:15:38 PDT 2015


Dear Wangyal,

Well, with the Perl bindings you could do something like this (note: not 
tested code!). I'm assuming many things: the rasters are similar size, 
they are not too big so they fit into memory, etc.

use Modern::Perl;
use Geo::GDAL;

my ($admin,$lu) = @ARGV;

my $ds_admin = Geo::GDAL::Open($admin);
die "can't open $admin as a raster dataset" unless $ds_admin;

my $ds_lu = Geo::GDAL::Open($lu);
die "can't open $lu as a raster dataset" unless $ds_lu;

my $data_admin = $ds_admin->Band(1)->ReadTile;
my $data_lu = $ds_admin->Band(1)->ReadTile;

my %lu_at_admin; # will contain the number of cells of each land use in 
each admin area
for (my $y = 0; $y < @$data_admin-1; $y++) {
     my $row_admin = $data_admin->[$y];
     my $row_lu = $lu_admin->[$y];
     for (my $x = 0; $x < @$row_admin-1; $x++) {
         $lu_at_admin{$row_admin->[$x]}{$row_lu->[$x]}++;
     }
}

for my $admin (sort keys %lu_at_admin) {
     for my $lu (sort keys %{$lu_at_admin{$admin}}) {
         say "There are $lu_at_admin{$admin}{$lu} cells of land use $lu 
in admin area $admin.";
     }
}

Best,

Ari Jolma

On 07.10.2015 23:12, Tsering W. Shawa wrote:
> I am looking for a script to combine two raster data that have unique values. For example, one raster has administrative unit name and another has land cover data. I want to combine these two raster data to find a relationship between two data. I can do the same process in another GIS software but wanted to find an option to do this using gdal.
>
> Any suggestion or help will be appreciated.
>
> Thanks,
> -Wangyal
> _______________________________________________
> gdal-dev mailing list
> gdal-dev at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/gdal-dev



More information about the gdal-dev mailing list