Skip to main content

surtgis

High-performance geospatial analysis library for Python, powered by Rust.

SurtGIS provides 40+ terrain, hydrology, and imagery algorithms with native performance through PyO3 bindings.

Installation

pip install surtgis

Quick Start

import numpy as np
import surtgis

# Create a sample DEM (100x100 grid)
dem = np.random.rand(100, 100) * 100  # Elevation in meters
cell_size = 30.0  # 30m resolution

# Compute terrain derivatives
slope = surtgis.slope(dem, cell_size)
aspect = surtgis.aspect_degrees(dem, cell_size)
hillshade = surtgis.hillshade_compute(dem, cell_size, azimuth=315.0, altitude=45.0)

# Curvature analysis
profile_curv = surtgis.curvature_compute(dem, cell_size, ctype="profile")
plan_curv = surtgis.curvature_compute(dem, cell_size, ctype="plan")

# Advanced Florinsky curvatures (14 types available)
mean_h = surtgis.advanced_curvature(dem, cell_size, ctype="mean_h")
gaussian_k = surtgis.advanced_curvature(dem, cell_size, ctype="gaussian_k")

# Hydrology
twi = surtgis.twi_compute(dem, cell_size)  # Topographic Wetness Index
hand = surtgis.hand_compute(dem, cell_size)  # Height Above Nearest Drainage

print(f"Slope range: {slope.min():.1f} - {slope.max():.1f}")
print(f"TWI range: {twi.min():.2f} - {twi.max():.2f}")

Available Functions

Terrain Analysis (21 functions)

Function Description
slope(dem, cell_size) Slope in degrees or percent
aspect_degrees(dem, cell_size) Aspect in degrees (0-360)
hillshade_compute(dem, cell_size, azimuth, altitude) Analytical hillshade
multidirectional_hillshade(dem, cell_size) Multi-azimuth hillshade
curvature_compute(dem, cell_size, ctype) Profile, plan, or general curvature
advanced_curvature(dem, cell_size, ctype) 14 Florinsky curvatures
tpi_compute(dem, cell_size, radius) Topographic Position Index
tri_compute(dem, cell_size) Terrain Ruggedness Index
dev_compute(dem, cell_size, radius) Deviation from Mean Elevation
vrm_compute(dem, cell_size, radius) Vector Ruggedness Measure
geomorphons_compute(dem, cell_size, flatness, radius) Landform classification
mrvbf_compute(dem, cell_size) Multi-resolution Valley Bottom Flatness
northness_compute(dem, cell_size) Cosine of aspect
eastness_compute(dem, cell_size) Sine of aspect
shape_index_compute(dem, cell_size) Shape index
curvedness_compute(dem, cell_size) Curvedness
sky_view_factor_compute(dem, cell_size) Sky View Factor
viewshed_compute(dem, cell_size, observer_row, observer_col) Line-of-sight visibility
openness_positive(dem, cell_size) Positive openness
openness_negative(dem, cell_size) Negative openness
uncertainty_slope(dem, cell_size, dem_rmse) Slope uncertainty from DEM error

Hydrology (9 functions)

Function Description
fill_depressions(dem, cell_size) Planchon-Darboux sink filling
priority_flood_fill(dem, cell_size) Priority-Flood (Barnes 2014)
breach_fill(dem, cell_size) Breach depressions (Lindsay 2016)
flow_direction_d8(dem, cell_size) D8 flow direction
flow_accumulation_d8(fdir, cell_size) D8 flow accumulation
flow_accumulation_mfd_compute(dem, cell_size) Multi-flow direction accumulation
twi_compute(dem, cell_size) Topographic Wetness Index
hand_compute(dem, cell_size) Height Above Nearest Drainage
stream_network_compute(dem, cell_size, threshold) Stream network extraction

Imagery (4 functions)

Function Description
ndvi_compute(nir, red) Normalized Difference Vegetation Index
ndwi_compute(green, nir) Normalized Difference Water Index
savi_compute(nir, red, l_factor) Soil-Adjusted Vegetation Index
normalized_diff(a, b) Generic normalized difference

Morphology (4 functions)

Function Description
morph_erode(data, radius) Morphological erosion
morph_dilate(data, radius) Morphological dilation
morph_opening(data, radius) Morphological opening
morph_closing(data, radius) Morphological closing

Statistics (3 functions)

Function Description
focal_mean(data, radius) Focal mean
focal_std(data, radius) Focal standard deviation
focal_range(data, radius) Focal range (max - min)

Advanced Curvature Types

The advanced_curvature function supports 14 curvature types from Florinsky (2025):

  • mean_h - Mean curvature H
  • gaussian_k - Gaussian curvature K
  • unsphericity_m - Unsphericity M
  • difference_e - Difference curvature E
  • minimal_kmin - Minimal principal curvature
  • maximal_kmax - Maximal principal curvature
  • horizontal_kh - Horizontal (plan) curvature
  • vertical_kv - Vertical (profile) curvature
  • horizontal_excess_khe - Horizontal excess curvature
  • vertical_excess_kve - Vertical excess curvature
  • accumulation_ka - Accumulation curvature
  • ring_kr - Ring curvature
  • rotor - Rotor (flow-line torsion)
  • laplacian - Laplacian

Performance

SurtGIS is 5-10x faster than pure Python implementations thanks to Rust's zero-cost abstractions and automatic parallelization via Rayon.

License

MIT OR Apache-2.0

Download files

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

Source Distribution

surtgis-1.2.5.tar.gz (902.5 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

surtgis-1.2.5-cp39-abi3-win_amd64.whl (3.2 MB view details)

Uploaded CPython 3.9+Windows x86-64

surtgis-1.2.5-cp39-abi3-musllinux_1_2_x86_64.whl (3.4 MB view details)

Uploaded CPython 3.9+musllinux: musl 1.2+ x86-64

surtgis-1.2.5-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.2 MB view details)

Uploaded CPython 3.9+manylinux: glibc 2.17+ x86-64

surtgis-1.2.5-cp39-abi3-macosx_11_0_arm64.whl (2.9 MB view details)

Uploaded CPython 3.9+macOS 11.0+ ARM64

surtgis-1.2.5-cp39-abi3-macosx_10_12_x86_64.whl (3.1 MB view details)

Uploaded CPython 3.9+macOS 10.12+ x86-64

File details

Details for the file surtgis-1.2.5.tar.gz.

File metadata

  • Download URL: surtgis-1.2.5.tar.gz
  • Upload date:
  • Size: 902.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for surtgis-1.2.5.tar.gz
Algorithm Hash digest
SHA256 7e6d3da08d0b5e23ce309ffe0a2d5e00601353c77a288aff2668f9a50586c464
MD5 b523469e60e3265c4b60bda7b19135ab
BLAKE2b-256 fd03b2668ed401e558fe372f27df007e12447a00a1250ded73c85eeae1280982

See more details on using hashes here.

Provenance

The following attestation bundles were made for surtgis-1.2.5.tar.gz:

Publisher: python-release.yml on franciscoparrao/surtgis

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file surtgis-1.2.5-cp39-abi3-win_amd64.whl.

File metadata

  • Download URL: surtgis-1.2.5-cp39-abi3-win_amd64.whl
  • Upload date:
  • Size: 3.2 MB
  • Tags: CPython 3.9+, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for surtgis-1.2.5-cp39-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 3af2fc122dedff59c0198be59bab22ba1071d1d7d5eee15564f88419aafb52c2
MD5 9bfd1c1148e247ce2efd0ae21e5c101b
BLAKE2b-256 c76551cd9c883981873f1f3bd2ab9e2b11a52b14ca2230d135087d406b83ea7b

See more details on using hashes here.

Provenance

The following attestation bundles were made for surtgis-1.2.5-cp39-abi3-win_amd64.whl:

Publisher: python-release.yml on franciscoparrao/surtgis

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file surtgis-1.2.5-cp39-abi3-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for surtgis-1.2.5-cp39-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 279ba86ad0014242e5c48fa7a626055ce11c36722e4d698e0399b19418037dbf
MD5 f75ac04975fcd869a4dfbf2f4b2ee418
BLAKE2b-256 8c03d5b5929cf8e1dc0d54ed3527419c55838a31c521e6262394100c2e145386

See more details on using hashes here.

Provenance

The following attestation bundles were made for surtgis-1.2.5-cp39-abi3-musllinux_1_2_x86_64.whl:

Publisher: python-release.yml on franciscoparrao/surtgis

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file surtgis-1.2.5-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for surtgis-1.2.5-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8ddfe0e36e0394212d16301d1ffda8d9010f5b430038e92477907e8d606a38b6
MD5 dc45d4fbdaca1991a2c7e53c4cc75a4c
BLAKE2b-256 54ef9e552e0b47142d1b140aa74a82c9cc2c121a2459abe270c1d95a4143e727

See more details on using hashes here.

Provenance

The following attestation bundles were made for surtgis-1.2.5-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: python-release.yml on franciscoparrao/surtgis

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file surtgis-1.2.5-cp39-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for surtgis-1.2.5-cp39-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 dfe00f890f5d03334ddf197e3463a1e4a65b4ae276c28264b07bc9f5d75e6da3
MD5 23d15c6ff27e190c30472226325f4599
BLAKE2b-256 f07b52a9a4c1071464e0e2d508cba7efe55f3455beb5a37b6615e7f708a8513f

See more details on using hashes here.

Provenance

The following attestation bundles were made for surtgis-1.2.5-cp39-abi3-macosx_11_0_arm64.whl:

Publisher: python-release.yml on franciscoparrao/surtgis

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file surtgis-1.2.5-cp39-abi3-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for surtgis-1.2.5-cp39-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 f14fb3381d758f2d6041c451687f28ec4d3437b9393fff9e9e23f9a852a9ef60
MD5 b4c1544e6f401b5df148ff7797cdf4d0
BLAKE2b-256 5ac594825f746bdbf353bdb2527ec597b4da645407838625e426884c32212adf

See more details on using hashes here.

Provenance

The following attestation bundles were made for surtgis-1.2.5-cp39-abi3-macosx_10_12_x86_64.whl:

Publisher: python-release.yml on franciscoparrao/surtgis

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

1.2.5 This release

6 files

1.2.4

6 files

1.2.3

6 files

1.2.2

6 files

1.2.1

6 files

1.2.0

6 files

1.1.0

6 files

1.0.0

6 files

0.18.0

6 files

0.17.0

26 files

0.16.4

26 files

0.16.3

26 files

0.16.2

26 files

0.16.1

26 files

0.16.0

26 files

0.8.1

36 files

0.8.0

36 files

0.7.5

36 files

0.7.4

36 files

0.7.3

36 files

0.7.2

36 files

0.7.1

36 files

0.7.0

36 files

0.1.1

2 files

0.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page