码迷,mamicode.com
首页 > 编程语言 > 详细

再议使用Python批量裁切栅格

时间:2015-07-21 16:51:29      阅读:2939      评论:0      收藏:1      [点我收藏+]

标签:

曾经写过《使用Python脚本批量裁切栅格》,但今天又遇到这个情况则发现了问题。我们遇到的实际问题往往是有一个需要裁剪的影像(大块的),另外有一个矢量面,现在需要按矢量面每一个要素进行裁剪,无奈arcgis里的工具无法方便地做到。只能自己写工具,这次使用了clip而不是ExtractByMask,因为ExtractByMask有很多限制!

技术分享

下面是工具的操作示例:按每一个要素进行裁剪栅格,输出栅格以选择的字段命名,前提是字段的每个值是唯一的。

技术分享

下面是消息输入和裁剪矢量表的属性表:

技术分享 技术分享

下面是Python源代码

# ---------------------------------------------------------------------------

# Purpose : ClipRasterByFeature

# Author :gisweis

# Date :2015.7.21

# Version : ArcGIS 10.1

# Email :liweis2014@hotmail.com

# Notes :

# ---------------------------------------------------------------------------

 

import sys

reload(sys)

sys.setdefaultencoding( "utf-8" )

 

import arcpy

import string

 

try:

raster = arcpy.GetParameterAsText(0) #clip raster

clip_feat = arcpy.GetParameterAsText(1) #clip featureclass

field = arcpy.GetParameterAsText(2) #name field

outworkspace = arcpy.GetParameterAsText(3) #output ws

outtype = arcpy.GetParameterAsText(4) #output ws

 

total = int(arcpy.GetCount_management(clip_feat).getOutput(0))

count= 1

for row in arcpy.SearchCursor(clip_feat):

mask=row.getValue("Shape")

extent=str(mask.extent.XMin)+" " +str(mask.extent.YMin)+" " +str(mask.extent.XMax)+" " +str(mask.extent.YMax)

outPath=outworkspace+"\\"+str(row.getValue(field)+outtype)

arcpy.AddMessage("chipping: " + str(row.getValue(field)) + "...count:"+str(total)+"\\"+str(count))

arcpy.Clip_management(raster,extent,outPath,mask,"0","ClippingGeometry")

count=count+1

except arcpy.ExecuteError:

    print arcpy.GetMessages()

  

 

再议使用Python批量裁切栅格

标签:

原文地址:http://www.cnblogs.com/liweis/p/4664634.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!