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

Uploaded CPython 3.9+Windows x86-64

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

Uploaded CPython 3.9+macOS 11.0+ ARM64

surtgis-1.2.3-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.3.tar.gz.

File metadata

  • Download URL: surtgis-1.2.3.tar.gz
  • Upload date:
  • Size: 894.3 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.3.tar.gz
Algorithm Hash digest
SHA256 e5f98a897c46cc043ece7f2e893d8f31f9b60cf69a05f643a90d29bd38cabc1d
MD5 9befe4f10f89aa316d37c1d08af311bd
BLAKE2b-256 92c927df1ddb71d6cd783048d5d682621b7fc53b822925988d3c2d09b2a45931

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: surtgis-1.2.3-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.3-cp39-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 090af9132823ddba5904208ab619f29490eeb0af46ebd9121848f095d5d95ef8
MD5 c81bb2c5d7fd9455b96782c7e150b40d
BLAKE2b-256 7c881746d6607edc3da4edc61245dc89409f8554ef8989f221cd08300c1ac734

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for surtgis-1.2.3-cp39-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 b9a756f71754142b7cd27166368c4ddfe494f2346de351c707bbeb900008f619
MD5 fba2959147ece58e59694d37b3b02c3f
BLAKE2b-256 c6fd45c5e0e4bae03788f367cd37b15d99b5aa2c683e120df6e05ffcdfadd329

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for surtgis-1.2.3-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2d4f2c41410c3d175c527738b95b4c720bca4c66185f354f36d914bd03bfe9fe
MD5 7d6e9cdd9a8d55ca5564625d5881bf6b
BLAKE2b-256 70823d01de666935330c2177de1198c176e5cb3bd464e8c77b09c91ab6b554d8

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for surtgis-1.2.3-cp39-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d9e1cebc7d0b8866b5f41939a35daa99b1b581681a0c6473588f13a80a40a404
MD5 9a831d7bc0b32825b14604d318f55f48
BLAKE2b-256 6c3fda524851162abcfff7e0d7e5b27aeae3df260c4383b18f6168f41cc2716c

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for surtgis-1.2.3-cp39-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 eed51fc931b41bc7cdeb9457e1ef537f116ce779206c4511cc1083ce8c9163e8
MD5 8f4505be98575d46d6ff1f8a8dc9a5e0
BLAKE2b-256 e886b357be8f2175b97eb52da6bcafe4ce9ce3d69e91e13de27ee08ff42075b2

See more details on using hashes here.

Provenance

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

This release

1.2.3 This release

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