Проект представляет собой сервис для работы с геопространственными данными и анализа NDVI (Normalized Difference Vegetation Index) на основе данных PostgreSQL и GeoJSON.
-
Установите Python (рекомендуется Anaconda): Инструкция по установке Anaconda
-
Установите PostgreSQL:
sudo apt -y install postgresql postgresql-contrib sudo apt update
-
Создайте виртуальное окружение с Python 3.9:
conda create --name <env> python=3.9 conda activate <env>
-
Установите необходимые пакеты:
conda install geopandas conda install aiohttp conda install tqdm conda install psycopg2 pip install asyncio pip install argparse pip install joblib conda install matplotlib
- Войдите в терминал PostgreSQL:
sudo -i -u postgres psql
- Создайте пользователя и базу данных:
CREATE USER <name> WITH PASSWORD '<password>'; ALTER USER <name> WITH SUPERUSER; CREATE DATABASE geoservice; CREATE TABLE geoservice.agrofieldndvi ( "AgroFieldID" bigint NOT NULL, "Date" date, "NDVI" double precision, "NDVIMin" double precision, "NDVIMax" double precision ); ALTER TABLE agrofieldndvi OWNER TO <name>;
В проекте присутствует файл конфигурации configuration.json, который необходимо настроить. Пример параметров:

Параметры конфигурации:
- train_geojson_file: Путь к GeoJSON файлу для обучения модели;
- classify_geojson_file: Путь к GeoJSON файлу для классификации данных;
- predicted_geojson_file: Путь для сохранения классифицированных данных;
- model: Путь к файлу модели классификатора;
- year: Год, для которого выполняется обработка данных;
- persecond: Количество запросов в секунду к прокси для получения рядов NDVI;
- database: Параметры подключения к базе данных PostgreSQL.
Примечания
При работе с базой данных в разных операционных системах запросы могут отличаться:
- Для Windows: INSERT INTO geoservice.agrofieldndvi ...
- Для Linux: INSERT INTO agrofieldndvi ...
Перед запуском необходимо настроить файл конфигурации.
python crops_classifier.py --config .path/to/config --mode [train or predict] --cleaning [y or n]- --config: путь к файлу конфигурации, по умолчанию - './configs/default.json'
- --mode: обучение или классификация
- --cleaning: очистка базы данных, по умолчанию - 'y' (для ускорения, если необходимо классифицировать одни и те же данные на разных моделях, рекомендуется не очищать БД)
Конфиг можно опционально не указывать, тогда применится конфиг по умолчанию. Также по умолчанию mode = train
Для запуска построения графика NDVI конкретного поля:
python creating_graphs.py --config .path/to/config --id 1234- --config: путь к файлу конфигурации
- --id: идентификатор поля
После обучения модель сохраняется, а также возвращается точность классификации. Результаты классификации записываются в новый GeoJSON файл с указанием названий культур для каждого поля.