ArcGis Python脚本——将细碎小面合并到相邻的面积最大的面

参数:

polygon_fc 面要素类

area_limit 给定面积值,小于它的面会被合并

给定两个参数即可,这回没有注释。

 1 #polygon_fc 面要素类
 2 #area_limit 给定面积值,小于它的面会被合并
 3 polygon_fc="C:\Users\Administrator\Desktop\yang\New Folder\Export_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 ‘合并完成!‘    

原文地址:https://www.cnblogs.com/yzhyingcool/p/10561332.html

时间: 2024-10-22 17:33:25

ArcGis Python脚本——将细碎小面合并到相邻的面积最大的面的相关文章

ArcGis Python脚本——批量对影像、要素类定义投影

这一段是批量定义要素类(FeatureClasses)投影的ArcPy代码: 把要处理的要素类塞进一个文件夹(工作空间,workspace),然后将代码开头的路径换成这个"文件夹"的路径,处理完后再做其他处理(比如批量塞回原来文件夹,vba,python啥的代码.小工具处理即可). 或者,把要处理的要素类都加载到ArcMap工作空间,然后把下面代码set environment workspace(设置工作空间)的这一行代码干掉,代码执行的默认工作空间就是当前ArcMap的工作空间了.

ArcGis Python脚本——批量删除字段

注意,ArcGis中shp属性表至少要保留除OID(FID).Shape之外的1个字段. 例:批量删除"省级行政区域"除"FID"."Shape"."Area"之外的字段. import arcpy #如果要素类已加载至工作空间,可以直接使用其名字(此处是"省级行政区域"),否,则使用.shp文件的全路径. fieldList=arcpy.ListFields("省级行政区域") for

在arcgis使用python脚本进行字段计算时对中文的处理方案

一.引言 在arcgis打开一个图层的属性表,可以对属性表的某个字段进行计算,但是在平常一般都是使用arcgis提供的字段计算器的界面进行傻瓜式的简答的赋值操作,并没有使用到脚本对字段值进行逻辑的操作.由于最近一直在学python脚本,刚好又碰上一好基友需要我的助攻(使用arcgis制图),这就用上了.本以为能够轻松搞定的,没想到搬石头砸脚了,下面就来说我是如何被砸脚的吧. 二.问题描述:将test字段中值为“湖南”的变为“湖南省”. 这个逻辑是相当的简单,使用python写一个对应的方法为:

[小技巧] Python 脚本暴力破解 HC2600 机顶盒管理密码

家里最近接入了广电有线电视,配了三个创维 HC2600 机顶盒,并且每个机顶盒还带有无线路由器功能. 免费赠送 Internet 接入服务倒也没什么,不过机顶盒内置的 WIFI 实在有点寒酸:只支持 2.4 GHz 频段下 802.11n 150 Mbps 速率的传输.2.4 GHz 频段本来就很拥挤,用户体验并不好,要是和支持 802.11 ac 的双频无线路由器混用的话,恐怕反而会因为干扰起到反作用. 然而要对 HC2600 机顶盒作任何配置修改,都需要管理员密码.网上搜索到 HC2600

ArcGIS + Python 批量裁剪、添加X/Y坐标脚本

前言 前一段时间,同事拿来的数据范围太大,用不了那么多(只需要一个乡镇的,结果拿来区县的),太多了加载也是问题.所以就让我给处理下. 由于文件较多,手动裁剪的话,我一个一个用ArcGIS工具箱中的工具进行裁剪,总体下来用了3个小时左右.后面由于需要再次缩小范围,这次再一个一个手动的话那就太坑了.我想到可以用Python写脚本来批量处理. 正文 在安装ArcGIS软件的时候是默认安装了Python的环境的,并且安装了arcpy库.但是,这个Python是2.7的,我以前学习的是用Python3.X

python——复制目录结构小脚本

引言 有个需要,需要把某个目录下的目录结构进行复制,不要文件,当目录结构很少的时候可以手工去建立,当目录结构复杂,目录层次很深,目录很多的时候,这个时候要是还是手动去建立的话,实在不是一种好的方法,弄不好会死人的.写一个python脚本来处理吧. 首先了解 写python脚本前,先了解几个东西 #!/usr/bin/python 这个东西写过脚本的人都知道,用来标明该脚本的执行器,类似的还有 #!/bin/bash 通过bash来执行 #!/usr/local/php/bin/php 通过php

使用Python脚本批量裁切栅格

????对栅格的裁切,我们通常使用裁切(数据管理-栅格-栅格处理)或按掩膜提取(空间分析-提取分析)来裁切,裁切的矢量要素通常是一个要素图层或Shape文件.如果要进行批量处理,可以使用ToolBox中的批量处理工具.但是,有时我们选择的裁切矢量要素不是一个要素图层,而是要素图层中的一个要素,如按标准图幅裁切栅格影像,以前的做法是将要素一个一个的导出来,再进行批量处理.快速导出方法:ArcGIS按字段属性分割文件. ????现在,可以使用Python脚本来批量裁切,在网上找了位大神的原始代码学习

SecureCRT中python脚本编写

SecureCRT中python脚本编写学习指南 SecureCRT python 引言 在测试网络设备中,通常使用脚本对设备端进行配置和测试以及维护:对于PE设备的测试维护人员来说使用较多是SecureCRT工具:SecureCRT支持VB.JavaScript.Python等多种脚本语言,为了实现脚本在CRT中更加丰富稳定地执行,掌握CRT的常用函数是非常有用的.接下来的时间我将对SecureCRT脚本编写的常用函数展开学习应用. 内容 (1)使用python语言实现SecureCRT中的D

python脚本实现自动为png类型图片添加@2x后缀

@import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css); @import url(/css/cuteeditor.css); @import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css); @import url(/css/cuteeditor.css); 美术们总是忘记或者因为其它