VBA:

 Sub deleteDuplicatedFeature()

 Dim app As IApplication
Set app = Application Dim pMxDocument As IMxDocument
Set pMxDocument = Application.Document Dim pMap As IMap
Set pMap = pMxDocument.FocusMap Dim pFeatureLayer As IFeatureLayer
Set pFeatureLayer = pMap.Layer() Dim pFeatureClass As IFeatureClass
Set pFeatureClass = pFeatureLayer.FeatureClass Dim pFeatureCursor As IFeatureCursor
Set pFeatureCursor = pFeatureClass.Search(Nothing, False) Dim pArea As IArea
Dim pRelOp As IRelationalOperator
Dim pFeature As IFeature
Set pFeature = pFeatureCursor.NextFeature Dim findex As Integer
findex = pFeatureClass.FindField("ifCopyed") Dim fid As Integer
fid = pFeatureClass.FindField("FID") Dim pFilter As ISpatialFilter Dim pFeatureCursorCompared As IFeatureCursor
Dim pFeatureCompared As IFeature
Dim pShapeCompared As IPolygon
Dim pAreaCompared As IArea While Not pFeature Is Nothing Set pRelOp = pFeature.Shape Set pFilter = New SpatialFilter With pFilter
Set .Geometry = pFeature.Shape
.GeometryField = "SHAPE"
.SpatialRel = esriSpatialRelIntersects
End With Set pFeatureCursorCompared = pFeatureClass.Search(pFilter, False)
Set pFeatureCompared = pFeatureCursorCompared.NextFeature While Not pFeatureCompared Is Nothing Set pShapeCompared = pFeatureCompared.Shape If pRelOp.Equals(pShapeCompared) And pFeature.Value(fid) <> pFeatureCompared.Value(fid) Then pFeatureCompared.Delete '删除之后,查询可以可以自动调节 End If Set pFeatureCompared = pFeatureCursorCompared.NextFeature
Wend Set pFeature = pFeatureCursor.NextFeature
Wend

Python:

#run this program at arcgis10.0 environment please

 import arcpy

 fc = "D:\Output.shp"  #change to your own shapefile

 desc = arcpy.Describe(fc)

 shapefieldname = desc.ShapeFieldName

 rows = arcpy.SearchCursor(fc)

 for row in rows:
rows2 = arcpy.UpdateCursor(fc)
for row2 in rows2:
if row.getValue(shapefieldname).equals(row2.getValue(shapefieldname)) and row.getValue("FID") != row2.getValue ("FID"):
rows2.deleteRow(row2)
del row2 del rows

区别:

1 vba繁琐,python简洁

2 vba要用到接口跳转,python没有接口概念,只有类或者函数

3 vba使用变量要先声明,python直接使用,不用声明

4 vba在arcgis10以后不支持了,python会被支持,而且python用途非常之广

5 vba和arcengine中思路非常类似,python开辟了一些新的思路,就像当初接触arcserver javascript api带来的新思路一样

6 vba可以继续使用,大力使用python

7 vba中缩进没有含义,python中缩进具有语法含义

8 vba中的循环和判断语句有开头和结尾(for......end,if......end),python中循环和判断语句有冒号(:)

文章来源:http://www.cnblogs.com/zhangjun1130/archive/2012/10/16/2726000.html

删除重复的feature vba VS 删除重复的feature python的更多相关文章

  1. 用Feature的方式删除SharePoint2010的Page中重复的WebPart

    用Feature的方式删除SharePoint2010的Page中重复的WebPart. 代码如下所示: public class SupportCenterDuplicatedWebpartRemo ...

  2. oracle 快速删除大批量数据方法(全部删除,条件删除,删除大量重复记录)

    oracle 快速删除大批量数据方法(全部删除,条件删除,删除大量重复记录) 分类: ORACLE 数据库 2011-05-24 16:39 8427人阅读 评论(2) 收藏 举报 oracledel ...

  3. SQL重复记录处理(查找,过滤,删除)

    SQL重复记录处理(查找,过滤,删除)     ID int    Title nvarchar(50)    AddDate datetime    数据  www.2cto.com     ID ...

  4. shell脚本实现查找文件夹下重复的文件,并提供删除功能

    Windows下有软件FindDupFile,可以搜索指定目录及其下子目录,列出所有内容完全相同的文件(文件名可能不同),然后由用户选择删除重复的文件. 然而shell脚本却可以使用几行的命令完成与此 ...

  5. SQL语句 删除表user 中字段name 内容重复的记录,

    public class T01 { public static void main(String[] args) { int j=4; j=j+=j-=j*=j; System.out.printl ...

  6. mysql 删除单表内多个字段重复的数据

    mysql 删除单表内多个字段重复的数据 DELETE from lot_log_payflow WHERE (pay_no,sub_flow_type) in () s1) AND id ) s2) ...

  7. Excel-Countif函数对重复值的处理之删除、统计和标记

    问题场景 删除重复值: 统计重复项出现的次数: 对比两列,找出重复项. 场景一 某列员工编号user_id相当于身份证,可以唯一代表这个人,需要删除重复项. 目标 将user_id重复的人员所在行都删 ...

  8. Excel删除重复数据及用公式筛选重复项并标记颜色突出显示

    当表格记录比较多时,常常会有重复数据,而重复记录往往只希望保存一条,因此需要把多余的删除:在 Excel 中,删除重复数据有两种方法,一种是用"删除重复数据"删除,另一种是用&qu ...

  9. VBA高效删除不连续多行

    最近在搞VBA,在感叹Excel功能强大的同时,对于新接触的一门编程语言也很烦恼.很多基础的语法都要靠网上搜索.现总结一些学习到的心得. VBA高效删除不连续多行 在一个拥有几万条数据的Excel中, ...

随机推荐

  1. YAML描述与Python的对应关系

    YAML是"YAML Ain't a Markup Language"的首字母缩写,其语法简单,结构通过空格来展示,(列表)项目使用"-"来代表,(字典)键值对 ...

  2. Spring,Hibernate 集成解决多hbm.xml文件繁多的方案

    开发一个大一点的项目有很多的hbm.xml文件,有时候上百个也不稀奇,如果用 <property name="mappingLocations"> <list&g ...

  3. oracle老是出现监听错误

    解决方法之一: 点击开始-->选择程序--->选中你安装的oracle版本-->选中配置与移植工具-->选中Net Configuration Assistant-->在 ...

  4. 用R进行统计学分析

    1.基本统计 summary函数:R中的summary函数根据输入的类提供输入的摘要.该函数根据输入对象的类调用各种函数.返回值也取决于输入对象.例如,如果输入是一个由数字数据组成的向量,它将为数据提 ...

  5. MySql的基本架构演变

    [MySql的基本架构演变] 没有并发的增长,也就没有必要做高可扩展性的架构. Scale-up :  纵向扩展,通过替换为更好的机器和资源来实现伸缩,提升服务能力 Scale-out : 横向扩展, ...

  6. SSL原理分析

    SSL协议的工作流程: 服务器认证阶段:       1)客户端向服务器发送一个开始信息“Hello”以便开始一个新的会话连接:      2)服务器根据客户的信息确定是否需要生成新的主密钥,如需要则 ...

  7. 查看webdriver针对浏览器的一些函数

    在用webdriver对浏览器进行操作时,很多操作并不是那么好找,后来在朋友的推荐下可以用下面的方法来寻找针对浏览器的一些操作,函数或属性等,这样方便我们可以查找一些方法去完成我们要的操作. 下面是查 ...

  8. ubuntu下 openvpn客户端的配置

    1.安装openvpn sudo apt-get install openvpn 2.配置openvpn 作为客户端,OpenVPN并没有特定的配置文件,而是由服务器提供方给出一个配置文件.对于认证, ...

  9. Redis网络协议

    Redis网络协议较为简单,易于阅读. 命令或数据已\r\n结尾,但除了状态回复,其他数据都是二进制安全的(包含长度) 头部如下: + 正确的状态信息,具体信息是当前行+后面的字符. -  一条错误信 ...

  10. adf 笔记

    1>jsf在bean中如何获取url参数,注意bean的范围,如果存在分页,范围不能设置为request,否则第二次加载的时候参数会为空. 最小设置为view,在当前页面中一直有效. 方法一:F ...