arcpy一些常用的数据处理类

python在GIS数据处理中扮演者很重要的角色。很多时候比我们使用Arcmap工具和二次开发方便很多。尤其是处理批量数据的时候 。

这些常用的类:https://www.cnblogs.com/alex-bn-lee/p/8256775.html

一些部分代码示例:

添加字段

复制代码
import arcpy  
import os  
  
# 设置工作空间  
arcpy.env.workspace = "E:\project\水务\坐标点\topo.gdb"  
# 原始图层和字段名  
output_feature_class = "triTriangle"

field_names = ["point_x1", "point_y1", "point_x2", "point_y2", "point_x3", "point_y3"]

# 为新图层添加字段  
for field in field_names[1:]:  
    if field not in [f.name for f in arcpy.ListFields(output_feature_class)]:  
        arcpy.AddField_management(output_feature_class, field, "DOUBLE")
# 单个添加
arcpy.AddField_management(output_feature_class, "uniq_id1", "LONG")
arcpy.AddField_management(output_feature_class, "uniq_id2", "LONG")
arcpy.AddField_management(output_feature_class, "uniq_id3", "LONG")

相交

复制代码
import arcpy
from arcpy import env
 
# 设置工作空间
arcpy.env.workspace = "E:\project\水务\坐标点\topo.gdb"  
 
# 设置两个要相交的图层
layer1 = "triTriangle.shp"
layer2 = "cgcPoint (1).shp"
 
# 设置相交后的结果要素类名称
output_feature_class = "Intersection_Result"
 
# 执行相交分析
arcpy.Intersect_analysis([layer1, layer2], output_feature_class)
 
#如果你想要保留顶点,可以使用以下代码
# arcpy.Intersect_analysis([layer1, layer2], output_feature_class, "INCLUDE_ALL", "#", "Point")
 
print("相交操作完成。")

条件赋值:

复制代码
import arcpy
from arcpy import env
 
# 设置工作空间
workspace = "C:/Users/P52S/Desktop/三角网测试"
env.workspace = workspace
 
# 输入的面要素图层
input_layer = "triPolygon.shp"
 
# 添加一个新的字段
arcpy.AddField_management(input_layer, "mergefield", "SHORT")
# 更新要素类
with arcpy.da.UpdateCursor(input_layer, ["fid", "mergefield"]) as cursor:
    for row in cursor:
        if row[0] < 100000:
            row[1] = 1 # 设置你想要的值
        elif row[0] >= 100000 and row[0] < 200000:
            row[1] = 2 # 设置你想要的值
        elif row[0] >= 200000 and row[0] < 300000:
            row[1] = 3 # 设置你想要的值
        elif row[0] >= 300000 and row[0] < 400000:
            row[1] = 4 # 设置你想要的值
        elif row[0] >= 400000 and row[0] < 500000:
            row[1] = 5 # 设置你想要的值
        elif row[0] >= 500000 and row[0] < 600000:
            row[1] = 6 # 设置你想要的值
        else:
            row[1] = 7 # 设置你想要的值
        cursor.updateRow(row)

融合

复制代码
import arcpy
from arcpy import env
 
# 设置工作空间
workspace = "C:/Users/P52S/Desktop/三角网测试"
env.workspace = workspace
 
# 输入的面要素图层
input_layer = "triPolygon.shp"
 
# 输出图层
output_layer = "merged_layer.shp"
 
# 指定根据哪个字段进行融合
merge_field = "mergefield"
 
# 进行图层融合
arcpy.Dissolve_management(input_layer, output_layer, merge_field)
 
print("图层融合完成。")

裁剪

复制代码
import arcpy  
from arcpy import env  
  
# 设置工作空间  
env.workspace = "C:/Users/P52S/Desktop/三角网测试"
  
# 获取图层  
clip_features = "merged_layer.shp"  # 替换为你的裁剪图层名  
input_features = "triPolygon.shp"  # 替换为你的被裁剪图层名  
  
# 遍历裁剪图层的每个面
count = 1
with arcpy.da.SearchCursor(clip_features, ["SHAPE@"]) as cursor:  
    for row in cursor:  
        clip_geometry = row[0]  
          
        # 为每个裁剪结果创建一个唯一的输出文件名  
        output_name = "triPolygon" + str(count) + ".shp"  
          
        # 执行裁剪操作  
        arcpy.Clip_analysis(input_features, clip_geometry, output_name)
        count = count+1
相关推荐
玩大数据的龙威2 小时前
【ArcGIS技巧】根据地块、界址点图层生成界址线
arcgis
你是一个铁憨憨8 小时前
使用深度学习预训练模型检测物体
人工智能·深度学习·arcgis·影像
嘘嘘出差19 小时前
ArcGIS切片方案记录bundle文件
arcgis
摆烂老大2 天前
SWAT| 水文 | SWAT模型(三):土壤数据库制备
arcgis·水文·swat模型
鸿业远图科技2 天前
分式注记种表达方式arcgis
python·arcgis
城市数据匠2 天前
31【干货】Arcgis属性表常用查询表达式实战大全
arcgis·gis·cad·国土空间规划·自然资源局
新中地GIS开发老师3 天前
【Cesium入门教程】第七课:Primitive图元
arcgis·信息可视化·gis开发·webgis·地理信息系统·地理信息科学
王孝点4 天前
geoserver发布arcgis瓦片地图服务(最新版本)
arcgis
没有梦想的咸鱼185-1037-16636 天前
【大语言模型ChatGPT4/4o 】“AI大模型+”多技术融合:赋能自然科学暨ChatGPT在地学、GIS、气象、农业、生态与环境领域中的应用
人工智能·python·机器学习·arcgis·语言模型·chatgpt·数据分析
新中地GIS开发老师6 天前
【Cesium入门教程】第五课:数据源
arcgis·遥感·gis开发·webgis·地理信息科学