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.2.tar.gz (892.0 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.2-cp39-abi3-win_amd64.whl (3.2 MB view details)

Uploaded CPython 3.9+Windows x86-64

surtgis-1.2.2-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.2-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.2-cp39-abi3-macosx_11_0_arm64.whl (2.9 MB view details)

Uploaded CPython 3.9+macOS 11.0+ ARM64

surtgis-1.2.2-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.2.tar.gz.

File metadata

  • Download URL: surtgis-1.2.2.tar.gz
  • Upload date:
  • Size: 892.0 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.2.tar.gz
Algorithm Hash digest
SHA256 ebbbf6df6f56f4c9198fa067c18179292eafdbbc0b6f0e8faf2b129439169cbd
MD5 b05bed38614f468e01af4abc680968ee
BLAKE2b-256 8b6800da2213c70ced5e94fd84d4961ee187c141458d7ac20c8ba284a9cc0376

See more details on using hashes here.

Provenance

The following attestation bundles were made for surtgis-1.2.2.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.2-cp39-abi3-win_amd64.whl.

File metadata

  • Download URL: surtgis-1.2.2-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.2-cp39-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 0269b5c1b9105b54965f0e38dd56494abb37acf201195469fb204c4763433e23
MD5 cf0402a078f2b4fbac489788be872795
BLAKE2b-256 6c1e2afcd8b7a52bdf83e62c2e840e54998dee1e86abea8ab4903148158c1998

See more details on using hashes here.

Provenance

The following attestation bundles were made for surtgis-1.2.2-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.2-cp39-abi3-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for surtgis-1.2.2-cp39-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 f38005237356065e8d41212a9342098c69b92993d72a5522f35f708b1e004c23
MD5 ab40b713299d9b144621eee7fad68268
BLAKE2b-256 2aa72f8240a09844d853456dd6adb3fd43ab6c1bd14fa9266bff15bc37ebd926

See more details on using hashes here.

Provenance

The following attestation bundles were made for surtgis-1.2.2-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.2-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for surtgis-1.2.2-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0d0f9c2dd9d83cd28930ea0493e3061f468905a2de85ff671d9f17a14ab14ab7
MD5 4c96d6e4dc5cafe34e8ca96ca6c5b5d3
BLAKE2b-256 3c9f84205a9bb60d7971e630da9704026a117b93390c9dda18d30b6944a60706

See more details on using hashes here.

Provenance

The following attestation bundles were made for surtgis-1.2.2-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.2-cp39-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for surtgis-1.2.2-cp39-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5b299acb52f156807f92d9faac99f8d6a9894bf5d8efdd92d2931f816dfab4c8
MD5 f156e200fed29324ce0099c5bbc208b9
BLAKE2b-256 c52d42c45a670e781dc4f9590a76bcddbe7f2690425140bfb67bf6c9af10dfdc

See more details on using hashes here.

Provenance

The following attestation bundles were made for surtgis-1.2.2-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.2-cp39-abi3-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for surtgis-1.2.2-cp39-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 4d896e8f8ea2c76f0d3b5b484d567e095e5dee9e5189df94bad7a3aa3d00da1e
MD5 c208191110a781552efc0d3434d3ce33
BLAKE2b-256 2b7e5e879f97a91697551af2b8718304e862d608e7394b18bb3c954aeb9f67e7

See more details on using hashes here.

Provenance

The following attestation bundles were made for surtgis-1.2.2-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

1.2.5

6 files

1.2.4

6 files

1.2.3

6 files

This release

1.2.2 This release

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