Skip to main content
Python Software Foundation 20th Year Anniversary Fundraiser  Donate today!

Some geographical tools for Python developers

Project description


Some geographical tools for python developers

GitHub license Maintenance PyPI version


GisTools is a small Python library for performing geographical computations. Typically, it gathers different tools from well-known libraries such as gdal, rasterio, geopandas, fiona and shapely. It allows easily mixing operations between vectors and raster maps (multi-band raster are not supported at the moment).

Basic operations

GisTools allows some of the following operations:

  • <input type="checkbox" checked="" disabled="" /> Fast polygon intersection and split
  • <input type="checkbox" checked="" disabled="" /> Polygon partition based on graph theory (requires METIS package)
  • <input type="checkbox" checked="" disabled="" /> Basic networking (shortest path)
  • <input type="checkbox" checked="" disabled="" /> Download DEM from online databases
  • <input type="checkbox" checked="" disabled="" /> Download layers from postgis spatial database
  • <input type="checkbox" checked="" disabled="" /> Extract raster statistics with respect to vector layers (polygon/line)
  • <input type="checkbox" checked="" disabled="" /> Raster to/from polygons conversion
  • <input type="checkbox" checked="" disabled="" /> Compute horizon obstruction from DEM


See requirements.txt.

Note on GDAL

Installing GDAL through pip might be tricky as it only gets the bindings, so be sure the library is already installed on your machine, and that the headers are located in the right folder. Another solution may to install it through a third-party distribution such as conda.


Pip installation should normally take care of everything for you.

Using PIP

The easiest way to install GisTools is using pip in a terminal

$ pip install gis-tools


Example 1

Use DigitalElevationModel, PolygonLayer and ZonalStatistics classes to retrieve average slope within each polygon of a shapefile

>>> dem = gistools.raster.DigitalElevationModel("path/to/dem.tif")
>>> slope = dem.compute_slope()
>>> layer = gistools.layer.PolygonLayer("path/to/layer.shp")
>>> zonal_stat = gistools.stats.ZonalStatistics(slope, layer, is_surface_weighted=False, all_touched=True)
>>> average = zonal_stat.mean()

Example 2

Extract polygons from contour values in raster

>>> from gistools.raster import RasterMap
>>> raster = RasterMap("path/to/raster.tif", no_data_value=-9999)
>>> layer = raster.contour(0.04, False).polygonize("attribute name").to_crs(epsg=4326)

Example 3: download and build DEM tile

Build DEM tile by downloading from CGIAR website and save to file

>>> from gistools import DigitalElevationModel
>>> dem = DigitalElevationModel.from_cgiar_online_database((8, 38, 14, 42))
>>> dem.to_file("path/to/dem.tif")

Example 4: partition a polygon

Split a polygon layer into sub-polygons of equal area with respect to honeycomb mesh (requires METIS package)

>>> polygon_layer = gistools.layer.PolygonLayer("path/to/layer.geojson")
>>> new_partitioned_layer = polygon_layer.partition(threshold=2000, disaggregation_factor=20, 
                                                    split_method="hexana", contig=True)

Note on OSM

You can use the fine osmnx package to download OSM features and then use it as any other GeoLayer :

from gistools.layer import PolygonLayer
import osmnx as ox
country = PolygonLayer.from_gpd(ox.geocode_to_gdf(

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for gis-tools, version 0.17.8
Filename, size File type Python version Upload date Hashes
Filename, size gis_tools-0.17.8.tar.gz (68.0 kB) File type Source Python version None Upload date Hashes View

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring DigiCert DigiCert EV certificate Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page