Skip to content

erikabarker/gdalgui

Repository files navigation

GDAL GUI

Professional geospatial data processing interface built with GDAL, FastAPI, and React. 1765754782990

Overview

GDAL GUI provides a modern, user-friendly interface for geospatial data processing operations. The application combines the power of the Geospatial Data Abstraction Library (GDAL) with contemporary web technologies to enable efficient analysis and transformation of raster and vector data.

Developed at the University of Miami, this open-source project demonstrates professional software engineering practices for geospatial applications.

Features

Inspection Operations

  • Raster Information: Extract comprehensive metadata from raster files (dimensions, projection, band information)
  • Vector Information: Retrieve layer details, feature counts, and projection information from vector data
  • Raster Statistics: Calculate min, max, mean, and standard deviation for raster bands

Visualization Operations

  • Hillshade Generation: Create shaded relief maps from digital elevation models with customizable azimuth and altitude
  • Color Relief: Apply terrain, rainbow, or grayscale color schemes to elevation data
  • Slope Calculation: Generate slope maps in degrees or percent from elevation data
  • Aspect Calculation: Compute aspect (direction of slope) from digital elevation models

Transformation Operations

  • Format Conversion: Convert between geospatial formats (GeoTIFF, PNG, JPEG, etc.)
  • Coordinate Reprojection: Reproject rasters to different coordinate reference systems
  • Raster Clipping: Clip raster data by bounding box coordinates

Extraction Operations

  • Polygonize: Convert raster data to polygon vector features
  • Contour Generation: Create contour lines from elevation data with customizable intervals
  • Buffer: Generate buffer zones around vector features

Integration Operations

  • Vector Rasterization: Convert vector geometries to raster format with custom dimensions

Additional Features

  • Professional web-based interface with IBM Carbon Design System
  • RESTful API for programmatic access
  • Type-safe TypeScript frontend
  • Comprehensive documentation and deployment guides

Architecture

The application follows a client-server architecture with clear separation of concerns:

  • Backend: FastAPI 0.104.1 REST API with GDAL 3.12.0 integration
  • Frontend: React 18 with TypeScript compiled by Vite
  • Communication: HTTP/JSON over localhost or network
  • Design: IBM Carbon Design System principles

Project Structure

GDAL-GUI/
├── backend/              # Python FastAPI application
├── frontend/             # React TypeScript application
├── docs/                 # Documentation
├── tests/                # Test suite
├── requirements.txt      # Python dependencies
├── setup.sh             # Installation script
├── start-dev.sh         # Development launcher
└── README.md            # This file

Requirements

System

  • Python 3.11 or higher
  • Node.js 18 or higher
  • GDAL 3.12 or higher (with Python bindings)

Platform Support

  • macOS 12.0+
  • Ubuntu 20.04 LTS+
  • CentOS/RHEL 8+
  • Windows 10/11 (via WSL2 or native setup)

Installation

Quick Start

  1. Clone the repository:
git clone https://github.com/your-org/gdal-gui.git
cd gdal-gui
  1. Run the setup script:
bash setup.sh
  1. Activate the virtual environment:
source venv/bin/activate

Manual Installation

⚠️ IMPORTANT - GDAL Installation: GDAL cannot be reliably installed via pip. Use conda instead (see below).

Option 1: Conda Environment (Recommended)

# Create and activate conda environment
conda create -n gdal_cf python=3.11
conda activate gdal_cf

# Add conda-forge channel and install GDAL
conda config --env --add channels conda-forge
conda config --env --set channel_priority strict
conda install gdal libgdal-netcdf libgdal-grib

# Install other Python dependencies
pip install fastapi==0.104.1 uvicorn==0.24.0 python-multipart==0.0.6

# Install frontend dependencies
cd frontend
npm install
cd ..

Option 2: System GDAL + Virtual Environment

  1. Install GDAL via system package manager (see docs/GDAL_INSTALLATION.md)

  2. Create virtual environment:

python -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate
  1. Install Python dependencies:
pip install fastapi uvicorn python-multipart

Note: GDAL must be installed separately. See docs/GDAL_INSTALLATION.md for platform-specific instructions.

  1. Install frontend dependencies:
cd frontend
npm install
cd ..

Development

Start Development Servers

Option 1 - Use provided script:

bash start-dev.sh

Option 2 - Manual startup:

# Terminal 1 - Backend
source venv/bin/activate
python -m uvicorn backend.main:app --reload

# Terminal 2 - Frontend
cd frontend
npm run dev

Access the application at: http://127.0.0.1:5173

Building for Production

Build frontend:

cd frontend
npm run build

Output is in frontend/dist/

API Reference

Health Check

Check API availability and GDAL version:

GET /api/v1/health

Response:
{
  "status": "healthy",
  "service": "GDAL GUI API",
  "version": "1.0.0",
  "gdal_version": "3.12.0"
}

Raster Operations

Get raster metadata:

POST /api/v1/raster/info
Content-Type: multipart/form-data

file: <raster_file>

Response:
{
  "driver": "GTiff",
  "width": 512,
  "height": 512,
  "bands": 1,
  "data_type": "Float32"
}

Generate hillshade from DEM:

POST /api/v1/raster/hillshade
Content-Type: multipart/form-data

file: <dem_file>
azimuth: 315 (optional)
altitude: 45 (optional)

Convert raster format:

POST /api/v1/raster/translate
Content-Type: multipart/form-data

file: <raster_file>
output_format: GTiff (optional, default)

Vector Operations

Get vector metadata:

POST /api/v1/vector/info
Content-Type: multipart/form-data

file: <vector_file>

Response:
{
  "driver": "ESRI Shapefile",
  "layer_count": 1,
  "feature_count": 150
}

Documentation

  • README.md - Project overview (this file)
  • LICENSE - MIT License
  • CONTRIBUTING.md - Contribution guidelines
  • docs/DEVELOPMENT.md - Development guide and best practices
  • docs/DEPLOYMENT.md - Production deployment instructions
  • docs/GDAL_INSTALLATION.md - GDAL setup for different platforms
  • PROJECT_SUMMARY.md - Detailed project summary

Testing

Run backend tests:

pytest tests/

Run frontend tests:

cd frontend
npm test

Contributing

Contributions are welcome. Please follow these guidelines:

  1. Read CONTRIBUTING.md
  2. Fork the repository
  3. Create a feature branch
  4. Make your changes
  5. Ensure tests pass
  6. Submit a pull request

License

This project is licensed under the MIT License. See the LICENSE file for the complete license text.

Authors

  • Erika Barker, University of Miami

Citation

If you use GDAL GUI in your research or project, please cite:

@software{barker2025gdal,
  author = {Barker, Erika},
  title = {GDAL GUI: Professional Geospatial Data Processing Interface},
  year = {2025},
  organization = {University of Miami},
  url = {https://github.com/your-org/gdal-gui}
}

Or in plain text:

Barker, E. (2025). GDAL GUI: Professional Geospatial Data Processing Interface.
University of Miami. Retrieved from https://github.com/your-org/gdal-gui

Support

For issues, feature requests, or questions:

  1. Check existing issues and documentation
  2. Review CONTRIBUTING.md for contribution guidelines
  3. Create a new issue with detailed information
  4. Contact maintainers for security issues

Acknowledgments

This project utilizes:

Project Status

Item Status
Version 1.0.0
License MIT
Release Date December 2025
Maintenance Active
Python 3.11+
Node.js 18+
GDAL 3.12+

Roadmap

Future enhancements include:

  • Additional GDAL operations (mosaic, warp, advanced filtering)
  • Advanced visualization with interactive map previews
  • Multi-file batch processing
  • User authentication and project management
  • Cloud storage integration (S3, Azure Blob Storage)
  • Real-time progress monitoring for large operations
  • Performance optimizations for large datasets
  • WebAssembly GDAL integration for client-side processing

See PROJECT_SUMMARY.md for additional details.

About

Professional geospatial data processing interface built with GDAL, FastAPI, and React

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors