# JNArc **Repository Path**: josephning/jnarc ## Basic Information - **Project Name**: JNArc - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-08-20 - **Last Updated**: 2026-10-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # JNArc - ArcGIS 工具集 ## 项目简介 JNArc 是一套基于 Python 构建的专业地理信息系统(GIS)工具集,专为 ArcGIS Pro 环境设计。该项目集成了地形分析、数据转换、成果输出、样式管理及项目管理等功能,旨在提高 GIS 工程师和数据分析师的工作效率。 ## 核心功能 JNArc 提供了以下几大模块,覆盖了从数据预处理到成果输出的完整工作流程: ### 1. 地形分析工具 - **等高线生成 (contour_generator.py)**:支持从 DEM 栅格数据批量生成等高线矢量。提供交互式 GDB 和栅格选择器,支持日志预览和错误监控。 - **DEM 差值分析 (dem_diff_tool.py)**:专门用于地形变化检测。工具支持自动识别文件名中的日期信息(如 "DEM_2023" 和 "DEM_2024"),进行前后对比分析并输出差异结果。 - **断面线自动提取 (section_extract_tool.py)**:从 GDB Polyline 断面线 + DEM 栅格自动沿线按等间距采样,**UI 内嵌 matplotlib Canvas 预览剖面图**(多断面同图、图例点击隐藏),支持纯 numpy 双线性插值取 Z 值。导出点要素 FC 带 `Section` / `Distance` / `X` / `Y` / `Z_elev` 字段,断面线坐标系不匹配时自动告警。识别"主干线多段"场景,按要素属性或 OID 独立命名每条断面。 ### 2. 数据转换与处理工具 - **栅格转点 (raster_to_point_tool.py)**:将栅格像元转换为点要素。支持采样间隔(Stride)设置、结果过滤,并具备强大的 **XYZ 坐标导出** 功能,便于将 GIS 数据转为通用坐标文本。 - **批量裁切/掩膜 (clip_mask_tool.py)**:支持矢量裁切矢量、栅格掩膜栅格,可选择"整体裁切"或"按掩膜要素分别裁切"批量输出。栅格掩膜优先使用 Spatial Analyst 扩展(`ExtractByMask`),无 SA 许可时自动回退到基础工具。 - **栅格加减计算 (raster_calc_tool.py)**:支持两大模式:① 栅格 ↔ 栅格 — 两个栅格逐像元做加/减运算;② 栅格 ↔ 随机数区间 — 先在指定 `[min, max]` 区间生成每个像元独立随机的栅格,再对基底栅格做加/减。随机数栅格优先使用 Spatial Analyst 的 `CreateRandomRaster`,无 SA 许可时自动回退到 numpy 路径。自动处理 NoData、范围对齐与输出名生成。 ### 3. 样式与成果管理工具 - **图层样式批量应用 (raster_render_tool.py)**:从 APRX 现有图层或 `.lyrx` 文件提取符号系统,批量应用到目标图层。自动检查几何类型兼容性,支持导出 `.lyrx` 保存样式模板,CURRENT 模式下 Pro 实时刷新无需保存。 - **布局导出 (export_layout.py)**:批量导出 ArcGIS Pro 项目(.aprx)中的布局视图。支持全选、反选特定布局,一键导出为图片或 PDF。 - **TIFF 同步工具 (tiff_sync_tool.py)**:专门用于栅格数据管理。支持将暂存目录中的 TIFF 文件快速同步导入到文件地理数据库(.gdb)中。 ### 4. 系统集成工具 - **工具箱同步 (atbx_sync_gui.py)**:提供图形化界面,用于将 `MyScripts/*.py` 一键同步到 ArcGIS 工具箱(.atbx)。自动检测 `.py ↔ .tool` 三态匹配、创建新脚本壳、清理孤儿 `.tool`,支持锁定检测、自动备份与回滚。 - **配置向导 (config_wizard.py)**:用于项目初始化和环境配置,帮助定位项目根目录、ArcGIS 工程文件及工具箱路径,读写 `jnarc_config.json` 全局配置。 ## 环境要求 - **操作系统**:Windows 10/11 - **软件环境**: - ArcGIS Pro 2.8+(必须安装并配置好 Python 环境) - Python 3.x(建议使用 ArcGIS Pro 自带的 Python 运行环境,部分脚本也可独立于 arcpy 运行) - **依赖库**:`arcpy`(地理处理核心),`tkinter`(内置 UI),`pandas`(推荐) ## 使用方法 1. **独立运行 UI**: 直接在 Python 环境中运行 `JNArc/MyScripts/` 目录下的各个脚本(如 `python JNArc/MyScripts/contour_generator.py`),即可调出对应的图形界面。`clip_mask_tool.py`、`raster_render_tool.py` 等也支持独立运行。 2. **集成 ArcGIS Pro 工具箱**: 运行 `python JNArc/atbx_sync_gui.py` 将脚本同步至 `JNArc.atbx` 工具箱。同步后,即可在 ArcGIS Pro 的 Catalog 窗格中找到并拖拽这些工具到 Geoprocessing 面板中使用。 3. **初始化配置**: 运行 `JNArc/MyScripts/config_wizard.py` 可视化界面,自动扫描并关联项目目录下的 `.aprx` 工程文件和 `.gdb` 地理数据库。 ## 项目结构 ```text jnarc/ # 项目根目录 ├── JNArc.aprx # ArcGIS Pro 工程文件 ├── JNArc.atbx # ArcGIS 工具箱文件 ├── JNArc.gdb/ # 核心文件地理数据库 ├── jnarc_config.json # 项目全局配置文件 ├── README.md / README.en.md # 项目说明文档 └── JNArc/ # 代码目录 ├── atbx_sync_gui.py # 工具箱同步管理工具 └── MyScripts/ # Python 工具脚本 ├── clip_mask_tool.py # 批量裁切/掩膜工具 ├── config_wizard.py # 项目配置与初始化向导 ├── contour_generator.py # 等高线生成 ├── dem_diff_tool.py # DEM 对比分析 ├── export_layout.py # 布局批量导出 ├── raster_calc_tool.py # 栅格加减计算 (栅格↔栅格 / 栅格↔随机数区间) ├── raster_render_tool.py # 图层样式批量应用 (Lyrx Applier) ├── raster_to_point_tool.py # 栅格转点及 XYZ 导出 ├── section_extract_tool.py # 断面线自动提取 + 剖面图预览 └── tiff_sync_tool.py # TIFF 数据同步 ``` ## 注意事项 - 由于项目依赖 `arcpy`,请确保在 **ArcGIS Pro Python 环境** 中运行相关地理处理脚本。 - 工具箱同步功能运行时会进行文件锁定检测,操作前请关闭在 ArcGIS Pro 中打开的同名工具箱文件。 - `clip_mask_tool.py` 使用 `arcpy.sa.ExtractByMask()` 时需要 Spatial Analyst 扩展许可,无许可时自动回退为 `arcpy.management.ClipRaster()`。 - `raster_render_tool.py` 建议在 ArcGIS Pro 应用内(CURRENT 模式)运行以获得实时预览效果。 - 建议定期备份 `JNArc.gdb` 数据库和 `jnarc_config.json` 配置文件。 ## 作者 - **Joseph Ning** — [Gitee 主页](https://gitee.com/josephning) ## 许可证 本项目遵循开源许可证协议,具体条款以项目发布时附带的 LICENSE 文件为准。