shp批量裁剪工具-基于Arcpy
文章目录
前言
一、遇到的问题?
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相关推荐
- 批量处理|基于ENVI的遥感影像批量裁剪工具
遥感影像裁剪的目的是将研究之外的区域去除,常用的方法是按照行政区划边界或者自然区划边界进行影像裁剪,在基础数据生产中,还经常要进行标准分幅裁剪. ENVI软件支持规则裁剪(矩形范围)和不规则裁剪(任意 ...
- Python地理数据处理 十五:基于arcpy的批量操作
目录 1. 批量格式转换(grd to tiff) 2. 批量定义投影(Albers) 3. 批量投影转换(WGS 1984 to WGS 1984 Albers) 3.1 转换前的栅格图像属性: 3 ...
- 基于arcpy开发arcgis工具
基于arcpy开发arcgis工具 1.添加工具 2.使用方法 2.1批量添加坐标系脚本 工具简介 工具源码 2.2批量添加字段脚本 工具简介 工具源码 2.3更新属性表脚本 工具简介 工具源码 2. ...
- android源码下载方法 批量下载 基于windows os
安装win版的Gitbash, 在这里 http://msysgit.googlecode.com/files/Git-1.6.0.2-preview20080923.exe. 选择默认安装路径(否则 ...
- Android 批量打包 基于Walle的多渠道快速打包自动脚本
Android 批量打包 基于Walle的多渠道快速打包自动脚本 Android Signature V2 Scheme签名下的新一代渠道包打包神器 github主页:https://github.c ...
- Python基于Arcpy对多时间尺度NDVI进行最大值合成
Python基于Arcpy对多时间尺度NDVI进行最大值合成 1. 前期数据准备 2. 处理代码 前言:在现实研究中很容易拿到日尺度.月尺度的NDVI栅格影像,繁多的栅格数据需要按照研究的目的进行重新 ...
- ArcPy 使用Shp批量裁剪栅格 Clip
小记一下 Clip_management 的使用方法 inRaster = "d.tif" #输入栅格路径 outRaster = r"C:/Users/xhz36/Do ...
- Arcpy批量导出shp文件属性表——使用arcpy.da.SearchCursor函数
1.问题描述 我有10个文件夹,每一个文件夹有18个shp文件(温度数据),需要提取每个shp文件的温度数据,即下图属性表中RASTERVALU列. 2.上代码 #coding:utf-8 impo ...
- 基于FME实现的地理数据库批量建库的解决方案,支持gdb、mdb、shapefile等数据格式,gdb批量建库,mdb批量建库,shp批量建库,shapefile批量建库,地理数据批量建库
目录 一.建库效果 1.图层及字段效果 2.图层坐标系效果 二.实现过程 1.制作建库结构表 2.字段映射 3.映射几何类型 4.构建schema 5.输出设置 6.图层坐标系设置 7.FME模板的整 ...
最新文章
- PCL:超详细的基于法向量和曲率的区域生长算法原理以及源码解读
- 速卖通关键词挖掘工具_网站优化必备的关键词挖掘工具
- Excel 技巧篇-公式实现在指定范围内生成指定小数位的随机数
- MyBatis多对多关联查询示例——MyBatis学习笔记之十八
- kotlin学习之类的扩展(四)
- 产业互联网的“神”在哪里?
- java 符号引用与直接引用
- 一文读懂RFID射频识别技术
- 熊啸锋:在线生成个人网站,如何建立个人网站教程
- Ubuntu20.04LTS R语言安装和RStudio配置
- 列表中循环添加字典出现覆盖现象的问题
- 如何在注册表里面删除所有qq相关文件
- /dev/null 21 详解
- 蓝奏网盘带密码文件分享下载链接分析思路
- 【Linux进程间通信】二、pipe管道
- 【数据结构+算法】浙传OJ Contest 2290:13信息1 Java 6 问题 F: Hexagon Game
- NKOJ-3776 工资管理
- 微信小程序设置横竖屏
- Oracle基础-ALC权限
- [图]实习月薪超过$7000 Glassdoor发布最新实习生工资报告
热门文章
- ncl如何添加线shp文件_教程合集 | NCL与GrADS地图绘制合集
- PHP实现百度人脸识别
- 《纽约时报》狗急跳墙,蓝翔技校点击率飙升
- 99999999年_【立个flag】99999999久_拓词心得
- 【文智背后的奥秘】系列篇——基于CRF的人名识别
- 联想340c笔记本cpu能升级吗_联想IdeaPad 340C笔记本装win10系统BIOS设置步骤
- URP/LWRP学习入门
- 中兴盒子 B860AV2.1-T 高安版 烧录固件及教程,当贝桌面带root权限
- ATAM,DSSA,ABSD
- DVB and EPG