.. _trasterdescription: 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)``: .. code-block:: python 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** .. code-block:: python 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) .. _trastershow: .. figure:: images/rastershow.jpg :width: 300pt **Plot** Plot has a dictionary with matplotlib axes as key and the band number as value. .. code-block:: python 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) .. _trasterplot: .. figure:: images/rasterplot.png :width: 500pt **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. .. code-block:: python 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') .. _trasteranimatedgif: .. figure:: images/chirps-v2.0.2016.gif :width: 300pt Raster properties +++++++++++++++++ Parameters ^^^^^^^^^^ Raster parameters are defined in the class .. code-block:: python 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]. .. code-block:: python 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] .. code-block:: python 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): .. code-block:: python 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 ^^^^^^^^^^ .. code-block:: python 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 ^^^^^^ .. code-block:: python 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 ^^^^^^^^^^^^ .. code-block:: python 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 ^^^^^^^^^^^^^^^^^ .. code-block:: python 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"]]