1.9 KiB
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
-
Place your input files in
data/:landsat.tif- GeoTIFF from Landsatpolygons.shp- Shapefile with class labels
-
Configure parameters in
main.py:- Input/output paths
- Classification strategy (RandomForest, SVM, LogisticRegression)
- Training parameters
-
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