获得每个省的相邻省份,生成Excel-openclaw代码
import arcpyimport osimport timeimport pandas as pdstart_time = time.time()# 设置工作空间gdb = r'C:\Users\yl\Documents\ArcGIS\Projects\MyProject4\MyProject4.gdb'fc = os.path.join(gdb, 'T2024_Dissolve')output_excel = r'C:\Users\yl\Desktop\GIS\相邻省份.xlsx'print("=" * 50)print("省级行政区相邻关系分析")print("=" * 50)# 检查数据count = int(arcpy.GetCount_management(fc)[0])print(f"要素类: T2024_Dissolve")print(f"要素数: {count}")# 查看所有省份名称print("\n所有省级行政区:")all_provinces = []with arcpy.da.SearchCursor(fc, ['省级']) as cursor:for row in cursor: print(f" {row[0]}") all_provinces.append(row[0])# 定义正常的省份列表(包含直辖市、自治区、特别行政区)valid_provinces = ['北京市', '天津市', '河北省', '山西省', '内蒙古自治区','辽宁省', '吉林省', '黑龙江省','上海市', '江苏省', '浙江省', '安徽省', '福建省', '江西省', '山东省','河南省', '湖北省', '湖南省', '广东省', '广西壮族自治区','海南省', '重庆市', '四川省', '贵州省', '云南省', '西藏自治区','陕西省', '甘肃省', '青海省', '宁夏回族自治区', '新疆维吾尔自治区','香港特别行政区', '澳门特别行政区', '台湾省']# Polygon Neighborsneighbors_output = "in_memory\\neighbors"if arcpy.Exists(neighbors_output): arcpy.Delete_management(neighbors_output)print("\n计算相邻关系...")arcpy.PolygonNeighbors_analysis(fc, neighbors_output, '省级')# 读取结果neighbors_data = []with arcpy.da.SearchCursor(neighbors_output, ['src_省级', 'nbr_省级', 'LENGTH']) as cursor:for row in cursor: neighbors_data.append({'省级行政区': row[0],'相邻省份': row[1],'公共边长度': row[2] })df_neighbors = pd.DataFrame(neighbors_data)# 过滤掉非行政区划df_neighbors = df_neighbors[ df_neighbors['省级行政区'].isin(valid_provinces) & df_neighbors['相邻省份'].isin(valid_provinces)]# 按省份分组,汇总相邻省份adjacent_dict = {}for _, row in df_neighbors.iterrows(): prov = row['省级行政区'] nbr = row['相邻省份']if prov not in adjacent_dict: adjacent_dict[prov] = []if nbr not in adjacent_dict[prov]: adjacent_dict[prov].append(nbr)# 创建结果DataFrameresult_data = []for prov in sorted(adjacent_dict.keys()): neighbors = adjacent_dict[prov] result_data.append({'省级行政区': prov,'相邻省份数': len(neighbors),'相邻省份': '、'.join(sorted(neighbors)) })df_result = pd.DataFrame(result_data)print(f"\n========== 相邻省份分析结果 ==========")print(df_result.to_string(index=False))print(f"\n共 {len(df_result)} 个省级行政区")# 导出Excelwith pd.ExcelWriter(output_excel, engine='openpyxl') as writer: df_result.to_excel(writer, index=False, sheet_name='相邻省份') ws = writer.sheets['相邻省份'] ws.column_dimensions['A'].width = 18ws.column_dimensions['B'].width = 12ws.column_dimensions['C'].width = 60from openpyxl.styles import Font, PatternFill, Alignment header_fill = PatternFill('solid', start_color='2E86AB')for cell in ws[1]: cell.font = Font(bold=True, color='FFFFFF', name='Arial') cell.fill = header_fill cell.alignment = Alignment(horizontal='center')for row in ws.iter_rows(min_row=2):for cell in row: cell.alignment = Alignment(horizontal='center') cell.font = Font(name='Arial')print(f"\n输出文件: {output_excel}")end_time = time.time()print(f"\n运行耗时: {end_time - start_time:.2f} 秒")

夜雨聆风