再议使用Python批量裁切栅格

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

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

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

下面是Python源代码

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

# Purpose : ClipRasterByFeature

# Author :gisweis

# Date :2015.7.21

# Version : ArcGIS 10.1

# Email :[email protected]

# 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()

  

时间: 2024-10-14 16:25:31

再议使用Python批量裁切栅格的相关文章

使用Python脚本批量裁切栅格

????对栅格的裁切,我们通常使用裁切(数据管理-栅格-栅格处理)或按掩膜提取(空间分析-提取分析)来裁切,裁切的矢量要素通常是一个要素图层或Shape文件.如果要进行批量处理,可以使用ToolBox中的批量处理工具.但是,有时我们选择的裁切矢量要素不是一个要素图层,而是要素图层中的一个要素,如按标准图幅裁切栅格影像,以前的做法是将要素一个一个的导出来,再进行批量处理.快速导出方法:ArcGIS按字段属性分割文件. ????现在,可以使用Python脚本来批量裁切,在网上找了位大神的原始代码学习

第十节课:再议数据结构与数据类型

一.list, dict, tuple之它们其实是好基友 1. 没有最优秀的数据结构,只有最适用的. 2. 了解每个数据结构才能活学活用 3. 它们相互转化如此简单 ps:如果一个问题能用Python的内置数据类型解决,推荐使用内置的数据类型,这样做的效率是比较好的. list[1,2,3,4] 是有序的 list[0] list[1] list[2] 如果涉及到的问题是有顺序的就可以考虑使用list 字典是键值(本质上list也是键值,键就是游标,只不过是整型), 但字典的键可以是字符串(语义

Python批量修改图片格式和尺寸

Python批量修改图片格式和尺寸 备注: 1.导入了PIL库,是处理图片用的,很强大; 2.导入了的win32库,是判断隐藏文件用的,我们的项目需要删除隐藏文件,不需要的可以直接找到删除. 3.导入send2trash库,是把删除的文件放进垃圾箱,而不是永久删除,这个我只是防止删除有用的文件而搞得,有点严谨了是吧,不需要的可以删掉啊. 4.我这个脚本是Python2.7编写的,但是在处理中文编码的时候非常恶心,尽管最后被我解决了,这个解决的方法,我随后会再单独写一篇,但是此刻我是建议大家不要用

ArcGIS批量导出栅格影像的属性表

需要将多幅TIF影像中的属性表导出后参与运算. 1. 打开 ArcMap 或者 ArcCatalog 2. 在文件夹中新建文件地理数据库. 3. 导入栅格.     4. 打开Python窗口,修改代码,输入进行计算. 以下代码将各文件的属性表分别导出为.csv文件.合并为一个.csv 文件在第二段代码. # coding:utf-8 #功能:批量导出栅格文件的属性表. #使用步骤 1:在相应文件夹下新建"文件地理数据库",并将需要导出属性表的栅格文件"导入"到该数

python批量执行paramiko

puppet 分发软件  同步文件 ssh-批量执行-paramiko-比较好的模块 直接修改远端主机的host文件 python批量执行paramiko,布布扣,bubuko.com

Python批量修改一个目录文件名

#!/usr/bin/env python # -*- coding:utf-8 -*- import re  import os import time # str.split(string) 分割字符串 # '连接符'.join(list) 将列表组成字符串 def change_name(path): global i if not os.path.isdir(path) and not os.path.isfile(path): return False if os.path.isfil

再议 js 数字格式之正则表达式

原文:再议 js 数字格式之正则表达式 前面我们提到到了js的数字格式<浅谈 js 数字格式类型>,之前的<js 正则练习之语法高亮>里也提到了优化数字匹配的正则.不过最近落叶给了我一个正则,让我豁然开朗,比我写的犀利多了,所以今天拿出来简单说一下(只说十进制部分的匹配). 先看下我之前写的正则:/\d+(?:\.\d+)?(?:[eE][+-]?\d+)?|\.\d+(?:[eE][+-]?\d+)?/落叶在 jQuery 中发现的正则: /(?:\d*\.|)\d+(?:[eE

Python批量处理CSV文件

#encoding: utf-8 __author__ = 'DELL' import csv import glob import datetime import sys import os reload(sys) #中文错误 sys.setdefaultencoding( "utf-8" ) ''' @author likehua CSV批处理 ''' class BatchProcessCSV: def __init__(self,inputfolder="c:\\in

再议指针---------函数回调(qsort函数原理)

我们能否写一个这样的函数: 可以对任何类型数据排序 任何人在使用该函数不需要修改该函数代码(即:用户可以不必看到函数源 码,只会调用就行) 思考: 用户需要排序的数据的类型千变万化,可能是int型,也有可能是自定义的结构体类型,各种类型的大小比较规则是不一样的,这样看来实现一个这样全能的排序函数似乎不可能. 但具体需要排序的类型应按照什么规则确定大小只有使用该函数的用户最清楚,那我们可不可以把实现比较大小的功能交给用户来完成了,到时候用户只需告诉该函数比较规则(函数)在什么位置,这样排序函数不就