Python 批量 Arcgis 通过矢量数据裁剪栅格数据
2018-07-25 16:36
691 查看
网上已经有批量裁剪的源代码,但是运行问题有很多,经过改动,成功运行,希望对他人有所启发。如果有问题,欢迎留言,希望能够回复帮忙。以下是从网上找到的源码:
[code]#-*- encoding:UTF-8 -*- # Tool Name: 遍历要素裁剪栅格 # Source Name: extractByMask.py # Version: ArcGIS 10.1 # Author: GIScloud # Created: 2012/11/1 import arcpy import string from arcpy.sa import * try: raster = arcpy.GetParameterAsText(0) #要裁剪的栅格 clip_feat = arcpy.GetParameterAsText(1) #裁剪要素类 field = arcpy.GetParameterAsText(2) #命名字段 outworkspace = arcpy.GetParameterAsText(3) #命名字段裁剪后输出目录 for row in arcpy.SearchCursor(clip_feat): mask=row.getValue("Shape") outPath=outworkspace+"\\"+str(row.getValue(field)) outExtractByMask = ExtractByMask(raster,mask) outExtractByMask.save(outPath) except arcpy.ExecuteError: print arcpy.GetMessages()
此为源码,资源来自互联网,链接为:
https://www.cnblogs.com/liweis/p/4252097
运行过程中发现有很多问题,总结如下:
1)报错0100240,不能将运行好的文件保存到某路径。解决办法,更改environment中的workspace。此外,看看你的属性字段是不是有空格,字符是不是超过了13个,是不是有特殊符号,例如'之类,都会引起报错,如果这些都检查没有问题,再看看导入到arcgis工具箱中的脚本是不是有缩进的问题,因为python是由缩进控制作用域,很可能引起代码不循环,不判断等等。更改后代码如下:
[code]#-*- encoding:UTF-8 -*- # Tool Name: maskproperty # Source Name: extractByMask.py # Version: ArcGIS 10.1 # Author: GIScloud # Created: 2012/11/1 import sys reload(sys) sys.setdefaultencoding( "utf-8" ) import arcpy from arcpy import env import string from arcpy.sa import * arcpy.CheckOutExtension("spatial") env.workspace = r"G:\image_bach\origal_data"#enveriment setting try: raster = arcpy.GetParameterAsText(0) #input roster clip_feat = arcpy.GetParameterAsText(1) #input vector field = arcpy.GetParameterAsText(2) #file 字段 outworkspace = arcpy.GetParameterAsText(3) #outputdectory for row in arcpy.SearchCursor(clip_feat): mask=row.getValue("Shape") outpart=str(row.getValue(field)) n=len(outpart) if n <= 13: outPath=outworkspace+"\\"+''.join(outpart.split()) #由于python的文件命名不能超过13个字符,判断是否超了 else: noblankstr=''.join(outpart.split()) #由于命名字段可能存在空格,去掉空格 outPath=outworkspace+"\\"+noblankstr[0:13] #如果字段的字符超过13个,截取前13个 outExtractByMask = ExtractByMask(raster,mask) outExtractByMask.save(outPath) except arcpy.ExecuteError: print arcpy.GetMessages()
运行时候是将此工具配置到arcgis中自己新建的script中运行的。
运行结果:
此为运行结果,文件名是属性字段命名的,如果有空格,将空格去掉作为文件名。
生成文件夹,以属性字段命名,生成的格式是arcgis的栅格文件。
此为原创,转载请注明出处。
阅读更多相关文章推荐
- arcgis通过栅格影像数据批量裁剪shp
- ArcGIS小知识(七)——ArcMap中裁剪影像或DEM等栅格数据,clip和mask遇到的问题
- 【ArcGIS Add-in编程】导入jpg等栅格数据、导入shapefile等矢量数据
- Arcgis 矢量数据提取栅格值的方法
- ArcGIS教程:用不规则矢量多边形裁切栅格数据的方法比较
- 利用ArcGIS Python批量拼接裁剪遥感影像(arcpy batch processing)
- ArcGIS Python实现批量化栅格数据重命名
- 在ArcGIS利用矢量数据剪裁栅格数据的方法
- 利用ArcGIS Python批量拼接裁剪遥感影像(arcpy batch processing)
- ArcGIS Python实现批量化栅格数据重命名
- ArcGIS对矢量进行缓冲分析,并将缓冲区域转化为栅格数据
- 如何将纵多ARCGIS栅格数据批量输出
- ARCGIS中矢量裁剪栅格图像
- 窗体版Python批量处理地理数据--栅格裁剪
- 在arcgis中栅格数据向矢量数据的转换
- C#+Arcengine实现GP工具中Data Management Tool》raster》raster processing中的clip功能(矢量数据对栅格数据的裁剪)
- ArcGIS小知识(十一)——栅格数据在矢量范围的端点值(线)以及整体差值(面)
- 使用矢量面裁剪栅格数据的对齐问题
- Erdas:将shp文件保存为Erdas中适用的AOI文件 矢量数据裁剪栅格
- 【分享】通过Excel生成批量SQL语句,处理大量数据的好办法