删除重复的feature vba VS 删除重复的feature python
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的更多相关文章
- 用Feature的方式删除SharePoint2010的Page中重复的WebPart
用Feature的方式删除SharePoint2010的Page中重复的WebPart. 代码如下所示: public class SupportCenterDuplicatedWebpartRemo ...
- oracle 快速删除大批量数据方法(全部删除,条件删除,删除大量重复记录)
oracle 快速删除大批量数据方法(全部删除,条件删除,删除大量重复记录) 分类: ORACLE 数据库 2011-05-24 16:39 8427人阅读 评论(2) 收藏 举报 oracledel ...
- SQL重复记录处理(查找,过滤,删除)
SQL重复记录处理(查找,过滤,删除) ID int Title nvarchar(50) AddDate datetime 数据 www.2cto.com ID ...
- shell脚本实现查找文件夹下重复的文件,并提供删除功能
Windows下有软件FindDupFile,可以搜索指定目录及其下子目录,列出所有内容完全相同的文件(文件名可能不同),然后由用户选择删除重复的文件. 然而shell脚本却可以使用几行的命令完成与此 ...
- SQL语句 删除表user 中字段name 内容重复的记录,
public class T01 { public static void main(String[] args) { int j=4; j=j+=j-=j*=j; System.out.printl ...
- mysql 删除单表内多个字段重复的数据
mysql 删除单表内多个字段重复的数据 DELETE from lot_log_payflow WHERE (pay_no,sub_flow_type) in () s1) AND id ) s2) ...
- Excel-Countif函数对重复值的处理之删除、统计和标记
问题场景 删除重复值: 统计重复项出现的次数: 对比两列,找出重复项. 场景一 某列员工编号user_id相当于身份证,可以唯一代表这个人,需要删除重复项. 目标 将user_id重复的人员所在行都删 ...
- Excel删除重复数据及用公式筛选重复项并标记颜色突出显示
当表格记录比较多时,常常会有重复数据,而重复记录往往只希望保存一条,因此需要把多余的删除:在 Excel 中,删除重复数据有两种方法,一种是用"删除重复数据"删除,另一种是用&qu ...
- VBA高效删除不连续多行
最近在搞VBA,在感叹Excel功能强大的同时,对于新接触的一门编程语言也很烦恼.很多基础的语法都要靠网上搜索.现总结一些学习到的心得. VBA高效删除不连续多行 在一个拥有几万条数据的Excel中, ...
随机推荐
- Haskell语言学习笔记(29)CPS
CPS (Continuation Passing Style) CPS(延续传递风格)是指函数不把处理结果作为返回值返回而是把处理结果传递给下一个函数的编码风格. 与此相对,函数把处理结果作为返回值 ...
- 本博客已经迁移去http://blog.brightwang.com/
本博客已经迁移去http://blog.brightwang.com/ ,感谢各位支持.
- hibernate最佳实践
1.数据量巨大,性能要求高,hibernate由于在ORM映射中对系统资源消耗也比较高,所以不适合 2.hibernate适合:逻辑复杂,数据量不大. 3.sessionFactory的创建非常消耗资 ...
- python闭包和装饰器(转)
一.python闭包 1.内嵌函数 >>> def func1(): ... print ('func1 running...') ... def func2(): ... prin ...
- Java含有Date的对象序列化网络传输
与短信接口对接时,Date从我这边传输以及在短信平台接收后转换出了问题 传入一个TemplateRequest对象 Feign接口 将含有Date的将要传输的TemplateRequest加上@Req ...
- SciTE: 中文字符支持问题
SciTE: 中文字符支持问题 SciTE(Scintilla Text Editor)是一个体积小巧的文本编辑器. 但是它默认的设置对中文字符处理不好,其实只要对它进行相应的配置,就可以了. 1 ...
- Week4-作业1:阅读笔记与思考
我在这三天时间里阅读了<构建之法>的第四章和第十七章,产生了一些疑问和深层次的思考. 第四章 问题1: 书中第68页提到“注释(包括所有源代码)应该只用ASCII字符,不要用中文或其他特殊 ...
- java script 模拟鼠标事件
try { var selector1 = "._3-8y:first-child"; var evt = document.createEvent("MouseEven ...
- HttpClient 超时时间
setSoTimeout(MilSec):连接超时时间.如果在连接过程中有数据传输,超时时间重新计算. setConnectTimeout(MilSec):获取连接超时时间.如果该参数没有设置,那么默 ...
- ORDER BY 子句在视 图、内联函数、派生表、子查询和公用表表达式中无效
SQL语句: select * from (select distinct t2.issue,cashmoney from (select distinct issue from lot_gamepa ...