ArcGIS10.X影像智能下载!迁移ArcGIS Pro批量智能高清影像下载工具至ArcGIS!
上周我们分享了 我写的一个ArcGIS Pro版批量下载高清影像(谷歌、天地图、ESRI等)工具给大家,Deepseek+我!写一个ArcGIS Pro批量下载高清影像(谷歌、天地图、ESRI等)工具给大家-CSDN博客文章浏览阅读130次。深夜,我盯着屏幕上的高清影像(谷歌、天地图、ESRI),手指在键盘上犹豫不决。项目需要下载某县全域0.5米分辨率的影像,但ArcGIS Pro原生的导出工具要么崩溃,要么输出模糊的图片。我打开对话窗口,写下了第一行求助:——这成了我与AI搭档共同攻克技术难题的起点。其实关于这个问题,2022年的时候我们用ArcGIS自己写过一个工具,现在只是借助AI在ArcGIS Pro实现,当然吗,现在要实现的更多。如果你需要用ArcGIS的话,请看我么之前的文章。高精度遥感影像已成为GIS分析的基石。https://blog.csdn.net/kinghxj/article/details/146319996?spm=1011.2415.3001.5331
因为工具不支持ArcGIS版本,所以今天我把ArcGIS Pro的脚本工具,进行改造以制作——智能影像下载工具ArcGIS版。
(工具获取见最后)
下面我将智能影像下载工具从ArcGIS Pro迁移至ArcGIS Desktop(ArcMap)版本涉及以下核心逻辑和技术问题,总结以及工具的运行设置注意点。列出如下:
-
1、ArGIS Pro迁移至ArcMap的核心要点
-
2、工具运行设置
-
3、工具获取与测试数据获取
01 ArGIS Pro迁移至ArcMap的核心要点
一、核心逻辑差异
1. 地图文档操作接口
-
**Pro (
arcpy.mp
) vs ArcMap (arcpy.mapping
)**-
Pro通过
arcpy.mp.MapProject
管理工程,而ArcMap使用arcpy.mapping.MapDocument
- 关键代码差异:
python
# Pro aprx = arcpy.mp.ArcGISProject("CURRENT") map= aprx.activeMap
# ArcMap mxd = arcpy.mapping.MapDocument("CURRENT") df = arcpy.mapping.ListDataFrames(mxd)[0]
-
2. 视图范围控制
- Pro需处理
Camera
对象的三维坐标,ArcMap直接操作二维Extent
:python
# ArcMap范围设置 df.extent = arcpy.Extent(xmin, ymin, xmax, ymax)
3. 导出地图方法
- Pro
:
exportToJPEG/TIFF()
需通过Layout
或MapFrame
对象 - ArcMap: 直接通过
arcpy.mapping.ExportToTIFF
python
arcpy.mapping.ExportToTIFF(mxd, output_path, df,...)
二、关键技术问题
1. Python版本兼容性
|
---|
2. 地理处理工具参数差异
以MosaicToNewRaster
为例:
python
# Pro可能需要的参数顺序
arcpy.management.MosaicToNewRaster(input_rasters, output_location,...)
# ArcMap需注意参数类型:
arcpy.MosaicToNewRaster_management( # 注意后缀"_management"
";".join(raster_list), # 输入需合并为字符串
output_path,
pixel_type="8_BIT_UNSIGNED", # 关键字参数可能不兼容
...
)
3. 空间参考处理
- Pro
:自动识别GCS/WGS84等新坐标系
- ArcMap:需显式处理CGCS2000等国内坐标系
python
# 显式定义投影(ArcMap示例) ifnot sr.name =="CGCS2000_3_Degree_GK_CM_123E": arcpy.DefineProjection_management(in_feature, sr)
4. 临时文件管理
- 路径格式
:ArcMap对长路径支持较差,需限制为
<260
字符 - 清理机制:ArcMap需更严格的手动清理
python
# 安全删除临时文件(ArcMap) import shutil shutil.rmtree(temp_dir, ignore_errors=True)
三、用户界面适配
1. 参数验证逻辑
2. 动态参数控制
python
# ArcMap的updateParameters需更严格
defupdateParameters(self, parameters):
if parameters[2].value =="按分辨率":
parameters[3].enabled =True # 分辨率参数激活
else:
parameters[4].enabled =True # 比例尺参数激活
四、性能优化点
-
分块策略优化
python
tile_size =min(4096,int(arcpy.GetSystemMetrics("RAM")/1e8)) # 动态调整
-
ArcMap内存限制更严格,建议分块尺寸不超过
4096x4096
-
-
并行处理限制
-
ArcMap不支持真正的多线程,需避免
concurrent.futures
等库
-
-
显示刷新控制
python
arcpy.RefreshActiveView() # 频繁调用影响性能,需间隔使用
五、错误处理增强
ArcMap特有错误类型
异常处理示例
python
try:
arcpy.MosaicToNewRaster_management(...)
except arcpy.ExecuteError as e:
if"000859"in e.message: # 输出文件已存在
arcpy.AddWarning("强制覆盖已存在文件...")
arcpy.Delete_management(out_raster)
self.execute(parameters, messages) # 重试
02 工具运行设置
1、在ArcMap中加载面要素和在线地图
2、打开工具箱选择本工具
3、观察参数界面:
-
-
输入要素必须手动选择
-
输出路径必须手动指定
-
其他参数显示默认值
-
4、执行工具验证分块导出功能
注意事项:
-
输出路径建议使用全英文路径
-
输入面要素必须与数据框坐标系一致
-
处理超大范围时注意系统内存限制
03 视频演示
更新支持ArcGIS!迁移ArcGIS Pro批量智能高清影像(谷歌、天地图、ESRI等)下载工具至ArcGIS!分享给大家
04 工具获取与测试数据获取
迁移ArcGIS Pro批量智能高清影像下载工具至ArcGIS!分享给大家改造ArcGIS Pro智能高清影像下载工具支持ArcGIS 10.X版本!快来获取吧!https://mp.weixin.qq.com/s/CvM69g9rCY5bs9zLI083pA