基于arcpy开发arcgis工具

1.添加工具

1、把压缩包解压缩,把里边的文件放到合适的位置。
2、在arcgis“目录”里点击“连接到文件夹”,将脚本工具所在的文件夹连接到目录里。
图一
3、右击“批量添加坐标系”点击“属性”,进行属性修改。
图二
4、点击“源”,找到之前解压的.py文件添加进来,点击“确认”,完成工具添加。
图三

2.使用方法

2.1批量添加坐标系脚本

工具简介

双击工具,显示操作页面,添加需要添加坐标系的要素类,选择所添加的坐标系,点击确定,完成要素类批量添加坐标系。
图四

工具源码

#Script to Import data to a feature class within a geodatabase
import arcpy, os,sys
reload(sys)
sys.setdefaultencoding('utf-8')

inputs=arcpy.GetParameterAsText(0)
coor_system=arcpy.GetParameterAsText(1)
inputlist = inputs.split(';')
for input in inputlist:
	arcpy.DefineProjection_management(input, coor_system)

2.2批量添加字段脚本

工具简介

所用到的字段文本编辑格式为
字段名、字段别名(可选)、字段类型、字段长度(可选)、字段中可储存的数字位数(可选)、字段中储存的小数点位数(可选)。中间用英文逗号隔开,(可选)的在不需要时不用写上。
如:
FCODE,TEXT,50,
FSCALE,LONG,
USOURCE,TEXT,50,
UPDATETIME,TEXT,50,
UPDATESTATUS,TEXT,1,
status,TEXT,1,
字段类型有TEXT(文本)、FLOAT(单精度浮点)、DOUBLE(双精度浮点)、SHORT(短整型)、LONG(长整型)、DATE(日期)、BLOB(影像或多媒体)、RASTER(栅格影像)、GUID(GUID values),根据需要进行选择。

工具源码

#Script to Import data to a feature class within a geodatabase
import arcpy, os,sys
reload(sys)
sys.setdefaultencoding('utf-8')

inputs=arcpy.GetParameterAsText(0)
inputlist = inputs.split(';')
for input in inputlist:
    #arcpy.env.workspace = os.path.split(input)[0]
    #arcpy.env.workspace = input
    f=open(arcpy.GetParameterAsText(1),"r")
    #lines=f.readlines()
    line=f.readline()
    #for line in lines:
    while line:
        lineList=line.split(',')
        #add field
        arcpy.AddField_management(input,field_name=lineList[0],field_alias=lineList[1],field_type=lineList[2],field_length=lineList[3],field_precision=lineList[4],field_scale=lineList[5].replace("\n",""))
        line=f.readline()
    #close the txt file
    f.close()

2.3更新属性表脚本

工具简介

所用到的更新字段文本编辑格式为
更新字段名,更新值,中间用英文逗号隔开。
如:
UPDATESTATUS,B
status,B

工具源码

#Script to Import data to a feature class within a geodatabase
import arcpy, os,sys
reload(sys)
sys.setdefaultencoding('utf-8')

inputs=arcpy.GetParameterAsText(0)
f=open(arcpy.GetParameterAsText(1),"r")
lines=f.readlines()
inputlist = inputs.split(';')
for input in inputlist:
    cursor = arcpy.UpdateCursor(input)
    for my_row in cursor:
        for line in lines:
            lineList=line.split(',')
            my_row.setValue(lineList[0],lineList[1].replace("\n",""))#####14
        cursor.updateRow(my_row)     
    del my_row
    #close the txt file
    del cursor
f.close()

2.4批量连接表脚本

工具简介

其中连接字段为字段名中间用英文分号隔开
如:
省代码;温编码
此脚本使用中可能会遇到“没有OID”的问题,原因是为连接的表中没有OBJECTID这一列,此字段为软件自动生成的,无法认为修改,通过将表格导入到gdb中,得到的表自动带有OBJECTID,此脚本便可正常使用。

工具源码

#Script to Import data to a feature class within a geodatabase
import arcpy, os,sys
reload(sys)
sys.setdefaultencoding('utf-8')

inputs=arcpy.GetParameterAsText(0)
joinTable=arcpy.GetParameterAsText(1)
joinFieldA=arcpy.GetParameterAsText(2)
joinFieldB=arcpy.GetParameterAsText(3)
inputfields=arcpy.GetParameterAsText(4)
fieldList = inputfields.split(';')
#fieldList[-1]=fieldList[-1].replace("\n","")
inputlist = inputs.split(';')#13
for input in inputlist:
    inputsfields=arcpy.JoinField_management (input, joinFieldA, joinTable, joinFieldB, fieldList)

3.工具分享

以上所有工具已上传至基于arcpy开发的arcgis工具,欢迎有兴趣的朋友参考学习。
网盘链接
提取码:c6w8

4.参考

ArcPy批量化入门篇
ArcGIS Python编程案例-创建自定义地理处理工具
ArcPy批量选择指定属性的要素
ArcGIS使用Python脚本工具
ArcGis Python脚本——批量添加字段
使用arcpy进行批量的空间连接

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是利用arcpy实现ArcGIS的split,erase,intersext和union的代码实现功能的示例: 1. Split ```python import arcpy # 输入要素类路径 in_features = "C:/data/input.gdb/input_fc" # 拆分要素类的字段 split_field = "Split_Field" # 拆分后的输出要素类路径 out_feature_class = "C:/data/output.gdb/split_fc" # 使用 Split 工具进行拆分 arcpy.Split_analysis(in_features, out_feature_class, split_field) ``` 2. Erase ```python import arcpy # 输入要素类路径 in_features = "C:/data/input.gdb/input_fc" # 要擦除的要素类路径 erase_features = "C:/data/input.gdb/erase_fc" # 擦除后的输出要素类路径 out_feature_class = "C:/data/output.gdb/erase_fc" # 使用 Erase 工具进行擦除 arcpy.Erase_analysis(in_features, erase_features, out_feature_class) ``` 3. Intersect ```python import arcpy # 输入要素类路径 in_features = "C:/data/input.gdb/input_fc" # 相交的要素类路径 intersect_features = "C:/data/input.gdb/intersect_fc" # 相交后的输出要素类路径 out_feature_class = "C:/data/output.gdb/intersect_fc" # 使用 Intersect 工具进行相交 arcpy.Intersect_analysis([in_features, intersect_features], out_feature_class) ``` 4. Union ```python import arcpy # 输入要素类路径 in_features = "C:/data/input.gdb/input_fc" # 要合并的要素类路径 union_features = "C:/data/input.gdb/union_fc" # 合并后的输出要素类路径 out_feature_class = "C:/data/output.gdb/union_fc" # 使用 Union 工具进行合并 arcpy.Union_analysis([in_features, union_features], out_feature_class) ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值