# Карты предписаний ISOXML

**ISOXML** (ISO 11783) — международный стандарт для обмена данными между сельскохозяйственной техникой и системами управления фермой.

## 🎯 Назначение

Файлы ISOXML используются для:
- **Карт предписаний (Task File)** для дифференцированного внесения удобрений
- Совместимости с техникой **John Deere, Claas, Case IH, New Holland**
- Загрузки в терминалы бортовых компьютеров

---

## 📤 Экспорт из Field Mapper

### Через веб-интерфейс

1. Откройте **страницу поля** (через список полей → клик на поле)
2. Убедитесь что есть **зоны** (после загрузки TIFF файла)
3. Нажмите кнопку **"Экспорт ISOXML"** 🚜

![ISOXML Export Button](../assets/isoxml-export-btn.png)

### Через API

```bash
curl -O http://localhost/api/field/export/isoxml/1
```

Где `1` — ID поля.

---

## 📊 Как рассчитываются нормы внесения

Field Mapper автоматически рассчитывает нормы внесения на основе **NDVI зон**:

| Зона | NDVI диапазон | Норма внесения | Цвет |
|------|---------------|----------------|------|
| **Низкая** | < 0.4 | 150 кг/га | 🔴 Красный |
| **Средняя** | 0.4 – 0.6 | 250 кг/га | 🟡 Жёлтый |
| **Высокая** | > 0.6 | 350 кг/га | 🟢 Зелёный |

### Пример расчёта

Для поля 50 га с тремя зонами:

| Зона | Площадь | NDVI | Норма | Всего удобрений |
|------|---------|------|-------|-----------------|
| Низкая | 15 га | 0.25 | 150 кг/га | 2 250 кг |
| Средняя | 25 га | 0.55 | 250 кг/га | 6 250 кг |
| Высокая | 10 га | 0.78 | 350 кг/га | 3 500 кг |
| **Итого** | **50 га** | — | — | **12 000 кг** |

**Экономия:** ~15% по сравнению с равномерным внесением (250 кг/га × 50 га = 12 500 кг)

---

## 📁 Структура ISOXML файла

```xml
<?xml version="1.0" encoding="UTF-8"?>
<TASKFILE Version="4.0" xmlns="http://www.isobus.net/isobus/TaskFile">
  <TASK TaskId="T1" TaskDesignator="Field_Поле №1" TaskType="1">
    <FIELD FieldId="F1" FieldDesignator="Поле №1">
      <ZONE ZoneId="Z1_1" ZoneDesignator="Низкая" ZoneColor="ff4d4d">
        <PRESCRIPTION ProductType="1" Rate="150" RateUnit="3"/>
        <POLYGON PolygonType="1">
          <POINT A="18.72" B="48.12"/>
          <POINT A="18.78" B="48.12"/>
          ...
        </POLYGON>
      </ZONE>
      <!-- Другие зоны -->
    </FIELD>
  </TASK>
</TASKFILE>
```

### Расшифровка элементов

| Элемент | Описание |
|---------|----------|
| `TASKFILE` | Корневой элемент, версия формата |
| `TASK` | Задача на внесение (Type 1 = Application) |
| `FIELD` | Поле с границами |
| `ZONE` | Зона внесения с цветом и нормой |
| `PRESCRIPTION` | Рекомендация по внесению |
| `Rate` | Норма внесения (кг/га) |
| `RateUnit="3"` | Единица измерения: kg/ha |
| `POLYGON` | Геометрия зоны (координаты WGS84) |

---

## 🚜 Загрузка в технику

### John Deere (CommandCenter, Gen4)

1. Сохраните файл как `TASKDATA.XML`
2. Скопируйте на USB-накопитель в папку `JOHNDEERE/TASKDATA/`
3. Вставьте USB в терминал
4. Меню → **Документы** → **Импорт** → Выберите задачу

### Claas (CEMOS, Terminal)

1. Файл `TASKDATA.XML` в корне USB-накопителя
2. Меню → **Управление данными** → **Импорт**
3. Выберите задачу для загрузки

### Case IH (AFS Pro)

1. Создайте папку `ISOXML` на USB
2. Поместите `TASKDATA.XML` внутрь
3. Меню → **Файлы** → **Импорт ISOXML**

---

## 🔧 Настройка норм внесения

По умолчанию используются нормы:
- Низкая зона: 150 кг/га
- Средняя зона: 250 кг/га
- Высокая зона: 350 кг/га

Для изменения отредактируйте `src/services/isoxml_service.py`:

```python
if zone.avg_ndvi < 0.4:
    rate = 150  # Измените на нужное значение
elif zone.avg_ndvi < 0.6:
    rate = 250  # Измените на нужное значение
else:
    rate = 350  # Измените на нужное значение
```

---

## ⚠️ Ограничения

- **Минимальный размер зоны:** 0.5 га (мелкие зоны игнорируются)
- **Формат координат:** WGS84 (EPSG:4326)
- **Максимум зон:** 5 на поле (для упрощения работы техники)

---

## 📚 Дополнительные ресурсы

- [ISO 11783 стандарт](https://www.iso.org/standard/72947.html)
- [ISOXML TaskFile спецификация](https://www.isobus.net/)
- [John Deere Operations Center](https://operationscenter.johndeere.com/)
- [Claas Connect](https://www.claas-connect.com/)

---

## ❓ FAQ

### Q: Можно ли экспортировать все поля сразу?

A: Да, используйте массовый экспорт через API:

```bash
curl -X POST http://localhost/api/field/export/isoxml/all
```

### Q: Поддерживается ли переменное внесение (VRA)?

A: Да, ISOXML TaskFile содержит зоны с разными нормами — это и есть VRA (Variable Rate Application).

### Q: Как проверить файл перед загрузкой в технику?

A: Откройте `TASKDATA.XML` в любом XML-редакторе и проверьте структуру. Также можно использовать [ISOXML Viewer](https://github.com/ISOBLUE/isoxml).

---

*Последнее обновление: 24 марта 2026 г.*
