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.1.4 requires
NumPy
Matplotlib
GDAL
affine == 1.0
Installation
pip install fauxgeo
Features
Raster Class
RasterFactory Class
Vector Class
VectorFactory 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.get_band(1) # returns 2d numpy masked array
raster.get_bands() # returns 3d numpy masked array
raster.get_nodata() # returns nodata value
raster.shape() # returns 2-tuple (rows, cols)
# 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 == raster2
raster4 = raster3 * 4.5
raster4 = raster3 / 4.5
raster4 = raster3 + 4.5
raster4 = raster3 - 4.5
raster4 = raster3 ** 4.5
raster4 = raster3.clip('/path/to/aoi_shapefile')
raster4 = raster3.reproject(600613)
reclass_table = {
1: 2,
2: 1
}
raster4 = raster3.reclass(reclass_table)
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.1.1 (2015-03-15)
Raster, TestRaster, and RasterFactory classes added
0.1.0 (2015-01-21)
First release on PyPI.