Tools for working with Geographical Information System Rasters
Project description
The GeoRasters package 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 to
- Merge rasters
- Plot rasters
- Extract information from rasters
- Given a point (lat,lon) find its location in a raster
- Aggregate rasters to lower resolutions
- Align two rasters of different sizes to common area and size
- Get all the geographical information of raster
- Create GeoTiff files easily
- Load GeoTiff files as masked numpy rasters
- Clip raster using geometries
- Get zonal statistics using geometries
- Spatial analysis tools
Install
pip install git+git://github.com/ozak/georasters.git pip install georasters
Example Usage: GeoRasters
import georasters as gr # Load data raster = './data/slope.tif' data = gr.from_file(raster) # Plot data data.plot() # Get some stats data.mean() data.sum() data.std() # Convert to Pandas DataFrame df = data.to_pandas() # Save transformed data to GeoTiff data2 = data**2 data2.to_tiff('./data2') # Algebra with rasters data3 = np.sin(data.raster) / data2 data3.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:
import os import georasters as gr import matplotlib.pyplot as plt DATA = "/path/to/tiff/files" # Import raster raster = os.path.join(DATA, 'pre1500.tif') data = gr.from_file(raster) (xmin, xsize, x, ymax, y, ysize) = data.geot # Split raster in two data1 = 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 them plt.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 raster data3 = data1.union(data2) # Plot it and save the figure plt.figure(figsize=(12,8)) data3.plot() plt.savefig(os.path.join(DATA,'data3.png'), bbox_inches='tight')
Another Merge:
Example Usage: Other functions
import georasters as gr # Get info on raster NDV, xsize, ysize, GeoT, Projection, DataType = gr.get_geo_info(raster) # Load raster data = load_tiff(raster) # Find location of point (x,y) on raster, e.g. to extract info at that location col, 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. 10 gr.aggregate(data,NDV,(10,10)) # Align two rasters data2 = load_tiff(raster2) (alignedraster_o, alignedraster_a, GeoT_a) = gr.align_rasters(raster, raster2, how=np.mean) # Create GeoRaster A=gr.GeoRaster(data, GeoT, nodata_value=NDV) # Load another raster NDV, xsize, ysize, GeoT, Projection, DataType = gr.get_geo_info(raster2) data = load_tiff(raster2) B=gr.GeoRaster(data2, GeoT, nodata_value=NDV) # Plot Raster A.plot() # Merge both rasters and plot C=B.merge(A) C.plot()
Issues
Find a bug? Report it via github issues by providing
- a link to download the smallest possible raster and vector dataset necessary to reproduce the error
- python code or command to reproduce the error
- information on your environment: versions of python, gdal and numpy and system memory
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Filename, size | File type | Python version | Upload date | Hashes |
---|---|---|---|---|
Filename, size georasters-0.5.23-py2.py3-none-any.whl (30.2 kB) | File type Wheel | Python version py2.py3 | Upload date | Hashes View |
Filename, size georasters-0.5.23.tar.gz (32.2 kB) | File type Source | Python version None | Upload date | Hashes View |
Close
Hashes for georasters-0.5.23-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b4144f0c40a9377619eaa72cf1406409b8a6985ce43dfddbd7ad46f71342406a |
|
MD5 | ae8a7e70c131e64d624a38b8d3a7acd9 |
|
BLAKE2-256 | 7fe5ea03f43af96daf9bb8a4591be3e52d03bf0d0291f6b46bfad2c5f362d51c |