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

现在,可以使用Python脚本来批量裁切,在网上找了位大神的原始代码学习一下:

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

  

将脚本导入ToolBox中(导入方法:ArcGIS使用Python脚本工具),执行报错:UnicodeEncodeError: 'ascii' codec can't encode characters in position 32-34: ordinal not in range(128)问题,使用的是ulipad编译器。

看样子是编码的问题,查了一下解决方案:在开头加上代码设置默认编辑

import sys
reload(sys)
sys.setdefaultencoding( "utf-8" )

  

  • 能够实现部分裁切了,但最后一个出了问题,看消息输出的文件名中怎么多了一个句号?

查看属性表,没有问题。将输出字段"北川羌族自治县"改为"北川羌族自治"能够正确输出,如果改成"北川羌族自治北川羌族自治",又报相同的错误。说明应该就是输出名称长度的问题。

还有一个问题,输出的不同栅格边界接连有点小问题,如果避免这种情况,只能更改系统变量,输出更小的单元格大小。

参考:http://bbs.esrichina-bj.cn/ESRI/viewthread.php?tid=121642

http://blog.sina.com.cn/s/blog_64a3795a01018vyp.html

使用Python脚本批量裁切栅格的更多相关文章

  1. 再议使用Python批量裁切栅格

    曾经写过<使用Python脚本批量裁切栅格>,但今天又遇到这个情况则发现了问题.我们遇到的实际问题往往是有一个需要裁剪的影像(大块的),另外有一个矢量面,现在需要按矢量面每一个要素进行裁剪 ...

  2. python脚本批量生成数据

    在平时的工作中,经常会遇到造数据,特别是性能测试的时候更是需要大量的数据.如果一条条的插入数据库或者一条条的创建数据,效率未免有点低.如何快速的造大量的测试数据呢?在不熟悉存储过程的情况下,今天给大家 ...

  3. 使用python脚本批量设置nginx站点的rewrite规则

    一般情况下,配置rewrite重写规则使用shell脚本即可: 把url拼凑成1,2文件中中的格式,运行 chongxie.sh 即可生成我们需要的rewrite规则 [root@web01:/opt ...

  4. ArcGis Python脚本——批量添加字段

    先看如何增加一个字段 函数:arcpy.AddField_management 语法:AddFields_management (in_table, field_description) 参数 说明 ...

  5. Python脚本批量修改服务器密码

    搭建环境 centos 7.4 使用脚本 python 批量修改connect用户的密码 生成密码为随机密码 保存为xls文档   passwd_chang #!/usr/bin/env python ...

  6. ArcGis Python脚本——批量删除字段

    注意,ArcGis中shp属性表至少要保留除OID(FID).Shape之外的1个字段. 例:批量删除“省级行政区域”除“FID”.“Shape”.“Area”之外的字段. import arcpy ...

  7. ArcGis Python脚本——批量对影像、要素类定义投影

    这一段是批量定义要素类(FeatureClasses)投影的ArcPy代码: 把要处理的要素类塞进一个文件夹(工作空间,workspace),然后将代码开头的路径换成这个“文件夹”的路径,处理完后再做 ...

  8. 使用python脚本批量删除阿里云oss中的mp4文件

    #encoding:utf-8 ''' oss中有一些mp4文件需要删除,首先定位出这些文件放在txt文本中 然后通过python操作oss进行批量删除 ''' import oss2 auth = ...

  9. python脚本批量复制文件

    1.拷贝一个目录下的所有文件及文件夹到另一个目录下(递归拷贝) # cat /home/test.py #!/usr/bin/python  import os  import shutil def ...

随机推荐

  1. .net 基于Jenkins的自动构建系统开发

    先让我给描述一下怎么叫一个自动构建或者说是持续集成 : 就拿一个B/S系统的合作开发来说,在用SVN版本控制的情况下,每个人完成自己代码的编写,阶段性提交代码,然后测试-修改,最后到所有代码完工,进行 ...

  2. Maven学习-使用Nexus搭建Maven私服

    为什么要搭建nexus私服,原因很简单,有些公司都不提供外网给项目组人员,因此就不能使用maven访问远程的仓库地址,所以很有必要在局域网里找一台有外网权限的机器,搭建nexus私服,然后开发人员连到 ...

  3. make mrproper and make clean

    make mrproper命令会删除所有的编译生成文件.内核配置文件(.config文件)和各种备份文件,所以几乎只在第一次执行内核编译前才用这条命令. make clean命令则是用于删除大多数的编 ...

  4. linux strace追踪mysql执行语句 (mysqld --debug)

    转载请注明出处:使用strace追踪多个进程 http://www.ttlsa.com/html/1841.html http://blog.itpub.net/26250550/viewspace- ...

  5. node.js第11课(HTTPclient)

     一.http模块提供了两个函数http.request和http.get,功能是作为client向HTTPserver发起请求.     Ext.Ajax.request({},function ...

  6. SQLite使用EF6的连接配置

    在配置文件中配置连接字符串 1. 使用nuget安装SQLite Install-Package System.Data.SQLite 安装好后的依赖项有: System.Data.SQLite.dl ...

  7. BitmapFactory.Options.inSampleSize 的使用方法

    BitmapFactory.decodeFile(imageFile); 用BitmapFactory解码一张图片时.有时会遇到该错误. 这往往是因为图片过大造成的. 要想正常使用,则须要分配更少的内 ...

  8. 事物的隔离级别与并发完美体现了cap理论(确保数据完整、安全、一致性,在此基础上实现高性能访问(鱼和熊掌不可兼得)

    事物的隔离级别与并发完美体现了cap理论(确保数据完整.安全.一致性,在此基础上实现高性能访问(鱼和熊掌不可兼得)

  9. Spring Boot Jar包转War包 部署到Tomcat下

    原文:https://my.oschina.net/sdlvzg/blog/1562998 我们都知道springBoot中已经内置了tomcat,是不需要我们额外的配置tomcat服务器的,但是有时 ...

  10. pytest文档23-使用多个fixture和fixture直接互相调用

    使用多个fixture 如果用例需要用到多个fixture的返回数据,fixture也可以return一个元组.list或字典,然后从里面取出对应数据. # test_fixture4.py impo ...