文章目录

前言

一、遇到的问题?

1.中文编码问题

2.arcpy函数问题

二、实现步骤

1.代码思路

2.制作脚本工具


前言

使用的arcpy为arcgis10.2对应版本。(python27)

想遍历面要素的多条记录实现批量裁剪功能,所幸找到用shp批量裁剪栅格的代码。在此基础上进行改进,记录一下实现过程和问题的解决。

https://www.likecs.com/show-203727205.html


一、遇到的问题?

1.中文编码问题

遇到如下报错

UnicodeEncodeError: 'ascii' codec can't encode characters in position

解决方法:设置编码

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

2.arcpy函数问题

起初使用Clip_management裁剪,报错参数无效。于是找了很久的对应函数,最终在官网文档找到完美解答。ps:对应的函数位置和arcgis中工具箱位置是一致的。(arcpy.Clip_analysis同样可以实现shp裁剪shp)

裁剪函数如下:

arcpy.analysis.Clip(inputshp,row[0],resultPath+"\\"+tempShpName)

二、实现步骤

1.代码思路

与参考案例类似,首先通过游标遍历面数据子要素,在每次遍历过程中实现clip,并添加目标字段,这里添加的是县域名称,最后实现合并。

字段添加并赋值代码如下:

arcpy.AddField_management(Clip, "qu", "TEXT", "", "", 20)
result=arcpy.CalculateField_management(Clip, "qu", '\"'+ str(row[1]) + '\"',"VB", "")

 合并代码

合并的函数一定要找对应版本的官方文档,arcgis pro使用的是arcpy.ia.Merge,在这里也踩了坑。

arcpy.Merge_management(inFeatures, resultPath+"\\"+'water_merge'+'.shp')

2.制作脚本工具

自定义脚本工具实现流程不再赘述,csdn也有很多很好的教程。推荐GIS荟

全部代码如下:

import arcpy
import sys
reload(sys)
sys.setdefaultencoding('utf-8')inputshp = arcpy.GetParameterAsText(0)
clipshp = arcpy.GetParameterAsText(1)
resultFolder = arcpy.GetParameterAsText(2)
inFeatures = []# 实现批量clip
def clip(inputshp, clipshp, resultPath):#遍历面要素,SHAPE@为几何对象with arcpy.da.SearchCursor(clipshp, ["SHAPE@",'NAME']) as cursor:for row in cursor:tempShpName = str(row[1]) + '.shp'Clip=arcpy.analysis.Clip(inputshp,row[0],resultPath+"\\"+tempShpName)#添加字段arcpy.AddField_management(Clip, "qu", "TEXT", "", "", 20)#字段赋值result=arcpy.CalculateField_management(Clip, "qu", '\"'+ str(row[1]) + '\"',"VB", "")arcpy.AddMessage(row[1]+"success")inFeatures.append(result)#合并arcpy.Merge_management(inFeatures, resultPath+"\\"+'water_merge'+'.shp')
if __name__ == '__main__':clip(inputshp, clipshp, resultFolder)

实现效果如下:

shp批量裁剪工具-基于Arcpy相关推荐

  1. 批量处理|基于ENVI的遥感影像批量裁剪工具

    遥感影像裁剪的目的是将研究之外的区域去除,常用的方法是按照行政区划边界或者自然区划边界进行影像裁剪,在基础数据生产中,还经常要进行标准分幅裁剪. ENVI软件支持规则裁剪(矩形范围)和不规则裁剪(任意 ...

  2. Python地理数据处理 十五:基于arcpy的批量操作

    目录 1. 批量格式转换(grd to tiff) 2. 批量定义投影(Albers) 3. 批量投影转换(WGS 1984 to WGS 1984 Albers) 3.1 转换前的栅格图像属性: 3 ...

  3. 基于arcpy开发arcgis工具

    基于arcpy开发arcgis工具 1.添加工具 2.使用方法 2.1批量添加坐标系脚本 工具简介 工具源码 2.2批量添加字段脚本 工具简介 工具源码 2.3更新属性表脚本 工具简介 工具源码 2. ...

  4. android源码下载方法 批量下载 基于windows os

    安装win版的Gitbash, 在这里 http://msysgit.googlecode.com/files/Git-1.6.0.2-preview20080923.exe. 选择默认安装路径(否则 ...

  5. Android 批量打包 基于Walle的多渠道快速打包自动脚本

    Android 批量打包 基于Walle的多渠道快速打包自动脚本 Android Signature V2 Scheme签名下的新一代渠道包打包神器 github主页:https://github.c ...

  6. Python基于Arcpy对多时间尺度NDVI进行最大值合成

    Python基于Arcpy对多时间尺度NDVI进行最大值合成 1. 前期数据准备 2. 处理代码 前言:在现实研究中很容易拿到日尺度.月尺度的NDVI栅格影像,繁多的栅格数据需要按照研究的目的进行重新 ...

  7. ArcPy 使用Shp批量裁剪栅格 Clip

    小记一下 Clip_management 的使用方法 inRaster = "d.tif" #输入栅格路径 outRaster = r"C:/Users/xhz36/Do ...

  8. Arcpy批量导出shp文件属性表——使用arcpy.da.SearchCursor函数

    1.问题描述 我有10个文件夹,每一个文件夹有18个shp文件(温度数据),需要提取每个shp文件的温度数据,即下图属性表中RASTERVALU列.  2.上代码 #coding:utf-8 impo ...

  9. 基于FME实现的地理数据库批量建库的解决方案,支持gdb、mdb、shapefile等数据格式,gdb批量建库,mdb批量建库,shp批量建库,shapefile批量建库,地理数据批量建库

    目录 一.建库效果 1.图层及字段效果 2.图层坐标系效果 二.实现过程 1.制作建库结构表 2.字段映射 3.映射几何类型 4.构建schema 5.输出设置 6.图层坐标系设置 7.FME模板的整 ...

最新文章

  1. PCL:超详细的基于法向量和曲率的区域生长算法原理以及源码解读
  2. 速卖通关键词挖掘工具_网站优化必备的关键词挖掘工具
  3. Excel 技巧篇-公式实现在指定范围内生成指定小数位的随机数
  4. MyBatis多对多关联查询示例——MyBatis学习笔记之十八
  5. kotlin学习之类的扩展(四)
  6. 产业互联网的“神”在哪里?
  7. java 符号引用与直接引用
  8. 一文读懂RFID射频识别技术
  9. 熊啸锋:在线生成个人网站,如何建立个人网站教程
  10. Ubuntu20.04LTS R语言安装和RStudio配置
  11. 列表中循环添加字典出现覆盖现象的问题
  12. 如何在注册表里面删除所有qq相关文件
  13. /dev/null 21 详解
  14. 蓝奏网盘带密码文件分享下载链接分析思路
  15. 【Linux进程间通信】二、pipe管道
  16. 【数据结构+算法】浙传OJ Contest 2290:13信息1 Java 6 问题 F: Hexagon Game
  17. NKOJ-3776 工资管理
  18. 微信小程序设置横竖屏
  19. Oracle基础-ALC权限
  20. [图]实习月薪超过$7000 Glassdoor发布最新实习生工资报告

热门文章

  1. ncl如何添加线shp文件_教程合集 | NCL与GrADS地图绘制合集
  2. PHP实现百度人脸识别
  3. 《纽约时报》狗急跳墙,蓝翔技校点击率飙升
  4. 99999999年_【立个flag】99999999久_拓词心得
  5. 【文智背后的奥秘】系列篇——基于CRF的人名识别
  6. 联想340c笔记本cpu能升级吗_联想IdeaPad 340C笔记本装win10系统BIOS设置步骤
  7. URP/LWRP学习入门
  8. 中兴盒子 B860AV2.1-T 高安版 烧录固件及教程,当贝桌面带root权限
  9. ATAM,DSSA,ABSD
  10. DVB and EPG