Field Calculator处理图形操作问题浅析.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Field Calculator处理图形操作问题浅析 Tsonghua /文 在ESRI用AO框架搭建起应用程序范例-- ArcGIS Desktop中可以用许多编程语言对其进行二次开发,相应的资料可以参考安装Desktop安装盘里的SDK For ..(VBA、Java、.net..)后Developer Help里的 .. Developer Help。其中在提供了完善的代码编写调试运行环境VBE(Visual Basic Editor)里可以用细颗粒搭建适合自己需求的应用工具,参考资料有上面提到的 VBA Developer Help,还有ArcMap.VBA_ArcGISBook.doc(中文) 等经典范例。 除了VBE,在Field Calculator中同样可以使用VBA操作AO底层细颗粒来实现属性、图形的操作。但是Field Calculator中没有调试环境,所以建议借用VBE环境来编写调试所写代码(脚本),以提高代码效率与正确率。 我们知道,Field Calculator在执行的时候,会自动遍历要素集的每一个要素进行运算处理,所以在VBE环境下写的处理过程需要遍历要素集的,转为Field Calculator脚本时取循环里面的部分即可,循环体外部省略;如果需要多次遍历要素集,可以用IFeatureClass.Search()实现;如果不需循环只需要执行一次,在Field Calculator中加上一个标志(比如Flag),在执行一次后让flag值变化达到不浪费地每次执行的目的。 eg1.Field Calculator中的遍历(执行自动遍历每个要素) Dim pGeoCol As IGeometryCollection Set pGeoCol = [Shape] 这是获取每个要素的图形,在Field Calculator执行时,自动遍历 eg2.在Field Calculator中再次使用遍历(同VBE中写法) Dim pMxdoc As IMxDocument Dim pMap As IMap Set pMxdoc = ThisDocument Set pMap = pMxdoc.FocusMap Dim pFeatLayer As IFeatureLayer Set pFeatLayer = pMap.Layer(0) Dim pFeatClass As IFeatureClass Set pFeatClass = pFeatLayer.FeatureClass Dim pFeatCursor As IFeatureCursor Set pFeatCursor = pFeatClass.Search(pSF, True) 用IFeatureClass.Search()来遍历(可以设置图属过滤条件) Dim pFeatureSelected As IFeature Set pFeatureSelected = pFeatCursor.NextFeature Do Until pFeatureSelected Is Nothing … Set pFeatureSelected = pFeatCursor.NextFeature Loop eg3.加标志使得Field Calculator中不做不必要的多次执行 static flag as Boolean 这一步是关键,定义的flag需要为全局变量 if flag = false then 限制 flag 为 false才执行下面的代码 …(处理过程) flag = true 这里在处理完后标志变为true,field calculator不再执行if中过程 end if 下面列举几个范例加以解释。 [范例1]如何求多边形质心到多边形边界最远的距离 思路(将问题分解为小问题): 1.取得面的质心点 pPointCenter2.遍历面的节点(pVerticePoint),求每个节点到质心点距离,求得最长距离 dblMaxDis3.把质心点和最长距离点生成线,写在线层中i = 0 to pPointCol.PointCount – 1 方式对其遍历,用每个点和面质心点求距离 3. esriGeometry.ILine.PutCoords将质心点和最长距离节点作为起止点组成线,添加到线层 代码(具体编写、调试代码): ----------------------------- @Tsonghua----------------------------- Dim dblMaxDis As Double dblMaxDis = 0 Dim intIdx As Integer intIdx = 0 Dim pArea As IArea Set pA

文档评论(0)

803322fw + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档