删除重复的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中, ...
随机推荐
- 关于U3D场景烘焙的一个想法
U3D进行场景烘焙时,发现阴影无法选择烘焙质量,其实想一下也合理,毕竟是烘焙,是将光照与阴影信息保存到lightmap中,因此阴影的质量取决于光照贴图的精度, 就算光照贴图再大,也远不可能达到实时光照 ...
- ssh 设置反向代理
远程主机上/etc/ssh/sshd_config中,开启 GatewayPorts yes systemctl reload sshd 本地: ssh -CqTnN -R 0.0.0.0:9000: ...
- 大型运输行业实战_day02_1_数据库设计与powerDesigner使用
1.安装powerDesigner 1. 傻瓜式的安装 2.在安装的过程中选择地区后才可以点击同意和下一步 3.安装地址,建议直接把c改为d 4.其他选项直接下一步 2.使用powerDesigner ...
- 上传 第三方jar包 nexus
手动上传第三方jar包到nexus的步奏: 1)按下图方式进行 2)按下图完成上传 3)点击保存完成
- 使用JSON.parse()转化成json对象需要注意的地方
http://blog.csdn.net/u011277123/article/details/53055479 有三种方法: var str = '{"name":"小 ...
- PAT L2-010 排座位(floyd)
布置宴席最微妙的事情,就是给前来参宴的各位宾客安排座位.无论如何,总不能把两个死对头排到同一张宴会桌旁!这个艰巨任务现在就交给你,对任何一对客人,请编写程序告诉主人他们是否能被安排同席. 输入格式: ...
- 215. Kth Largest Element in an Array(QuickSort)
Find the kth largest element in an unsorted array. Note that it is the kth largest element in the so ...
- Extjs面板和布局初探
面板相当于一张干净的白纸,如果直接在上面添加内容,将很难控制面板中内容的显示位置,面板元素越多就越显得凌乱,所以需要在面板上划分不同的区域,将面板内容展示到希望的位置上.ExtJS通过提供多种布局类来 ...
- springmvc使用list集合实现商品列表的批量修改
1将表单的数据绑定到List 1.1 需求 实现商品数据的批量修改. 1.2 需求分析 要想实现商品数据的批量修改,需要在商品列表中可以对商品信息进行修改,饼干且可以批量提交修改后的商品数据. 1.3 ...
- Spring框架之什么是IOC的功能?
1. 什么是IOC的功能? * IoC -- Inverse of Control,控制反转,将对象的创建权反转给Spring!! * 使用IOC可以解决的程序耦合性高的问题!!