GeoToolKit is a comprehensive Python package that provides a unified interface for common GIS operations using both ArcPy and GDAL/Open Source implementations. It aims to simplify geospatial workflows while maintaining flexibility in choosing the underlying GIS engine.
Note: This package is still in development and is subject to change. As a small side project, I'm not planning on releasing a stable version....It works for me, so I'm just sharing it. :)
- Dual Engine Support: Seamlessly switch between ArcPy and GDAL implementations
- Automated Engine Detection: Automatically selects available GIS engine
- Comprehensive Tools:
- Data Preprocessing
- Spatial Analysis
- Raster Processing
- Quality Control
- Batch Processing
- Data Integration
- Python 3.10+
- GDAL 3.0+ (for GDAL engine)
- ArcGIS Pro 2.5+ (for ArcPy engine)
- NumPy
- Pandas
- GeoPandas
- Rasterio
Note: The current install process is a bit buggy, and needs some attention. Currently I would recommend following the typical development setup process.
# Basic installation with GDAL support
pip install geotoolkit
# Full installation with all optional dependencies
pip install geotoolkit[all]
# ArcPy-only installation
pip install geotoolkit[arcpy]
from geotoolkit import Preprocessor, Analyzer, RasterTools
# Initialize with automatic engine detection
preprocessor = Preprocessor()
# Or specify your preferred engine
preprocessor = Preprocessor(engine='gdal')
# Clean field names in a dataset
preprocessor.clean_field_names("input_data.shp")
# Perform spatial analysis
analyzer = Analyzer()
results = analyzer.calculate_statistics("analysis_layer.shp")
from geotoolkit.utils.config import ConfigManager
# Configure default engine
config = ConfigManager()
config.update_config(
preferred_engine='gdal',
max_threads=8,
workspace='/path/to/workspace'
)
geotoolkit/
├── core/ # Core functionality and abstractions
├── engines/ # Engine-specific implementations
├── interfaces/ # User-facing interfaces
├── utils/ # Utility functions and helpers
├── tests/ # Test suite
└── examples/ # Usage examples and notebooks
GeoToolKit can be configured through the ConfigManager
:
from geotoolkit.utils.config import ConfigManager
config = ConfigManager()
config.update_config(
preferred_engine='gdal', # 'gdal', 'arcpy', or 'auto'
max_threads=4,
log_level='INFO',
workspace='/path/to/workspace'
)
Comprehensive documentation will eventually be available somewhere.
# Run all tests
pytest
# Run specific test suite
pytest tests/test_gdal/
pytest tests/test_arcpy/
Contributions are welcome! Please read our Contributing Guidelines for details on how to submit pull requests, report issues, and contribute to the project.
# Clone the repository
git clone https://github.com/yourusername/geotoolkit.git
cd geotoolkit
# Create a virtual environment
python -m venv venv
source venv/bin/activate # Linux/Mac
# or
.\venv\Scripts\activate # Windows
# Install development dependencies
pip install -r requirements.txt
This project is licensed under the MIT License - see the LICENSE file for details.
- Correct bugs and improve existing features (Always ongoing)
- Implement testing and code coverage
- Better workspace support and improvements
- Add support for automated documentation
- Implement machine learning integration
- Add support for real-time data processing
- Project Maintainer: Ray Thurman
- Project Homepage: https://github.com/raythurman2386/geotoolkit
- GDAL/OGR contributors
- Esri and ArcPy development team
- Open source GIS community
Made with ❤️ by Ray Thurman