在 AE 中数据编辑是一个重难点。它包括的东西很多,如地物的添加,地物的修改,地物查询,节点捕捉,地物的符号化等一系列的问题。熟练的使用地物编辑的功能,是开发一个系统必须具备的条件。数据编辑问题解决得好坏直接决定着软件是否操作方便。在这我只是写一些相应的功能函数,至于软件开发中的架构暂不考虑。
1 添加地物
什么是地物,这是 GIS 的基本概念,在此只说明一点,地物可以表现在地图上,如房子、铁路、水管等等。我们把房子的总称称为一个地物类,在 AE 中对应一个地物类( IFeatureClass ),一个地物类在地图上表示为一个地物层( IFeatureLayer ),单独的一栋房子或一条管道我们称为地物( IFeature ), Arcgis 中一类地物只能放在一个层,通过图层的叠加组成一幅地图。
熟悉面向对象的人都知道,其实上边的地物类和地物的概念就是类和对象的概念。房子、铁路、水管等是一类地物的抽象,而具体的某一房子就是对象了。大家了解这一点,接下来的开发就容易理解一些了。当然,还有一些其他的概念也必须了解一下:如长事务、短事务、编辑空间等。请大家查找一些相关资料,了解这方面的内容。
我们先开始最基本的编辑功能:添加点线面的操作。它包括输入添加点线面和通过鼠标拖动添加点线面。下边讨论一下添加点线面的基本的实现方法:
一、 添加点
我们可以有多种方法添加点,但基本的思路一样,只是有少量的接口有变化。下边是通过 IFeatureClass 的 CreateFeature ()函数添加地物。
IFeatureLayer I  =  MapTest.Map.get_Layer( 0 )  as  IFeatureLayer;
            IFeatureClass fc  =  I.FeatureClass;

            IFeatureClassWrite fcw  =  fc  as  IFeatureClassWrite;

            IWorkspaceEdit w  =  (fc  as  IDataset).Workspace  as  IWorkspaceEdit;
            IFeature f;
            IPoint p;

            w.StartEditing( false );
            w.StartEditOperation();
           
            f  =  fc.CreateFeature();
            p  =   new  PointClass();
            p.PutCoords( 93000 ,  48000 );
            f.Shape  =  p;
            fcw.WriteFeature(f);

            w.StopEditOperation();
            w.StopEditing( true );
二、 添加线
添加线的方法跟添加点一样,不同的只是地物类型不一样而已,我把代码贴出来,大家跟添加点的方式进行对比。
IFeatureLayer I  =  MapTest.Map.get_Layer( 0 )  as  IFeatureLayer;
            IFeatureClass fc  =  I.FeatureClass;

            IFeatureClassWrite fcw  =  fc  as  IFeatureClassWrite;
            IWorkspaceEdit w  =  (fc  as  IDataset).Workspace  as  IWorkspaceEdit;
            IFeature f;
            IPoint p  =   new  PointClass();

            w.StartEditing( false );
            w.StartEditOperation();

             // 可选参数设置
             object  Missing  =  Type.Missing;

            f  =  fc.CreateFeature();
             // 定义一个多义线对象
            IPolyline polyLine  =   new  PolylineClass();
             // 定义一个点的集合
            IPointCollection ptCollect  =  polyLine  as  IPointCollection;
             // 定义一系列要添加到多义线上的点对象,并赋初始值
            p.PutCoords( 95000 ,  48000 );
            ptCollect.AddPoint(p,  ref  Missing,  ref  Missing);
            p.PutCoords( 93000 ,  48000 );
            ptCollect.AddPoint(p,  ref  Missing,  ref  Missing);
            f.Shape  =  polyLine;

            fcw.WriteFeature(f);

            w.StopEditOperation();
            w.StopEditing( true );

三、添加面

添加面和添加线基本一致,将IPolyLine换成IPolygon就可以了

            IFeatureLayer feaLayer  =  MapTest.Map.get_Layer( 0 )  as  IFeatureLayer;
            IFeatureClass fc  =  feaLayer.FeatureClass;

            IFeatureClassWrite fcw  =  fc  as  IFeatureClassWrite;
            IWorkspaceEdit workspace  =  (fc  as  IDataset).Workspace  as  IWorkspaceEdit;
            IFeature f;
            IPoint p  =   new  PointClass();

            workspace.StartEditing( false );
            workspace.StartEditOperation();

             // 可选参数设置
       object  Missing  =  Type.Missing;

            f  =  fc.CreateFeature();
             // 定义一个多边形对象
      IPolygon polygon  =   new  PolygonClass();
             // 定义一个点的集合
      IPointCollection ptCollect  =  polygon  as  IPointCollection;
             // 定义一系列要添加到多边形上的点对象,并赋初始值
      p.PutCoords( 90000 ,  48000 );
            ptCollect.AddPoint(p,  ref  Missing,  ref  Missing);
            p.PutCoords( 90000 ,  50000 );
            ptCollect.AddPoint(p,  ref  Missing,  ref  Missing);
            p.PutCoords( 93000 ,  50000 );
            ptCollect.AddPoint(p,  ref  Missing,  ref  Missing);

            f.Shape  =  polygon;
            fcw.WriteFeature(f);

            workspace.StopEditOperation();
            workspace.StopEditing( true );

使用ArcObjects添加点线面相关推荐

  1. ArcGIS API for JS 4.x + Vue 【1】—— 显示地图和添加点线面

    系列文章目录 [1] ArcGIS API for JS 4.x + Vue 之 显示地图和添加点线面 文章目录 系列文章目录 前言 一.显示地图 安装依赖 1. 添加模块 2. 引入CSS样式 3. ...

  2. BIGEMAP APP标绘添加点线面编辑及拍照标记功能

    一.开始点线面标注 左下角[标绘],点一下之后屏幕上方选择要标注的类型,如下图: 注意:这里可以设置你标绘的点.线.面.的样式:点的图标,大小,粗细,颜色等等可以在这里提前设置风格. 一.开始标注点. ...

  3. 阿里云地图添加点线面

    1.参考实例网址:http://ditu.aliyun.com/jsdoc/map/examples.html 2.实例代码: /*** --------add marker------------- ...

  4. html点线面制作,openlayers 添加点线面 Demo(可直接运行)

    Document 几何图形类型: 无 点 线 多边形 圆 正方形 var map = new ol.Map({ target: 'map', layers: [ new ol.layer.Tile({ ...

  5. 如何在Arcmap中添加点线面要素

    1)在Arcmap的目录栏,选中文件夹连接,打开自己需要的gdb库(可以是空白库) 2)选中gdb库之后,右键->新建->要素类:输入要素类名称,选择要素的"类型" 3 ...

  6. Openlayers 添加 WKT WKB GeoJson 格式点线面数据

    Openlayers 添加 WKT WKB GeoJson 格式点线面数据 OpenLayers 教程 Openlayers 添加 WKT WKB GeoJson 格式点线面数据 在线示例 OpenL ...

  7. supermap学习系列(七)——用户自己在地图上添加点、线、面标注

    学习笔记,方便以后查阅.参考资源超图地理信息云门户-示例:http://www.supermapcloud.com/online/developAPI.html 上代码: <!DOCTYPE h ...

  8. 使用Leaflet创建地图拓扑图

    为什么80%的码农都做不了架构师?>>>    之前我们采用过 Openlayers+Qunee的方案,实现地图拓扑图,鉴于Openlayers是一个古老项目,略显臃肿,对于现代的前 ...

  9. python高德地图可视化_【可视化】python地图可视化_Folium

    本文简单介绍python语言的地图可视化库Folium 效果图 能力概述 Python语言 地图可视化 可以换(高德)底图 有添加点线面和简单配色的功能 可以导出为html页 简介 Folium是Le ...

最新文章

  1. STM32F1库函数初始化系列:串口DMA空闲接收_DMA发送
  2. 为 springboot 添加 debug功能
  3. linux线程调度函数,Linux调度策略及线程优先级设置
  4. 【chorme插件开发】第三节:开发html的展示类型插件实例
  5. 超极本认知六大误区详解:不只是轻薄+长续航
  6. 最新综述|深度学习的单目人体姿态估计
  7. CCF NOI1024 因子个数
  8. 写作之法 —— 如何切题与点题
  9. 拒绝访问(Access Denied)错误的快捷诊断方法
  10. c 和易语言如何传字节集,易语言字节集参数传递详解
  11. Idea设置豆沙绿(保护你的眼不瞎的密码)
  12. 洛谷P5708 【深基2.习2】三角形面积__C++描述
  13. QT编程入门系列文章之二十六——反走样
  14. VMware 配置局域网内访问
  15. 读书笔记—颠覆式创新:移动互联网时代的生存法则
  16. worldpress 添加网站关键词和描述
  17. appStore上传苹果应用程序软件发布流程
  18. cesium城市建筑物光效(cesium篇.23)
  19. ffmpeg —— v4l2录制h264视频文件(边采集边转码)
  20. 视频禁止快进的解决方法

热门文章

  1. RK 3568 移植CH9344驱动流程记录
  2. outlook计算机应用操作题,《计算机应用基础》Internet应用题型专项练习
  3. asciidoc转换html,Word文档到Asciidoc转换
  4. ssh The authenticity of host '172.18.19.XXX (172.18.19.XXX)' can't be established.
  5. 提取OutLook邮件里面的邮件头信息(发件人、收件人)
  6. mybatis中怎样使用having?
  7. 小程序学习之旅---解析html代码-wxParse
  8. 2021年最新 k8s安装部署步骤 kubernetes从入门到实践 K8S实战容器化迁移实战教程 K8S存储之Ceph分布式存储系统 K8S架构师实战指南
  9. 三菱服务器故障显示45代码,三菱数控系统伺服故障和报警代码大全
  10. Linux:Samba 文件共享服务器的搭建与访问