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

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.
- 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
- 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
- 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
- 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
- Vector Rasterization: Convert vector geometries to raster format with custom dimensions
- Professional web-based interface with IBM Carbon Design System
- RESTful API for programmatic access
- Type-safe TypeScript frontend
- Comprehensive documentation and deployment guides
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
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
- Python 3.11 or higher
- Node.js 18 or higher
- GDAL 3.12 or higher (with Python bindings)
- macOS 12.0+
- Ubuntu 20.04 LTS+
- CentOS/RHEL 8+
- Windows 10/11 (via WSL2 or native setup)
- Clone the repository:
git clone https://github.com/your-org/gdal-gui.git
cd gdal-gui- Run the setup script:
bash setup.sh- Activate the virtual environment:
source venv/bin/activate# 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 ..-
Install GDAL via system package manager (see
docs/GDAL_INSTALLATION.md) -
Create virtual environment:
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate- Install Python dependencies:
pip install fastapi uvicorn python-multipartNote: GDAL must be installed separately. See docs/GDAL_INSTALLATION.md for platform-specific instructions.
- Install frontend dependencies:
cd frontend
npm install
cd ..Option 1 - Use provided script:
bash start-dev.shOption 2 - Manual startup:
# Terminal 1 - Backend
source venv/bin/activate
python -m uvicorn backend.main:app --reload
# Terminal 2 - Frontend
cd frontend
npm run devAccess the application at: http://127.0.0.1:5173
Build frontend:
cd frontend
npm run buildOutput is in frontend/dist/
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"
}
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)
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
}
- 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
Run backend tests:
pytest tests/Run frontend tests:
cd frontend
npm testContributions are welcome. Please follow these guidelines:
- Read CONTRIBUTING.md
- Fork the repository
- Create a feature branch
- Make your changes
- Ensure tests pass
- Submit a pull request
This project is licensed under the MIT License. See the LICENSE file for the complete license text.
- Erika Barker, University of Miami
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
For issues, feature requests, or questions:
- Check existing issues and documentation
- Review CONTRIBUTING.md for contribution guidelines
- Create a new issue with detailed information
- Contact maintainers for security issues
This project utilizes:
- GDAL (https://gdal.org/) - Geospatial Data Abstraction Library
- FastAPI (https://fastapi.tiangolo.com/) - Modern Python web framework
- React (https://react.dev/) - JavaScript UI library
- IBM Carbon Design System (https://carbondesignsystem.com/) - Design guidelines
| Item | Status |
|---|---|
| Version | 1.0.0 |
| License | MIT |
| Release Date | December 2025 |
| Maintenance | Active |
| Python | 3.11+ |
| Node.js | 18+ |
| GDAL | 3.12+ |
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.