【GIS实验课】04 GIS数据的批处理方法
01主要内容
研究区域为安徽某市,所下载DEM的是该区域GDEMV2 30M 分辨率数字高程数据,一共有五景,分别使用ArcToolBox中的Batch功能、Model builder对这五景DEM数据实现等高线提取的批量处理,并使用ArcPy编写批处理程序。
1、学会用ArcPy编写批处理程序
2、学会对数据进行批量处理
3、掌握使用Model builder建模进行数据批量处理
03具体步骤
◐ 1. 方法一:contour工具的批处理功能
利用Arctoolbox里面的contour工具的Batch功能进行批量等高线提取(图1)。
◐
2. 方法二:Model builder利用Model builder实现批量等高线提取(图2)
◐
3. 方法三:利用ArcPy进行批量剪裁
在Python的IDLE中编写批量代码,具体代码如下所示:
import arcpy
from arcpy import env
arcpy.CheckOutExtension("3d")
env.workspace="C:\\Users\\Admin\\Desktop\\GIS Practice\\test1\\input_data"
Rasters= arcpy.ListRasters("*","tif")
for raster in Rasters:
contourInterval = 200
baseContour = 0
outContour = "C:\\Users\\Admin\\Desktop\\GIS
Practice\\test1\\output_data\\"+raster.split(".")[0]+"_contour.shp"
arcpy.Contour_3d(raster,outContour,200,0)
print "ok!"
运行结果(图3):
Tips:
通过使用ArcToolBox中的Batch功能、Model builder、 ArcPy这三种方法对研究区域的5景GDEMV2 30M 分辨率数字高程数据进行批量等高线的提取,在运行ArcPy脚本的时候,Contour(raster,outContour,200,0)这一句总是出错,报错的提示是Contour没有被定义,后来将代码改为arcpy.Contour_3d (raster,outContour,200,0)即可,Contour这个help工具给出的示例代码直接是Contour而不arcpy.Contour_3d(这告诉我们遇到问题一定要看help文档,自己学会解决问题!!!),主要是因为在这之前Contour这个工具未被调出,所以正在Python的IDLE里面写的代码时候需要写arcpy.Contour_3d将Contour这个工具给调出来,除此之外还有一个问题就是批量数据要分别命名,所以在写代码的时候需要将每个输出的数据按一定的规则命名:“存储位置” +raster.split(".")[0]+"_contour.shp",通过上面这些细节的修改最近ArcPy脚本运行成功得到了正确的结果。
本次操作不难,就是选取一个工具分布使用三种方法进行批量处理,三种方法各有各的特点,本人更喜欢使用ArcPy进行批量处理数据, ArcPy的处理数据的速度更加快一些。
等高线批量提取的代码可在后台回复“等高线”收到获取方法。
作者|不许人间见白头
排版|Moon
校阅|数读菌
那今天就到这里结束啦,欢迎留言讨论。文中的图片文字未经许可不要随便“引用”。
如果可以的话,希望能够转发分享,点个在看并且点个赞,给个赞赏~~也欢迎规范转载~
也希望大家和我多留言互动啊!(据说这样可以增加我的推送在你的订阅号里出现的概率)
需要你的“分享”和“在看”
END>
如需全文转载文章、投稿或者合作
可添加微信
(回复超慢!!!)
(不要添加我问各种问题,我大概率不会的==)
(入群请一定要备注入群)
(添加后会在晚上非工作时间通过,请稍安勿躁)
公众号
微博