上周我們分享了 我寫的一個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