Geração automática de arquivos para cadastro no SICAR-SP (Cadastro Ambiental Rural).
- Leitura de KML com perímetro do imóvel
- Cálculo automático de APP (Área de Preservação Permanente)
- Margem de curso d'água (30-500m conforme largura)
- Nascentes (50m de raio)
- Lagos e lagoas (50-100m)
- Cálculo de Reserva Legal (20% para Mata Atlântica)
- Geração de Shapefiles compatíveis com SICAR
- Validação de geometrias e coordenadas
- Python 3.10+
- Dependências: geopandas, fiona, shapely, pyproj, numpy, pandas
setup.batchmod +x setup.sh
./setup.shpython -m venv venv
source venv/bin/activate # Linux/Mac
# ou: venv\Scripts\activate # Windows
pip install -r requirements.txtpython main.py <arquivo.kml> --nome <nome_imovel> [--bioma <bioma>]python main.py "assets/Mursa - CAR.kml" --nome "Fazenda_Mursa" --bioma MATA_ATLANTICAarquivo.kml: Arquivo KML com o perímetro do imóvel (obrigatório)--nome, -n: Nome do imóvel (default: "imovel")--bioma, -b: Bioma do imóvel (MATA_ATLANTICA, CERRADO, AMAZONIA)--verbose, -v: Modo verbose para debug
Os arquivos são gerados em output/<nome_imovel>/:
output/
└── Fazenda_Mursa/
├── shapefiles/
│ ├── perimetro.shp (+ .shx, .dbf, .prj, .cpg)
│ ├── app.shp
│ └── reserva_legal.shp
└── car_upload.zip ← Arquivo para upload no SICAR
car_automation/
├── main.py # CLI principal
├── config.py # Configurações e constantes legais
├── geospatial/
│ ├── kml_parser.py # Leitura de KML
│ ├── geometry_validator.py
│ └── area_calculator.py
├── data_sources/
│ └── hydrology.py # Coleta de hidrografia
├── car_layers/
│ ├── app_calculator.py # Cálculo de APP
│ └── reserva_legal.py # Cálculo de RL
├── sicar_formatter/
│ └── shapefile_builder.py
└── tests/ # Testes TDD
| Tipo | Faixa de Proteção |
|---|---|
| Rio ≤10m | 30m cada margem |
| Rio 10-50m | 50m cada margem |
| Rio 50-200m | 100m cada margem |
| Rio 200-600m | 200m cada margem |
| Rio >600m | 500m cada margem |
| Nascente | 50m de raio |
| Lago ≤20ha | 50m |
| Lago >20ha | 100m |
| Bioma | Percentual |
|---|---|
| Mata Atlântica | 20% |
| Cerrado | 20% |
| Amazônia | 80% |
pytest tests/ -vPara melhor precisão, baixe dados de hidrografia do IBGE e coloque em data_cache/ibge/:
- Identificação de nascentes é heurística (baseada em início de rios)
- Sem dados de hidrografia local, APPs de margem não são calculadas
- Vegetação nativa e área consolidada requerem dados MapBiomas (não implementado ainda)
MIT