A python library that generates fake geospatial data
Project description
A python library that generates simple OSGeo-supported rasters and vectors. The primary purpose for this library is to help test geoprocessing functions.
Free software: BSD license
Documentation: https://fauxgeo.readthedocs.org.
Requirements
fauxgeo 0.2.3 requires
Numpy
Scipy
Matplotlib
GDAL
Installation
pip install fauxgeo
Features
Raster Class
RasterFactory Class
Vector Class
Usage
The Raster Class
import numpy as np
from affine import Affine
import gdal
# set arguments
array = np.ones((3, 3))
affine = Affine.identity()
proj = 4326
datatype = gdal.GDT_Float64
nodata_val = -9999.0
# initialize raster
raster = Raster.from_array(array, affine, proj, datatype, nodata_val)
raster = Raster.from_file('path/to/geotiff')
raster.uri # equals '/path/to/geotiff'
raster.driver # e.g. 'GTiff'
raster.dataset
raster.get_band(1) # returns 2d numpy masked array
raster.get_bands() # returns 3d numpy masked array
raster.get_nodata() # returns nodata value
raster.get_shape() # returns 2-tuple (rows, cols)
raster.get_projection()
raster.get_affine()
raster.get_bounding_box()
raster.get_cell_area()
raster2 = raster1.set_datatype(gdal.GDT_Int32)
raster2 = raster1.set_nodata(-9999)
raster2 = raster1.set_datatype_and_nodata(gdal.GDT_Int32, -9999)
# Operations
raster3 = raster1.align(raster2)
raster3 = raster1.align_to(raster2)
assert(raster3.is_aligned(raster2))
raster4 = raster3 * raster2
raster4 = raster3 / raster2
raster4 = raster3 + raster2
raster4 = raster3 - raster2
raster4 = raster3 ** raster2
raster4 = raster3 * 4.5
raster4 = 4.5 / raster3
raster4 = raster3 + 4.5
raster4 = 4.5 - raster3
raster4 = raster3 ** 4.5
raster4 = raster3.minimum(raster2)
# returns base rasters with same nodata and datatype
zeros_raster = raster3.zeros()
ones_raster = raster3.ones()
raster4 = raster3.clip('/path/to/aoi_shapefile')
raster4 = raster3.reproject(epsg_code)
reclass_table = {
1: 2,
2: 1
}
raster4 = raster3.reclass(reclass_table)
raster4 = raster3.resize_pixels(pixel_size, resample_method)
# visualization
image = raster4.get_grayscale_image() # returns PIL Image object
raster.save_raster('/path/to/dst.tif')
del raster # cleans up temporary file on object deletion or program exit
The RasterFactory Class
from affine import Affine
import gdal
# set arguments
shape = (3, 3)
affine = Affine.identity()
proj = 4326
datatype = gdal.GDT_Float64
nodata_val = -9999
# initialize factory
factory = RasterFactory(proj, datatype, nodata_val, shape[0], shape[1], affine=affine)
# create test rasters
test_raster_1 = factory.uniform(5) # returns raster with 1 band filled with 5's
test_raster_2 = factory.alternating(0, 1)
test_raster_3 = factory.random()
test_raster_4 = factory.horizontal_ramp(1, 10) # interpolated from 1 to 10 across columns
test_raster_5 = factory.vertical_ramp(1, 10) # interpolated from 1 to 10 across rows
The Vector Class
from shapely.geometry import *
# set arguments
shapely_object = Polygon([(0, 0), (0, 1), (1, 1)])
proj = 4326
# initialize vector
vector = Vector.from_shapely(shapely_object, proj)
vector = Vector.from_file('/path/to/shapefile')
shapely_object = vector.get_geometry()
vector.save_vector('/path/to/dst.shp')
del vector
Tests
python setup.py test
Planning
Add basic visualization functionality
- Raster Operations
Reclass
Overlay - intersection, union, clip
Dissolve
Buffer
Raster_to_Vector
Slope
Aspect
History
0.2.3 (2015-04-28)
Test cases added
Reverse math operations added to Raster class
0.2.0 (2015-04-21)
Local math operations added to Raster class, intergrated with Pygeoprocessing
0.1.1 (2015-03-15)
Raster, TestRaster, and RasterFactory classes added
0.1.0 (2015-01-21)
First release on PyPI.
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.