Package: georasters
TheGeoRasterspackage is a python module that provides a fast and flexible
tool to work with GIS raster files. It provides the GeoRaster class, which makes working with rasters quite transparent and easy.
In a way it tries to do for rasters what GeoPandas does for geometries.It includes tools toMerge rastersPlot rastersExtract information from rastersGiven a point (lat,lon) find its location in a rasterAggregate rasters to lower resolutionsAlign two rasters of different sizes to common area and sizeGet all the geographical information of rasterCreate GeoTiff files easilyLoad GeoTiff files as masked numpy rastersClip raster using geometriesGet zonal statistics using geometriesSpatial analysis toolsInstallpipinstallgit+git://github.com/ozak/georasters.gitpipinstallgeorastersExample Usage: GeoRastersimportgeorastersasgr# Load dataraster='./data/slope.tif'data=gr.from_file(raster)# Plot datadata.plot()# Get some statsdata.mean()data.sum()data.std()# Convert to Pandas DataFramedf=data.to_pandas()# Save transformed data to GeoTiffdata2=data**2data2.to_tiff('./data2')# Algebra with rastersdata3=np.sin(data.raster)/data2data3.plot()# Notice that by using the data.raster object,# you can do any mathematical operation that handles# Numpy Masked Arrays# Find value at point (x,y) or at vectors (X,Y)value=data.map_pixel(x,y)Value=data.map_pixel(X,Y)Example Merge GeoRasters:importosimportgeorastersasgrimportmatplotlib.pyplotaspltDATA="/path/to/tiff/files"# Import rasterraster=os.path.join(DATA,'pre1500.tif')data=gr.from_file(raster)(xmin,xsize,x,ymax,y,ysize)=data.geot# Split raster in twodata1=gr.GeoRaster(data.raster[:data.shape[0]/2,:],data.geot,nodata_value=data.nodata_value,projection=data.projection,datatype=data.datatype,)data2=gr.GeoRaster(data.raster[data.shape[0]/2:,:],(xmin,xsize,x,ymax+ysize*data.shape[0]/2,y,ysize),nodata_value=data.nodata_value,projection=data.projection,datatype=data.datatype,)# Plot both parts and save themplt.figure(figsize=(12,8))data1.plot()plt.savefig(os.path.join(DATA,'data1.png'),bbox_inches='tight')plt.figure(figsize=(12,8))data2.plot()plt.savefig(os.path.join(DATA,'data2.png'),bbox_inches='tight')# Generate merged rasterdata3=data1.union(data2)# Plot it and save the figureplt.figure(figsize=(12,8))data3.plot()plt.savefig(os.path.join(DATA,'data3.png'),bbox_inches='tight')Another Merge:Example Usage: Other functionsimportgeorastersasgr# Get info on rasterNDV,xsize,ysize,GeoT,Projection,DataType=gr.get_geo_info(raster)# Load rasterdata=load_tiff(raster)# Find location of point (x,y) on raster, e.g. to extract info at that locationcol,row=gr.map_pixel(x,y,GeoT[1],GeoT[-1],GeoT[0],GeoT[3])value=data[row,col]# Agregate raster by summing over cells in order to increase pixel size by e.g. 10gr.aggregate(data,NDV,(10,10))# Align two rastersdata2=load_tiff(raster2)(alignedraster_o,alignedraster_a,GeoT_a)=gr.align_rasters(raster,raster2,how=np.mean)# Create GeoRasterA=gr.GeoRaster(data,GeoT,nodata_value=NDV)# Load another rasterNDV,xsize,ysize,GeoT,Projection,DataType=gr.get_geo_info(raster2)data=load_tiff(raster2)B=gr.GeoRaster(data2,GeoT,nodata_value=NDV)# Plot RasterA.plot()# Merge both rasters and plotC=B.merge(A)C.plot()IssuesFind a bug? Report it via github issues by providinga link to download the smallest possible raster and vector dataset necessary to reproduce the errorpython code or command to reproduce the errorinformation on your environment: versions of python, gdal and numpy and system memory