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-37N, Adindan UTM 35-37N)
- Vector operations: reproject, clip, dissolve, area, buffer, simplify, fix-geometry
- Raster operations: clip, reproject, resample, mosaic, hillshade, slope
- Quick map export (PNG or interactive HTML)
- Project scaffolding (
sudapy init), batch processing, and data reporting - Environment diagnostics (
sudapy doctor) - Remote sensing helpers (Sentinel search/download) via optional extras
- Offline-friendly installation support
- Modern Python packaging with optional extras
Installation
Portable Windows Bundle (recommended for Windows)
Download the self-contained zip from the latest release -- no Python, pip, conda, or Visual Studio needed:
- Download SudaPy-Windows-x64.zip (~600 MB)
- Extract to
C:\SudaPy - Run
scripts\sudapy_doctor.batto verify
See INSTALL_WINDOWS.md for all Windows installation options.
From PyPI
# Core (CRS tools, CLI scaffolding, doctor) -- works everywhere, no GDAL needed
pip install sudapy
# Core + vector/raster operations (needs GDAL C libraries)
pip install "sudapy[geo]"
# Core + geo + visualization (matplotlib, folium, contextily)
pip install "sudapy[viz]"
# Everything (geo + viz + remote sensing)
pip install "sudapy[all]"
Windows note: The
[geo]extra requires GDAL C libraries. Ifpip install "sudapy[geo]"fails, use conda to install the geospatial stack first (see below). The corepip install sudapyalways works.
Using conda for geospatial dependencies (Windows)
conda create -n sudapy python=3.11
conda activate sudapy
conda install -c conda-forge geopandas rasterio fiona pyproj
pip install "sudapy[all]"
An environment.yml is included in the repository for a known-good conda environment:
conda env create -f environment.yml
conda activate sudapy
Offline installation
See Offline Installation Guide for instructions on installing SudaPy without internet access.
Quickstart
1. Check your environment
sudapy doctor
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
6. Scaffold a new project
sudapy init my_survey_project
7. Get a report on a dataset
sudapy report --in data/parcels.gpkg
Python API
from sudapy.crs.registry import suggest_utm_zone, list_presets
from sudapy.vector.ops import reproject, calculate_area, clip, dissolve, buffer, simplify
# 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")
# Buffer with meters (auto-projects if CRS is geographic)
gdf = buffer("points.gpkg", distance_m=500, out="buffered.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
rs/
sentinel.py # Sentinel satellite search & download
Development
git clone https://github.com/Osman-Geomatics93/sudapy.git
cd sudapy
pip install -e ".[dev,all]"
pytest
ruff check src/ tests/
Changelog
See CHANGELOG.md for release history.
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file sudapy-1.2.1.tar.gz.
File metadata
- Download URL: sudapy-1.2.1.tar.gz
- Upload date:
- Size: 40.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5820486205e4a26ffbf132ea5d3ae1d6cb7a14441ed336d658c6b6ae73e3d2f2
|
|
| MD5 |
127c568711639e23305c414aa2a56feb
|
|
| BLAKE2b-256 |
580fd10239649ebbbcf0c7cb7d895c2edc24890f61567f7dfe95ddac3a5cb75d
|
File details
Details for the file sudapy-1.2.1-py3-none-any.whl.
File metadata
- Download URL: sudapy-1.2.1-py3-none-any.whl
- Upload date:
- Size: 24.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
410a0f09fe6bc75dee18c2b7a369d1c7958683e20317dd8572cf9ee46c7ee9aa
|
|
| MD5 |
6ebf07ceca59a80f32911835b6834a3a
|
|
| BLAKE2b-256 |
b16fa6d526bd8f5bc3dd733f21186fc7cd2cc234e676c0de844b7ff7813f8adb
|