64 lines
2.5 KiB
Python
64 lines
2.5 KiB
Python
# main.py
|
||
import arcpy
|
||
import os
|
||
import sys
|
||
|
||
# 将项目根目录添加到Python路径,以便导入自定义模块
|
||
# 假设 main.py 在项目根目录
|
||
project_root = os.path.dirname(os.path.abspath(__file__))
|
||
if project_root not in sys.path:
|
||
sys.path.insert(0, project_root)
|
||
|
||
from src import config
|
||
from src.utils.logger_setup import logger
|
||
from src.analysis.spatial_analyzer import SpatialAnalyzer
|
||
from src.analysis.raster_analyzer import RasterAnalyzer # 导入 RasterAnalyzer
|
||
|
||
def main():
|
||
"""
|
||
项目主入口函数,负责调度空间分析和报告生成流程。
|
||
"""
|
||
logger.info("==================================================")
|
||
logger.info(" 地理处理与土壤属性分析项目启动 ")
|
||
logger.info("==================================================")
|
||
|
||
# 确保ArcPy环境可用
|
||
try:
|
||
arcpy.GetInstallInfo()
|
||
logger.info(f"ArcPy环境已加载: {arcpy.GetInstallInfo()['ProductName']} {arcpy.GetInstallInfo()['Version']}")
|
||
except Exception as e:
|
||
logger.critical(f"ArcPy环境未正确配置或加载失败: {str(e)}")
|
||
logger.critical("请确保在ArcGIS Pro的Python环境中运行此脚本。")
|
||
sys.exit(1)
|
||
|
||
# 1. 执行空间分析
|
||
# logger.info("阶段一:开始执行空间分析...")
|
||
# analyzer = SpatialAnalyzer(config)
|
||
# analysis_success = analyzer.execute_analysis()
|
||
|
||
# 2. 执行栅格分析(求交、制表、合并)
|
||
logger.info("阶段二:开始执行栅格分析...")
|
||
raster_analyzer = RasterAnalyzer(config)
|
||
raster_analysis_success = raster_analyzer.execute_analysis()
|
||
|
||
# 3. 输出分析结果
|
||
# if analysis_success and raster_analysis_success:
|
||
# logger.info("所有分析流程成功完成!")
|
||
# elif analysis_success and not raster_analysis_success:
|
||
# logger.error("空间分析成功,但栅格分析失败,请检查日志。")
|
||
# elif not analysis_success and raster_analysis_success:
|
||
# logger.error("空间分析失败,但栅格分析成功,请检查日志。")
|
||
# else:
|
||
# logger.error("所有分析流程失败,请检查日志。")
|
||
if raster_analysis_success:
|
||
logger.info("栅格分析流程成功完成!")
|
||
else:
|
||
logger.error("栅格分析失败,请检查日志。")
|
||
|
||
logger.info("==================================================")
|
||
logger.info(" 地理处理与土壤属性分析项目结束 ")
|
||
logger.info("==================================================")
|
||
|
||
if __name__ == "__main__":
|
||
main()
|