# Gps_parse **Repository Path**: mahadeva/gps_parse ## Basic Information - **Project Name**: Gps_parse - **Description**: No description available - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-08-13 - **Last Updated**: 2025-08-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # GPS解析程序 ## 项目介绍 这是一个纯命令行Java程序,用于批量处理GPS经纬度数据,调用高德地图API进行逆地址解析,并将结果更新到数据库。程序具有以下特点: - 无GUI界面,纯命令行操作 - 批量高效处理大量GPS数据 - 内置限流机制,符合高德API限制(10次/秒) - 自动重试机制,确保API调用稳定性 - 多线程并行处理,提高效率 - 批量数据库操作,避免频繁单条更新 - 完善的日志记录,方便问题排查 - 可打包为Windows可执行文件(.exe) - 支持Windows任务计划定时执行 ## 环境要求 - JDK 11+ - Maven 3.6+ - MySQL 5.7+ - Launch4j(用于打包exe) ## 快速开始 ### 1. 准备数据库 执行`src/main/resources/schema.sql`脚本创建数据库和表结构: ```sql CREATE DATABASE IF NOT EXISTS gps_data DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; USE gps_data; CREATE TABLE IF NOT EXISTS gps_data ( id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID', latitude DOUBLE NOT NULL COMMENT '纬度', longitude DOUBLE NOT NULL COMMENT '经度', address VARCHAR(255) DEFAULT NULL COMMENT '地址信息', province VARCHAR(50) DEFAULT NULL COMMENT '省份', city VARCHAR(50) DEFAULT NULL COMMENT '城市', district VARCHAR(50) DEFAULT NULL COMMENT '区县', street VARCHAR(100) DEFAULT NULL COMMENT '街道', status TINYINT NOT NULL DEFAULT 0 COMMENT '处理状态:0-未处理,1-处理成功,2-处理失败', error_msg VARCHAR(255) DEFAULT NULL COMMENT '错误信息', create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', INDEX idx_status (status) COMMENT '状态索引', INDEX idx_location (latitude, longitude) COMMENT '位置索引' ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='GPS数据表'; ``` ### 2. 配置应用 修改`src/main/resources/application.properties`文件,配置数据库连接和高德API密钥: ```properties # 数据库配置 spring.datasource.url=jdbc:mysql://localhost:3306/gps_data?useSSL=false&serverTimezone=Asia/Shanghai&characterEncoding=utf-8 spring.datasource.username=your_username spring.datasource.password=your_password # 高德地图API配置 amap.api.key=your_amap_api_key_here ``` ### 3. 编译打包 运行`build.bat`脚本进行编译和打包: ```bash build.bat ``` 或者手动执行以下命令: ```bash # 编译打包 mvn clean package -DskipTests # 使用Launch4j打包为exe launch4jc launch4j-config.xml ``` ### 4. 运行程序 直接运行生成的exe文件: ```bash target\GpsParse.exe ``` ### 5. 设置定时任务 可以使用Windows任务计划程序设置定时执行: 1. 打开任务计划程序(Task Scheduler) 2. 创建基本任务 3. 设置触发器(如每天凌晨2点执行) 4. 设置操作为启动程序,指定GpsParse.exe的路径 5. 完成设置 也可以导入提供的`windows-task-example.xml`文件(需要修改路径)。 ## 性能优化 1. **批量处理**:程序默认每批处理100条数据,可通过`batch.size`参数调整 2. **连接池优化**:使用HikariCP连接池,默认配置了最大连接数和超时时间 3. **多线程处理**:使用线程池并行处理API请求,提高吞吐量 4. **限流控制**:使用令牌桶算法控制API调用频率,避免触发限流 5. **批量更新**:使用JDBC批处理更新数据库,减少数据库交互次数 ## 异常处理 1. **API调用异常**:内置重试机制,可配置最大重试次数和重试间隔 2. **数据库异常**:使用Spring的事务管理,确保数据一致性 3. **资源关闭**:确保所有资源(连接、线程池等)正确关闭 4. **日志记录**:详细记录运行状态和异常信息,方便排查问题 ## 日志文件 日志文件默认保存在`logs`目录下: - `gps-parse.log`:主日志文件,记录所有INFO级别以上的日志 - `error.log`:错误日志文件,仅记录ERROR级别的日志 ## 注意事项 1. 确保高德API Key有足够的配额 2. 数据库表需要有足够的性能支持大量数据处理 3. 程序默认处理完成后自动退出,可通过`task.auto-exit=false`修改此行为 4. 如需更改日志路径,修改`logging.file.path`参数