使用Python脚本批量裁切栅格

    对栅格的裁切,我们通常使用裁切(数据管理-栅格-栅格处理)或按掩膜提取(空间分析-提取分析)来裁切,裁切的矢量要素通常是一个要素图层或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

 

时间: 2024-09-20 12:32:02

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

再议使用Python批量裁切栅格

曾经写过<使用Python脚本批量裁切栅格>,但今天又遇到这个情况则发现了问题.我们遇到的实际问题往往是有一个需要裁剪的影像(大块的),另外有一个矢量面,现在需要按矢量面每一个要素进行裁剪,无奈arcgis里的工具无法方便地做到.只能自己写工具,这次使用了clip而不是ExtractByMask,因为ExtractByMask有很多限制! 下面是工具的操作示例:按每一个要素进行裁剪栅格,输出栅格以选择的字段命名,前提是字段的每个值是唯一的. 其中,输出类型这个combox设置方法是: 下面是消

编写Python脚本批量配置VPN的教程

  这篇文章主要介绍了编写Python脚本批量配置VPN的教程,搭建VPN在国内目前是一个非常热门的行为(嗯...),需要的朋友可以参考下 缘起 大家都知道,最近的网络不怎么和谐,速度慢不说,VPN 还总断,好在云梯 提供了挺多的服务器可以切换, 但云梯的服务器又挺多,Linux 的 Network Manager 又不支持批量添加配置,甚至配置文件都不能复制新建, 每个服务器的配置都得手动加,非常麻烦. 当然,也可以每次切换时打开配置,光改地址,但是这也非常不方便. 作为一个合格的开发人员,当

ArcGIS使用Python脚本工具

    在Pyhton写的一些代码,用户交互不方便,用户体验比较差,不方便重用.在ArcGIS中可以将用写的Python代码导入到ToolBox中,这样用起来就比较方便了.这里用按要素裁剪栅格的Python来演示如何导入ArcGIS中.代码如下: import sys reload(sys) sys.setdefaultencoding( "utf-8" ) import arcpy import string from arcpy.sa import * try: raster =

oracle-在Linux下Python脚本进行数据抽取,请教各位大神怎么才能批量抽取。

问题描述 在Linux下Python脚本进行数据抽取,请教各位大神怎么才能批量抽取. #!/usr/bin/python -*- coding:utf-8 -*- import cx_Oracle import datetime import time import os from sys import * from string import * import tty, termios from dbipaddr import * if len(argv) !=2: print "Usage:

使用python编写批量卸载手机中安装的android应用脚本_python

该脚本的功能是卸载android手机中安装的所有第三方应用,主要是使用adb shell pm.adb uninstall 命令,所以使用的前提是需要配好adb的环境变量,下面上代码: #!/usr/bin/env python import os def uninstall(): os.popen("adb wait-for-device") print "start uninstall..." for packages in os.popen("adb

使用Python脚本实现批量网站存活检测遇到问题及解决方法_python

做渗透测试的时候,有个比较大的项目,里面有几百个网站,这样你必须首先确定哪些网站是正常,哪些网站是不正常的.所以自己就编了一个小脚本,为以后方便使用. 具体实现的代码如下: #!/usr/bin/python # -*- coding: UTF-8 -*- ''' @Author:joy_nick @博客:http://byd.dropsec.xyz/ ''' import requests import sys f = open('url.txt', 'r') url = f.readline

《树莓派Python编程入门与实战》——3.7 创建Python脚本

3.7 创建Python脚本 树莓派Python编程入门与实战 你可以将Python语句写入文件后再批量运行它们,而不是在每次需要运行程序的时候都一行一行输入进去.这些包含Python语句的文件叫作脚本. 你可以通过Python交互式shell或者用IDLE运行这些Python脚本.清单3.3显示了名为sample.py的脚本文件,它包含两个语句. 清单3.3 sample.py脚本 pi@raspberrypi ~ $ cat py3prog/sample.py print ("Here is

python脚本实现集群检测和管理

场景是这样的:一个生产机房,会有很多的测试机器和生产机器(也就是30台左右吧),由于管理较为混乱导致了哪台机器有人用.哪台机器没人用都不清楚,从而产生了一个想法--利用一台机器来管理所有的机器,记录设备责任人.设备使用状态等等信息....那么,为什么选择python,python足够简单并且拥有丰富的第三方库的支持. 最初的想法 由于刚参加工作不久,对这些东西也都没有接触过,轮岗到某个部门需要做出点东西来(项目是什么还没情况,就要做出东西来,没办法硬着头皮想点子吧)... 本想做一个简单点的自动

Python的批量远程管理和部署工具Fabric用法实例_python

本文实例讲述了Python的批量远程管理和部署工具Fabric用法.分享给大家供大家参考.具体如下: Fabric是Python中一个非常强大的批量远程管理和部署工具,常用于在多个远程PC上批量执行SSH任务. 常见的使用方法大概总结如下: 1. 首先,要将批量执行的任务写入到一个fabfile.py中, 复制代码 代码如下: # -*- coding:utf-8 -*-    from fabric.api import run, local, roles, env, cd  env.host