Skip to main content

Sudan-focused Python toolkit for Geomatics: GIS, remote sensing, and surveying workflows.

Project description

SudaPy

Sudan-focused Python toolkit for Geomatics -- GIS, remote sensing, and surveying workflows that are fast, reliable, reproducible, and easy to install.

SudaPy is designed for Sudanese GIS professionals who need a single toolkit that works on Windows, handles common coordinate systems used in Sudan, and provides both a Python API and a friendly command-line interface.

Features

  • Built-in CRS presets for Sudan (WGS 84 UTM 34-36N, Adindan UTM 35-36N)
  • Vector operations: reproject, clip, dissolve, area calculation
  • Raster operations: clip by vector, reproject
  • Quick map export (PNG or interactive HTML)
  • Offline-friendly installation support
  • Modern Python packaging with optional extras

Installation

From PyPI (recommended)

# Core toolkit
pip install sudapy

# With remote-sensing extras
pip install "sudapy[rs]"

# With visualization extras
pip install "sudapy[viz]"

# Everything
pip install "sudapy[all]"

Using conda for geospatial dependencies

Some geospatial libraries (GDAL, rasterio, fiona) can be difficult to install from pip on Windows. Using conda or mamba to install binary dependencies first is recommended:

conda create -n sudapy python=3.11
conda activate sudapy
conda install -c conda-forge geopandas rasterio fiona pyproj
pip install sudapy

Offline installation

See INSTALL_OFFLINE.md for instructions on installing SudaPy without internet access.

Quickstart

1. Check your environment

sudapy info

2. Find the right CRS for a location in Sudan

# What UTM zone covers Khartoum?
sudapy crs suggest --lon 32.5 --lat 15.6

3. Reproject a vector file

sudapy vector reproject --in data/regions.gpkg --out data/regions_utm.gpkg --to 32636

4. Calculate area

sudapy vector area --in data/parcels.gpkg --field area_m2 --out data/parcels_area.gpkg

5. Quick map

# Static PNG
sudapy map quick --in data/regions.gpkg --out map.png

# Interactive HTML
sudapy map quick --in data/regions.gpkg --out map.html

Python API

from sudapy.crs.registry import suggest_utm_zone, list_presets
from sudapy.vector.ops import reproject, calculate_area, clip, dissolve

# Suggest CRS for a point
suggestions = suggest_utm_zone(lon=32.5, lat=15.6)

# Reproject a file
gdf = reproject("input.gpkg", to_epsg=32636, out="output.gpkg")

# Calculate area with automatic UTM projection
gdf = calculate_area("parcels.gpkg", field="area_m2", out="parcels_area.gpkg")

Project Structure

src/sudapy/
    __init__.py
    core/
        logging.py      # Rich-based logging
        errors.py       # Custom exceptions with hints
    cli/
        main.py         # Typer CLI application
    crs/
        registry.py     # Sudan CRS presets and UTM suggestion
    vector/
        ops.py          # Vector geoprocessing
    raster/
        ops.py          # Raster geoprocessing
    viz/
        maps.py         # Quick map visualization

Development

git clone https://github.com/sudapy/sudapy.git
cd sudapy
pip install -e ".[dev,all]"
pytest
ruff check src/ tests/

License

MIT

Project details


Download files

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

Source Distribution

sudapy-1.0.0.tar.gz (16.0 kB view details)

Uploaded Source

Built Distribution

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

sudapy-1.0.0-py3-none-any.whl (15.3 kB view details)

Uploaded Python 3

File details

Details for the file sudapy-1.0.0.tar.gz.

File metadata

  • Download URL: sudapy-1.0.0.tar.gz
  • Upload date:
  • Size: 16.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.0

File hashes

Hashes for sudapy-1.0.0.tar.gz
Algorithm Hash digest
SHA256 82fe9bd8287c1afaa2d144dd884568c9418478099f383efdc4e8309ab8a45306
MD5 c749a607226068838d7d67710d96f14e
BLAKE2b-256 7f72a445e6fd434a5f3b78322a30dee91f6d2f0a3c9824b21f0b7a13bc8d0df0

See more details on using hashes here.

File details

Details for the file sudapy-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: sudapy-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 15.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.0

File hashes

Hashes for sudapy-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 9203c9e8e4dbcb3b406185e5d36231dfaace174ba012efd9475ec73d102b39a9
MD5 9b14c52f70061b51a0a5174c328c18c5
BLAKE2b-256 ced4611e1ddad6d730e6f791d33713f9e36416deeeb5b15a6545708f98f57a09

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page