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.1.tar.gz (888.9 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.1-cp39-abi3-win_amd64.whl (3.1 MB view details)

Uploaded CPython 3.9+Windows x86-64

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

Uploaded CPython 3.9+macOS 11.0+ ARM64

surtgis-1.2.1-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.1.tar.gz.

File metadata

  • Download URL: surtgis-1.2.1.tar.gz
  • Upload date:
  • Size: 888.9 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.1.tar.gz
Algorithm Hash digest
SHA256 444ccc45688e6c68e64c08b240eacd1692d49994d405aa109c2382f772b515b1
MD5 207f2991bfd86030ead322abefbf5ae7
BLAKE2b-256 374d3dd96d0ca4381a4d2a91ea08479d1c37ac2476d57c59c6dc8128053c81a8

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: surtgis-1.2.1-cp39-abi3-win_amd64.whl
  • Upload date:
  • Size: 3.1 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.1-cp39-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 831fe29c62e4a560f4e356cb8010e37b60f8850b1b3fca17d55a7e9d15748a21
MD5 42bb7389c4061c5891061f726ba77b1a
BLAKE2b-256 aae8bf597d51ab78109ddf0bb59afca645fabf4e82f293641bc314c9e5ce90ec

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for surtgis-1.2.1-cp39-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 94d7d02e1e955bfd7f0b36b5e573413524740e4694f9017b929f00c333ead577
MD5 df583be5bf490a2d47194d36f180572c
BLAKE2b-256 aa36bfd74534532b4d5dd2b42648a95249fa656e5c6b0b40d877d839f5348012

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for surtgis-1.2.1-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 18581c9779a139a15edecb02f7a81c4f3d8562a0291f023c9f9cf27aeed61cb7
MD5 1f00f4dec6026af4a49c7fd32aa1783a
BLAKE2b-256 a5157ffc33e41f520b559f8b44fc60f468f69d0e6df2b162dc5770b0b2ac43e2

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for surtgis-1.2.1-cp39-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9cd61ef8053d8c2ddf78ede77d9916f2431a2ccf2cc505fe3c69e55cb28a9c97
MD5 a89d79eacc2aa66b141e7b9efb88d70d
BLAKE2b-256 512d4cf4d3686bbcb6beec6183680bc6f9bb88490d8611864e0377eae0f70f31

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for surtgis-1.2.1-cp39-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 bc666eec64dc4ae42a4e2b5c30816a5e3019c96a16251b7a04011171e709cc7b
MD5 9e5afdea0f4a36420f2a495603832e73
BLAKE2b-256 10486755825bab685b0c3af996ef8da63ccdec58ac79a43a51324f8608a4d322

See more details on using hashes here.

Provenance

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

1.2.2

6 files

This release

1.2.1 This release

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