Raster description

Methods available in girs.rast.raster import Raster

Output:

clip_array
clip_arrays
copy
extent_world_to_pixel
get_array
get_array_masked
get_arrays
get_arrays_masked
get_arrays_zeros
get_band
get_band_data_type
get_band_data_types
get_centroid_world_coordinates
get_coordinate_system
get_extent
get_filename
get_geotransform
get_nodata
get_number_of_bands
get_parameters
get_pixel_size
get_raster_size
get_rastername
info
is_compressed
pixel_to_world
plot
resample
show
transform
world_to_pixel

Info

Same as gdal.Info(self.dataset, **kwargs):

r = RasterReader('D:/tmp/girs/chirps_basin/chirps-v2.0.2016.01.10.tif')
print r.info()

Output:

Driver: GTiff/GeoTIFF
Files: D:/tmp/girs/chirps_basin/chirps-v2.0.2016.01.10.tif
Size is 17, 14
Coordinate System is:
PROJCS["WGS 84 / UTM zone 23S",
    GEOGCS["WGS 84",
        DATUM["WGS_1984",
            SPHEROID["WGS 84",6378137,298.257223563,
                AUTHORITY["EPSG","7030"]],
            AUTHORITY["EPSG","6326"]],
        PRIMEM["Greenwich",0,
            AUTHORITY["EPSG","8901"]],
        UNIT["degree",0.0174532925199433,
            AUTHORITY["EPSG","9122"]],
        AUTHORITY["EPSG","4326"]],
    PROJECTION["Transverse_Mercator"],
    PARAMETER["latitude_of_origin",0],
    PARAMETER["central_meridian",-45],
    PARAMETER["scale_factor",0.9996],
    PARAMETER["false_easting",500000],
    PARAMETER["false_northing",10000000],
    UNIT["metre",1,
        AUTHORITY["EPSG","9001"]],
    AXIS["Easting",EAST],
    AXIS["Northing",NORTH],
    AUTHORITY["EPSG","32723"]]
Origin = (252029.432178030870000,8017235.206348278600000)
Pixel Size = (27452.343893482921000,-27452.343893482921000)
Metadata:
  AREA_OR_POINT=Area
Image Structure Metadata:
  INTERLEAVE=BAND
Corner Coordinates:
Upper Left  (  252029.432, 8017235.206) ( 47d20'26.81"W, 17d55' 7.80"S)
Lower Left  (  252029.432, 7632902.392) ( 47d23'30.14"W, 21d23'20.69"S)
Upper Right (  718719.278, 8017235.206) ( 42d56' 6.74"W, 17d55'19.06"S)
Lower Right (  718719.278, 7632902.392) ( 42d53'24.98"W, 21d23'34.32"S)
Center      (  485374.355, 7825068.799) ( 45d 8'22.30"W, 19d40'10.73"S)
Band 1 Block=17x14 Type=Float32, ColorInterp=Gray
  NoData Value=-9999

Raster visualization

Show

from girs.rast.raster import RasterReader
r = RasterReader('D:/tmp/girs/chirps_basin/chirps-v2.0.2016.01.10.tif')
r.show()  # same as r.show(band_number=1, mask=True, scale=False, plot=True)
../_images/rastershow.jpg

Plot

Plot has a dictionary with matplotlib axes as key and the band number as value.

import matplotlib.pyplot as plt
from girs.rast.raster import RasterReader
from girs.rast.proc import composite
rasters = [
    'D:/tmp/girs/chirps_basin/chirps-v2.0.2016.01.10.tif',
    'D:/tmp/girs/chirps_basin/chirps-v2.0.2016.01.11.tif',
    RasterReader('D:/tmp/girs/chirps_basin/chirps-v2.0.2016.01.12.tif'),
    RasterReader('D:/tmp/girs/chirps_basin/chirps-v2.0.2016.01.13.tif')]
r = composite(*rasters)
fig, axes = plt.subplots(nrows=2, ncols=2)
r.plot({axes[0][0]: 1, axes[0][1]: 2, axes[1][0]: 3, axes[1][1]: 4}, mask=True)
../_images/rasterplot.png

Animated gif

The following code block creates an animated Figure. It scales to minimum to maximum values of all 15 rasters. If the figure is not animated, click on it or reload (refresh - F5) the page in your browser.

from girs.rast.raster import RasterReader, create_gifs
rasters = ['D:/tmp/girs/chirps_basin/chirps-v2.0.2016.01.{}.tif'.format(str(d).zfill(2)) for d in range(5, 20)]
create_gifs('D:/tmp/girs/chirps_basin/compressed/chirps-v2.0.2016.gif', *rasters, resize=40, cmap_name='rainbow_r')
../_images/chirps-v2.0.2016.gif

Raster properties

Parameters

Raster parameters are defined in the class

from girs.rast.raster import RasterReader
r = RasterReader('D:/tmp/girs/chirps_basin/chirps-v2.0.2016.01.10.tif')
p = r.get_parameters()
print p

The printed output shows:

  • raster dimension: one band, 17 columns, 14 rows
  • nodata: -999.0
  • data type: Float32
  • driver: GTiff
  • spatial reference system: WGS 84WGS 84 / UTM zone 23S
  • geo-transform: 252029.43217803087, 27452.34389348292, 0.0, 8017235.206348279, 0.0, -27452.34389348292

Output:

DIM[1, 17, 14] ND[-9999.0] DT[Float32] DRV[GTiff] SRS[WGS 84WGS 84 / UTM zone 23S]
TRANS(252029.43217803087, 27452.34389348292, 0.0, 8017235.206348279, 0.0, -27452.34389348292)

Nodata

The default band number is one. Note in the following example the difference between band_number 1 and [1].

from girs.rast.raster import RasterReader
r = RasterReader('D:/tmp/girs/chirps_basin/chirps-v2.0.2016.01.10.tif')
print r.get_nodata()
print r.get_nodata(1)
print r.get_nodata([1])

Output:

-9999.0
-9999.0
[-9999.0]
from girs.rast.proc import composite
rasters = [
    'D:/tmp/girs/chirps_basin/chirps-v2.0.2016.01.10.tif',
    'D:/tmp/girs/chirps_basin/chirps-v2.0.2016.01.11.tif']
r = composite(*rasters)
r.set_nodata(-8888.0, band_number=2)
print 'r.get_nodata():', r.get_nodata()
print 'r.get_nodata(1):', r.get_nodata(1)
print 'r.get_nodata(2):', r.get_nodata(2)
print 'r.get_nodata([1]):', r.get_nodata([1])
print 'r.get_nodata([2]):', r.get_nodata([2])
print 'r.get_nodata([1, 2]):', r.get_nodata([1, 2])
print 'r.get_nodata([2, 1]):', r.get_nodata([2, 1])

Output:

r.get_nodata(): -9999.0
r.get_nodata(1): -9999.0
r.get_nodata(2): -8888.0
r.get_nodata([1]): [-9999.0]
r.get_nodata([2]): [-8888.0]
r.get_nodata([1, 2]): [-9999.0, -8888.0]
r.get_nodata([2, 1]): [-8888.0, -9999.0]

Raster Size

Return (number of columns, number of rows):

from girs.rast.raster import RasterReader
r = RasterReader('D:/tmp/girs/chirps_basin/chirps-v2.0.2016.01.10.tif')
print r.get_raster_size()

Output:

(17, 14)

Pixel size

from girs.rast.raster import RasterReader
r = RasterReader('D:/tmp/girs/chirps_basin/chirps-v2.0.2016.01.10.tif')
print r.get_pixel_size()

Output:

(27452.34389348292, 27452.34389348292)

Extent

from girs.rast.raster import RasterReader
r = RasterReader('D:/tmp/girs/chirps_basin/chirps-v2.0.2016.01.10.tif')
print r.get_extent()

Output:

(252029.43217803087, 718719.2783672406, 7632902.391839517, 8017235.206348279)

Geotransform

from girs.rast.raster import RasterReader
r = RasterReader('D:/tmp/girs/chirps_basin/chirps-v2.0.2016.01.10.tif')
print r.get_geotransform()

Output:

(252029.43217803087, 27452.34389348292, 0.0, 8017235.206348279, 0.0, -27452.34389348292)

Coordinate system

from girs.rast.raster import RasterReader
from girs.srs import srs_from_wkt
r = RasterReader('D:/tmp/girs/chirps_basin/chirps-v2.0.2016.01.10.tif')
print srs_from_wkt(r.get_coordinate_system())

Output:

PROJCS["WGS 84 / UTM zone 23S",
    GEOGCS["WGS 84",
        DATUM["WGS_1984",
            SPHEROID["WGS 84",6378137,298.257223563,
                AUTHORITY["EPSG","7030"]],
            AUTHORITY["EPSG","6326"]],
        PRIMEM["Greenwich",0,
            AUTHORITY["EPSG","8901"]],
        UNIT["degree",0.0174532925199433,
            AUTHORITY["EPSG","9122"]],
        AUTHORITY["EPSG","4326"]],
    PROJECTION["Transverse_Mercator"],
    PARAMETER["latitude_of_origin",0],
    PARAMETER["central_meridian",-45],
    PARAMETER["scale_factor",0.9996],
    PARAMETER["false_easting",500000],
    PARAMETER["false_northing",10000000],
    UNIT["metre",1,
        AUTHORITY["EPSG","9001"]],
    AXIS["Easting",EAST],
    AXIS["Northing",NORTH],
    AUTHORITY["EPSG","32723"]]