ArcGis Python脚本——将细碎小面合并到相邻的面积最大的面
Posted yzhyingcool
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ArcGis Python脚本——将细碎小面合并到相邻的面积最大的面相关的知识,希望对你有一定的参考价值。
参数:
polygon_fc 面要素类
area_limit 给定面积值,小于它的面会被合并
给定两个参数即可,这回没有注释。
1 #polygon_fc 面要素类 2 #area_limit 给定面积值,小于它的面会被合并 3 polygon_fc="C:UsersAdministratorDesktopyangNew FolderExport_Output_4.shp" 4 area_limit=4000 5 fieldList=arcpy.ListFields(polygon_fc) 6 field_name_List=[] 7 for field in fieldList: 8 field_name_List.append(field.name) 9 if ‘Shape_Area‘ not in field_name_List : 10 arcpy.AddField_management(polygon_fc,‘Shape_Area‘,‘DOUBLE‘,field_precision=18,field_scale=6) 11 arcpy.CalculateField_management(polygon_fc,‘Shape_Area‘,‘!shape.area!‘,‘PYTHON_9.3‘) 12 updateCursor=arcpy.UpdateCursor(polygon_fc,‘Shape_Area<=‘+str(area_limit)) 13 for small_row in updateCursor: 14 small_geometry=small_row.shape 15 searchcursor = arcpy.SearchCursor(polygon_fc, ‘Shape_Area>‘ + str(area_limit)) 16 areas=[] 17 for row in searchcursor: 18 geometry = row.shape 19 if (small_geometry.touches(geometry)): 20 areas.append(row.getValue(‘Shape_Area‘)) 21 updateCursor1 = arcpy.UpdateCursor(polygon_fc, ‘Shape_Area>‘ + str(area_limit)) 22 if len(areas)>0: 23 area_max = max(areas) 24 for row1 in updateCursor1: 25 if (row1.getValue(‘Shape_Area‘) == area_max): 26 row1.shape = row1.shape.union(small_geometry) 27 updateCursor1.updateRow(row1) 28 updateCursor.deleteRow(small_row) 29 del updateCursor1 30 del updateCursor 31 del searchcursor 32 print ‘合并完成!‘
以上是关于ArcGis Python脚本——将细碎小面合并到相邻的面积最大的面的主要内容,如果未能解决你的问题,请参考以下文章