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
相关推荐
新生GIS3 小时前
arcgis-空间矫正工具(将下发数据A的信息放置原始数据B的原始信息并放置到成果数据C中,主要按下发数据A的范围)
arcgis
新生GIS3 天前
arcgis-提取范围中最大占比面积的信息或唯一值
arcgis
圆周率的后六位4 天前
GIS相关调研
arcgis·gis·supermap·gisbox·gis组件
tomelrg5 天前
多台服务器批量发布arcgisserver服务并缓存切片
服务器·python·arcgis
FL16238631295 天前
windows下ArcGIS 10.8.2下载安装教程
arcgis
allenjiao13 天前
Cesium粒子系统模拟风场动态效果
javascript·arcgis·gis·webgl·cesium·三维·风场
杨超越luckly14 天前
HTML应用指南:利用GET请求获取全国Apple Store 零售店位置信息
大数据·前端·arcgis·html·数据可视化·门店
典学长编程15 天前
前端开发(HTML,CSS,VUE,JS)从入门到精通!第八天(Vue框架及其安装)(完结篇) 重点 ! ! !
arcgis·vue·vue路由·vue脚手架·router
Wild Iris16 天前
【ArcGIS】分区统计中出现Null值且Nodata无法忽略的问题以及shp擦除(erase)的使用——以NDVI去水体为例
arcgis
新中地GIS开发老师18 天前
2025Mapbox零基础入门教程(14)定位功能
前端·javascript·arcgis·gis·mapbox·gis开发·地理信息科学