# remote-sense-verify **Repository Path**: zd_g/remote-sense-verify ## Basic Information - **Project Name**: remote-sense-verify - **Description**: remote-sense-verify是一个完全开源的遥感自动化验标系统,旨在解决农业保险领域的验标难题。该系统采用纯Java GIS处理技术,支持多光谱TIFF影像分析、空间裁剪、面积统计等功能,能够大幅提升验标效率和准确性。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2026-08-06 - **Last Updated**: 2026-08-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: SpringBoot, 自动化, 验标, 农业保险 ## README # 遥感自动化验标系统 ## 项目简介 遥感自动化验标系统是一个基于Spring Boot的农业遥感图像处理平台,主要用于农险验标任务的自动化处理。系统通过分析遥感影像数据,对投保地块进行自动化识别和验证,生成验标报告。 ## 技术栈 ### 后端技术 - **Java 17** - 核心开发语言 - **Spring Boot 3.2.0** - 应用框架 - **MyBatis-Plus 3.5.5** - ORM框架 - **PostgreSQL + PostGIS** - 空间数据库 - **Redis** - 缓存服务 - **Kafka** - 消息队列(可选) - **Swagger/OpenAPI** - API文档 ### GIS技术 - **GeoTools 30.3** - 纯Java GIS处理 - **JTS Topology Suite 1.19.0** - 空间计算 - **iText7 HTML2PDF 4.0.5** - PDF报告生成 ### 工具库 - **Lombok** - 代码生成 - **Jackson** - JSON处理 - **Commons IO** - 文件操作 - **JAXB** - XML处理 ## 系统架构 ### 核心模块 1. **任务管理模块** - 验标任务的推送、查询和状态管理 2. **图像处理模块** - 遥感影像的裁剪、分析和分类 3. **空间计算模块** - 矢量数据的空间叠加分析 4. **报告生成模块** - PDF验标报告生成 5. **异步处理模块** - 支持高并发任务处理 ### 数据库设计 - `t_verify_task` - 验标任务表 - `t_verify_result` - 验标结果表 - `crop_classification` - 作物分类矢量表 ## 快速开始 ### 环境要求 - Java 17+ - Maven 3.6+ - PostgreSQL 13+ (with PostGIS) - Redis 6+ - Kafka 2.8+ (可选) ### 安装步骤 1. **克隆项目** ```bash git clone cd remote-sense-verify ``` 2. **配置数据库** ```sql -- 创建数据库 CREATE DATABASE remote_verify; -- 创建PostGIS扩展 CREATE EXTENSION IF NOT EXISTS postgis; -- 执行初始化脚本 psql -d remote_verify -f src/main/resources/db/migration/V1__init.sql ``` 3. **配置Redis** ```bash # 启动Redis服务 redis-server ``` 4. **配置Kafka (可选)** ```bash # 启动Kafka服务 kafka-server-start.sh config/server.properties ``` 5. **修改配置文件** 编辑 `src/main/resources/application.yml`,修改数据库连接信息: ```yaml spring: datasource: url: jdbc:postgresql://localhost:5432/remote_verify username: your_username password: your_password ``` 6. **构建运行** ```bash # 编译项目 mvn clean compile # 运行测试 mvn test # 启动应用 mvn spring-boot:run ``` ### 启动命令 ```bash # 直接运行 mvn spring-boot:run # 或者打包后运行 mvn clean package java -jar target/remote-sense-verify-1.0.0-SNAPSHOT.jar ``` ## API文档 启动应用后,访问以下地址查看API文档: - **Swagger UI**: http://localhost:8080/swagger-ui.html - **OpenAPI JSON**: http://localhost:8080/api-docs ### 主要接口 #### 1. 遥感验标任务推送 - **接口**: `POST /api/remote-sense/task/push` - **描述**: 农险客户管理系统将年份、标的、矢量信息推送至综合遥感应用系统 - **请求体**: `TaskPushRequest` - **响应**: `ApiResponse` #### 2. 遥感验标任务查询 - **接口**: `POST /api/remote-sense/task/query` - **描述**: 查询验标任务处理状态和结果 - **请求体**: `TaskQueryRequest` - **响应**: `ApiResponse` #### 3. 任务通知接口 - **接口**: `POST /api/remote-sense/task/notify` - **描述**: 任务处理完成后的结果通知 - **请求体**: `TaskNotifyRequest` - **响应**: `ApiResponse` #### 4. 报告生成接口 - **接口**: `POST /api/remote-sense/report/generate` - **描述**: 为指定任务生成PDF验标报告 - **请求体**: `ReportRequest` - **响应**: `ApiResponse` ## 配置说明 ### 任务处理配置 ```yaml verify: task: max-concurrency: 10000 # 最大并发量 mode: threadpool # 任务模式: threadpool | kafka timeout-seconds: 10 # 单次验标超时(秒) queue-capacity: 10000 # 排队容量 gdal: enabled: true # 是否启用GDAL tiff-base-path: /data/tiff # TIFF文件基础路径 timeout-seconds: 120 # GDAL命令超时(秒) ``` ### Kafka配置(可选) ```yaml spring: kafka: bootstrap-servers: localhost:9092 producer: acks: all retries: 3 consumer: group-id: verify-task-group auto-offset-reset: earliest enable-auto-commit: false ``` ## 开发指南 ### 项目结构 ``` src/main/java/com/remoteverify/ ├── controller/ # 控制器层 │ ├── TaskPushController.java # 任务推送 │ ├── TaskQueryController.java # 任务查询 │ ├── TaskNotifyController.java # 任务通知 │ └── ReportController.java # 报告生成 ├── service/ # 业务逻辑层 │ ├── TaskService.java # 任务服务 │ ├── GdalService.java # 图像处理服务 │ ├── GeoToolsService.java # 空间计算服务 │ ├── PdfReportService.java # PDF报告服务 │ └── AsyncTaskProcessor.java # 异步任务处理器 ├── repository/ # 数据访问层 │ ├── VerifyTaskMapper.java # 任务数据访问 │ └── VerifyResultMapper.java # 结果数据访问 ├── model/ # 数据模型 │ ├── entity/ # 实体类 │ ├── dto/ # 数据传输对象 │ └── enums/ # 枚举类 └── config/ # 配置类 ├── MyBatisPlusConfig.java # MyBatis配置 ├── KafkaConfig.java # Kafka配置 ├── AsyncConfig.java # 异步配置 └── SwaggerConfig.java # Swagger配置 ``` ### 核心功能 #### 1. 任务处理流程 1. 接收验标任务推送 2. 验证任务参数 3. 加入任务队列 4. 异步处理任务 5. 生成验标结果 6. 通知处理完成 #### 2. 图像处理流程 1. 读取遥感影像数据 2. 裁剪指定区域 3. 空间叠加分析 4. 作物分类识别 5. 生成可视化结果 #### 3. PDF报告生成 1. 模板设计 2. 数据填充 3. 图片嵌入 4. 报告导出 ### 异常处理 系统采用全局异常处理机制,统一处理业务异常和系统异常: - `BusinessException` - 业务异常 - `GlobalExceptionHandler` - 全局异常处理器 ## 部署指南 ### 生产环境部署 1. **构建应用** ```bash mvn clean package -DskipTests ``` 2. **配置生产环境** ```yaml # application-prod.yml server: port: 8080 tomcat: threads: max: 400 min-spare: 20 spring: datasource: url: jdbc:postgresql://prod-db:5432/remote_verify username: ${DB_USERNAME} password: ${DB_PASSWORD} hikari: maximum-pool-size: 200 minimum-idle: 20 data: redis: host: ${REDIS_HOST} port: 6379 lettuce: pool: max-active: 500 ``` 3. **Docker部署** ```dockerfile FROM openjdk:17-jre-slim COPY target/remote-sense-verify-1.0.0-SNAPSHOT.jar app.jar EXPOSE 8080 ENTRYPOINT ["java", "-jar", "/app.jar"] ``` ### 监控和日志 - 使用Spring Boot Actuator进行健康检查 - 集成ELK进行日志收集和分析 - 配置Prometheus和Grafana进行监控 ## 常见问题 ### 1. 数据库连接失败 检查PostgreSQL服务是否启动,用户名密码是否正确,数据库是否存在。 ### 2. Redis连接失败 检查Redis服务是否启动,端口是否正确。 ### 3. Kafka连接失败 检查Kafka服务是否启动,bootstrap-servers配置是否正确。 ### 4. 图像处理超时 检查GDAL配置,调整超时时间或优化图像处理算法。 ### 5. 内存溢出 调整JVM参数,增加堆内存大小,优化任务处理逻辑。 ## 贡献指南 1. Fork项目 2. 创建特性分支 3. 提交代码 4. 发起Pull Request ## 许可证 本项目采用MIT许可证。 ## 联系方式 - 项目维护者: [维护者姓名] - 邮箱: [维护者邮箱] - 项目地址: [项目GitHub地址]