前期文章我们推送了在线影像下载的上篇:
今天的下篇文章我们就要来介绍一下如何通过编写ArcGIS脚本工具下载ArcGIS调用的影像地图。
下面我们介绍一下工具的实现,获取工具请看文后说明。一般情况下使用,再也不用搞什么地图下载器了。
一、 实现技术路线说明
-
我们以下载ESRI的World Imagery Wayback的影像底图为例,加载影像地图和确定下载范围。
2. 如上图确定下载范围之后,我们第一个考虑的是借鉴上一期推文《ArcGIS下载在线影像地图(手工)》导出带坐标的tiff格式就好。但是此次下载范围较大,且要求分辨率高,直接导出不能满足如下图的下载分辨率的要求。
3. 这时候,我们就可以思考,如果我们借鉴之前的ArcPy批量制图的课程,将下载范围分割成多个小块,分幅下载,之后利用ArcGIS或者Erdas进行海量数据的镶嵌拼接,就可以达到我们的要求。
ArcPy结合数据驱动模块的批量制图https://edu.csdn.net/course/detail/28073
4. 我们在ArcPy结合数据驱动模块的批量制图维教程中使用的是数据驱动模块来实现批量出图。我们这次不用旧方法,利用数据访问模块的游标来访问创建每个格网的范围,之后下载该范围的带坐标的tiff格式影像图。格网的创建利用的是制图工具—>数据驱动页面—>格网索引要素,在创建格网中重要的是要设置格网大小以满足合适的分辨率,具体我会在后面的视频解说中详细介绍。
5. 下面贴一下工具的核心代码,整体程序的介绍,工具的介绍,在下文的视频解说中进行详细说明。
#核心代码,并非全部代码
#利用游标获取格网的每条记录,读取格网要素的几何与两个字段值
with arcpy.da.UpdateCursor(lyr, ['SHAPE@','PageName','PageNumber']) as cursor:
for row in cursor:
mapName=str(row[1])
fullpath=outpath+mapName+".tif"
#将数据框的范围设置当期迭代格网格网的范围
df.extent = row[0].extent
#将数据框比例尺缩小,以便让各个下载的分幅影像有重叠,后续镶嵌不会有缝隙等
df.scale=df.scale*1.05
# df_export_width=1600,df_export_height=1600控制了导出分辨率
# 可以更改输出大小控制分辨率,不要盲目设置过大。
arcpy.mapping.ExportToTIFF(mxd,fullpath,df,df_export_width=1600,df_export_height=1600,geoTIFF_tags=True)
arcpy.AddMessage("批量下载第"+str(row[2])+"/"+str(featureNum)+"幅")
arcpy.AddMessage("下载结束!,完成"+str((row[2]/featureNum)*100)+"%")
7. 工具使用。工具初步实现,我没有把创建格网、下载分幅影像图、镶嵌整合在一个工具内,后续抽空我把工具整合一下。下面我们就分步骤先来,也是很快的。
-
第一步根据下载范围创建好格网。
-
打开编写的“批量下载在线影像图”工具,设置后,进行批量下载就可以了。
-
利用镶嵌工具实现分幅的批量下载。
二、 视频解说
写了个工具ArcGIS批量下载影像图!分享给大家
三、下载影像工具获取
、
有需要留下邮箱,给大家发送。