大家好,欢迎来到IT知识分享网。
Arcpy入门学习笔记(二):脚本工具
主要介绍Arcpy脚本工具制作
文章目录
Arcpy语法速查
1、ArcGIS工具界面的【工具帮助】
2、地理处理的【结果】会话窗口,右键工具提供的“【复制为Python代码片段】
3、ArcGIS模型【导出至Python脚本文件】
Arcpy脚本常用代码
会经常使用到的代码或代码块
包的导入
# 导入sys模块,设置Python解释器的默认编码为UTF-8 import sys reload(sys) sys.setdefaultencoding('utf8') # 导入ArcPy模块 import arcpy # 导入NumPy库 import numpy as np # 导入Python标准库中的os模块,用于操作文件路径 import os # 导入datetime类,用于处理日期和时间 from datetime import datetime # 从ArcPy空间分析模块导入所有函数和类 from arcpy.sa import * # 导入xlwt模块,用于创建和操作Excel文件(xls格式) import xlwt
获取工具箱参数
# 获取参数 layer = arcpy.GetParameter(0) # 获取参数并读取为Unicode out_path = arcpy.GetParameterAsText(1) # 获取参数并转为整数 num = int(arcpy.GetParameterAsText(2)) # 获取参数并转为字符串 out_path = str(arcpy.GetParameterAsText(3)) # 在参数获取方法相同时,可批量获取 args = tuple(arcpy.GetParameterAsText(i) for i in range(arcpy.GetArgumentCount())) Test(*args)
环境设置
#!/usr/bin/env python # coding=utf-8 # 确认分析模块是否可用 arcpy.CheckOutExtension("spatial") # 设置工作空间 arcpy.env.workspace = out_path # 设置并行处理因子为0,因为有的学习版用不了这个功能 arcpy.env.parallelProcessingFactor = '0' # 设置输出可覆盖文件 arcpy.env.overwriteOutput = "True"
工具箱输出
# 在工具箱输出栏中打印信息 arcpy.AddMessage("ok")
脚本工具制作
本部分较为繁琐,可粗略看看
准备好py文件
比如下面这个,先在Pycharm中进行测试,可以根据指定数量生成圆的个数,每个圆的半径依次增加50m
#!/usr/bin/env python # coding=utf-8 # @Time : 2024-04-21 11:41 import sys reload(sys) sys.setdefaultencoding('utf8') import arcpy import os import math def create_shapefiles(num, out_path): # 设置坐标系为WGS84_UTM_50N spatial_reference = arcpy.SpatialReference(32650) # WGS84_UTM_50N的WKID为32650 # 根据num循环创建矢量文件 for i in range(1, num + 1): # 创建要素类名称和路径 circle_name = "Circle_{}m".format(i * 50) circle_path = os.path.join(out_path, circle_name + ".shp") # 创建圆 arcpy.management.CreateFeatureclass(os.path.dirname(circle_path), circle_name, "POLYGON", spatial_reference=spatial_reference) circle_cursor = arcpy.da.InsertCursor(circle_path, ["SHAPE@"]) circle = arcpy.Point() circle_geometry = arcpy.Array() for angle in range(0, 361, 10): circle.X = 50 * i * math.cos(math.radians(angle)) # 半径为50*i circle.Y = 50 * i * math.sin(math.radians(angle)) circle_geometry.add(circle) circle_geometry.add(circle_geometry.getObject(0)) # 添加起始点以闭合圆 circle_cursor.insertRow([arcpy.Polygon(circle_geometry)]) del circle_cursor if __name__ == "__main__": num = 2 out_path = r'G:\MyTestProject\arcpy2_test\data' arcpy.CheckOutExtension("spatial") arcpy.env.parallelProcessingFactor = '0' arcpy.env.overwriteOutput = "True" arcpy.env.workspace = out_path create_shapefiles(num, out_path) arcpy.AddMessage(num) arcpy.AddMessage(out_path)
在Pycharm中运行结果打开如下:
测试没问题之后,将最后一段改掉,从面板获取参数,并将代码中的中文注释都删掉或者改成英文注释,不然会有一些离谱的bug,修改后准备的导入脚本的代码如下:
#!/usr/bin/env python # coding=utf-8 # @Time : 2024-04-21 11:41 import sys reload(sys) sys.setdefaultencoding('utf8') import arcpy import os import math def create_shapefiles(num, out_path): spatial_reference = arcpy.SpatialReference(32650) # WGS84_UTM_50N的WKID为32650 for i in range(1, num + 1): circle_name = "Circle_{}m".format(i * 50) circle_path = os.path.join(out_path, circle_name + ".shp") arcpy.management.CreateFeatureclass(os.path.dirname(circle_path), circle_name, "POLYGON", spatial_reference=spatial_reference) circle_cursor = arcpy.da.InsertCursor(circle_path, ["SHAPE@"]) circle = arcpy.Point() circle_geometry = arcpy.Array() for angle in range(0, 361, 10): circle.X = 50 * i * math.cos(math.radians(angle)) circle.Y = 50 * i * math.sin(math.radians(angle)) circle_geometry.add(circle) circle_geometry.add(circle_geometry.getObject(0)) circle_cursor.insertRow([arcpy.Polygon(circle_geometry)]) del circle_cursor if __name__ == "__main__": # num = 2 # out_path = r'G:\MyTestProject\arcpy2_test\data' num = int(arcpy.GetParameterAsText(0)) out_path = str(arcpy.GetParameterAsText(1)) arcpy.CheckOutExtension("spatial") arcpy.env.parallelProcessingFactor = '0' arcpy.env.overwriteOutput = "True" arcpy.env.workspace = out_path create_shapefiles(num, out_path) arcpy.AddMessage(num) arcpy.AddMessage(out_path)
创建工具
创建好一个工具箱后,在其中创建工具集,并在工具集中添加脚本
修改名称和标签,存储为相对路径(对应的地图文档属性最好也提前设置为相对路径,在【文件】【地图文档属性】【路径名】处进行勾选)
导入脚本文件所在位置
设置参数,一个为“圆的数量”,对应数据类型为长整型;一个为“输出文件夹”,对应数据类型为文件夹
右键打开工具
初步使用可行
脚本工具各功能详解
脚本右键功能
【属性】中的【常规】
【属性】中的【源】
【属性】中的【参数】
【属性】中的【验证】
修改默认编辑和调试
在ArcGIS菜单栏中【地理处理选项】中,将【编辑器】和【调试程序】换做pycharm所在位置,之后即可在脚本右键【编辑】快速在pycharm中打开对应文件(这个根据个人需要设置)
D:\py\Pycharm\bin\pycharm64.exe
总结
脚本工具先自己有个数就行,而且在Pycharm中可以正常运行的工具转为脚本工具可能会有一些奇奇怪怪的错误,最好学一些Arcpy基础之后再用,边学边用就懂了;
其次就是在脚本工具中,尽量不要使用中文,包括注释
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/116592.html

















