【Arcpy】栅格数据的批量镶嵌和上传切片

【Arcpy】栅格数据的批量镶嵌和上传切片
Anchen这是Arcpy系列的第一篇文章,首先要先介绍一下Arcpy的来源与功能。
0. 缘起
Arcpy是ArcGIS或者ArcGIS Pro中的一个Python模块,它提供了对ArcGIS功能的Python编程访问,允许用户通过Python脚本自动执行GIS分析、数据处理、地图制作等任务。arcpy模块使得用户能够在ArcGIS环境中编写脚本,利用强大的地理处理功能进行空间数据管理和分析。它提供了各种工具和函数,可用于读取、编辑、转换和分析地理空间数据,包括矢量数据(如点、线、面)和栅格数据(如影像、DEM)等。
在ArcGIS中使用的是较为古早的Python2.7版本,ArcGIS Pro中使用的是较新的Python3.9版本,同时在今天要使用到的ArcGIS Server中也提供了Arcpy的功能调用。
Arcpy的使用方法比较多,可以直接在ArcGIS软件中进行使用,或者使用掉包的方式在Vs Code或者PyCharm等编译器中进行使用,鄙人更推荐后者,方便在代码编写过程中进行调试和纠错,更直观方便一些。
1. 实现
本文要实现的功能是将一个文件夹中的栅格数据进行批量镶嵌再上传至ArcGIS Server中并进行切片。
那么接下来讨论一下实现思路,分为镶嵌和上传切片两部分。
镶嵌前需要先进行栅格数据的投影,分别使用到了ProjectRaster_management和MosaicToNewRaster_management两个函数进行使用。
上传切片部分使用了ArcGIS Server 10.2 的版本(这个版本与ArcGIS 10.8并不兼容,所以不能同时存在在一台电脑中),需要先通过CreateGISServerConnectionFile函数与Server 创建连接生成一个ags文件,再使用CreateImageSDDraft、AnalyzeForSD、UploadServiceDefinition_server三个函数分别直行创建服务定义草稿文件、错误分析和发布的任务;发布成功后再进行切片,CreateMapServerCache_server和ManageMapServerCacheTiles_server实现了这个功能。
Arcpy中的功能和在ArcGIS中操作是相似的,你可以理解为ArcGIS软件中的面板是对函数的调用而每填入的输入框就是函数的参数,这样能有助于ArcPy代码的编写,同时这是基于此Arcpy的好处就是批量的直行这点类似于模型构建器,也就是直行循环,在需要重复进行计算时比较方便。
2. 部分代码
栅格数据合并的代码如下:
1 | # 栅格数据合并 |
上传至ArcGIS Server的代码如下:
1 | sddraftname = 'servercon.sddraft' |