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

最新文章

  1. 如何在网页标题栏加入logo图标?
  2. 站内全文检索服务来了,Xungle提供免费全文检索服务
  3. JsonTest
  4. C++注意事项
  5. jQuery iframe之间相互调用
  6. 升级ruby后再安装cocodPod
  7. Macbook Pro安装win7
  8. gc之四--Minor GC、Major GC和Full GC之间的区别
  9. 关于IE调试模式下才能显示效果
  10. SEO 网站URL优化
  11. Ext.js form 表单提交问题
  12. CSS初始化-KISSY CSS Reset 1.0
  13. Week14(12月9日)
  14. 关于Android中so解析那些事
  15. Python 面向对象1-面向对象介绍
  16. android-基础编程-ExpandableListview
  17. U盘安装CentOS 7卡住在 mounting configuration file system
  18. Chronic sleep loss cannot be cured that easily
  19. ossec安装
  20. javascript总述

热门文章

  1. 更改maven下载jar的仓库为阿里云仓库
  2. python HttpServer共享文件
  3. cobbler之ks文件编辑
  4. LVS原理以及配置
  5. java工程中不能存在多个数据库连接jar包
  6. Interrupt handler
  7. zg 作业一
  8. webElement.text()获取到内容为空
  9. 禁止直接访问ashx页面
  10. css样式表之边框