gis-classification/README.md

1.9 KiB

GIS Classification

Python project for land cover classification using GIS data (GeoTIFF + Shapefile).

Project Structure

gis-classification/
├── main.py              # Main script with parameters
├── requirements.txt     # Dependencies
├── data/                # Input data folder
├── output/              # Classification results
└── src/
    ├── classifier.py    # Main classification pipeline
    ├── data/
    │   └── loader.py    # Data loading (GeoTIFF, Shapefile)
    ├── strategies/
    │   ├── base.py          # Strategy interface
    │   └── classifiers.py   # Built-in strategies (RF, SVM, LR)
    └── utils/

Installation

pip install -r requirements.txt

Usage

  1. Place your input files in data/:

    • landsat.tif - GeoTIFF from Landsat
    • polygons.shp - Shapefile with class labels
  2. Configure parameters in main.py:

    • Input/output paths
    • Classification strategy (RandomForest, SVM, LogisticRegression)
    • Training parameters
  3. Run:

python main.py

Adding Custom Classification Strategy

Create a new class implementing ClassificationStrategy:

from src.strategies import ClassificationStrategy
import numpy as np

class MyCustomStrategy(ClassificationStrategy):
    def train(self, X: np.ndarray, y: np.ndarray) -> None:
        # Your training logic
        pass
    
    def predict(self, X: np.ndarray) -> np.ndarray:
        # Your prediction logic
        pass
    
    def predict_proba(self, X: np.ndarray) -> np.ndarray:
        pass
    
    def get_params(self) -> dict:
        pass
    
    @property
    def name(self) -> str:
        return "MyCustom"

Then use in main.py:

STRATEGY = MyCustomStrategy()

Output

  • output/classified.tif - Classified raster (GeoTIFF)
  • Console output with accuracy metrics