大家可能在平时开发中可能会遇到按行政区加载图层数据的需求,比方说整个国土资源部有某一类型专题数据有若干图层,每个图层数据的范围是整个中国,这时国土资源部开发一套系统可能有这个需求,每个省只能加载本省的数据。以下函数即为按按行政区范围创建行政区范围的图层。
比方说我想获取河南省的数据只需传入行政区图层中河南省图元的Geometry即可。另外如果如果遇到行政区层必须用 esriSpatialRelEnum.esriSpatialRelContains这个参数,否则行政区这个图层就不能只获取河南这个省份,它会把河南省的周围省份,河北,湖北,安徽,陕西,山东,山西等省份的图元也添加创建到新图层。

Code
   /// <summary>
        /// 按行政区范围创建行政区范围的图层
        /// </summary>
        /// <param name="pFeatureLayer">源数据图层</param>
        /// <param name="pGeometry">行政区范围</param>
        /// <param name="bXZQ">图层是否为行政区</param>
        /// <returns>新创建的图层</returns>
        private IFeatureLayer  GetSelectionLayer(IFeatureLayer pFeatureLayer, IGeometry pGeometry,bool bXZQ)
        {
            try
            {
                if (pFeatureLayer != null && pGeometry != null)
                {
                    IQueryFilter pQueryFilter;
                    ISpatialFilter pSpatialFilter = new SpatialFilterClass();
                    IFeatureSelection pFeatureSelection = pFeatureLayer as IFeatureSelection;
                    pSpatialFilter.GeometryField = pFeatureLayer.FeatureClass.ShapeFieldName;
                    pFeatureSelection.Clear();                  
                    if (!bXZQ)
                    {
                        pSpatialFilter.Geometry = pGeometry;                      
                        pSpatialFilter.SpatialRel = esriSpatialRelEnum.esriSpatialRelIntersects;
                        pQueryFilter = pSpatialFilter;                       
                        pFeatureSelection.SelectFeatures(pQueryFilter, esriSelectionResultEnum.esriSelectionResultNew, false);
                    }
                    else
                    {
                        pSpatialFilter.SpatialRel = esriSpatialRelEnum.esriSpatialRelContains;
                        pQueryFilter = pSpatialFilter;                       
                        if(pGeometry is IGeometryCollection)
                        {
                            for (int i = 0; i < (pGeometry as IGeometryCollection).GeometryCount; i++)
                            {
                                pSpatialFilter.Geometry = (pGeometry as IGeometryCollection).get_Geometry(i); 
                                pFeatureSelection.SelectFeatures(pQueryFilter, esriSelectionResultEnum.esriSelectionResultAdd, false);
                            }
                        }
                    }                 
                    IFeatureLayerDefinition pFLDefinition = pFeatureLayer as IFeatureLayerDefinition;
                    IFeatureLayer pNewFeatureLayer = pFLDefinition.CreateSelectionLayer(pFeatureLayer.Name ,true, null, null);
                    pNewFeatureLayer.MaximumScale = pFeatureLayer.MaximumScale;
                    pNewFeatureLayer.MinimumScale = pFeatureLayer.MinimumScale;
                    pNewFeatureLayer.Selectable = pFeatureLayer.Selectable;
                    pNewFeatureLayer.Visible = pFeatureLayer.Visible;
                    pNewFeatureLayer.ScaleSymbols = pFeatureLayer.ScaleSymbols;
                    return pNewFeatureLayer;
                }
                else
                {
                    return null;
                }
            }
            catch (Exception Err)
            {
                MessageBox.Show(Err.Message, "获取SelectionLayer", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return null;
            }
        }
        
    }

原文地址:http://bbs.esrichina-bj.cn/ESRI/viewthread.php?tid=34165&extra=&page=1

版权说明

如果标题未标有<转载、转>等字则属于作者原创,欢迎转载,其版权归作者和博客园共有。
  作      者:温景良
  文章出处:http://wenjl520.cnblogs.com/  或  http://www.cnblogs.com/

分类: ArcEngine
好文要顶 关注我 收藏该文

温景良(Jason)
关注 - 32
粉丝 - 161

+加关注

0
0

« 上一篇:修改本地地图的空间属性
» 下一篇:关键字过滤(转载)

posted @ 2009-03-17 09:11 温景良(Jason) Views(711) Comments(0) Edit 收藏
刷新评论刷新页面返回顶部
注册用户登录后才能发表评论,请 登录 或 注册,访问网站首页。
【推荐】超50万VC++源码: 大型工控、组态\仿真、建模CAD源码2018!
【推荐】腾讯云新用户域名抢购1元起,抓紧抢购
最新IT新闻:
· 精准率首次超过人类!阿里巴巴机器阅读理解打破世界纪录
· 技术帖:每天被今日头条推送文章 背后的算法技术是什么?
· 支付宝实体版老黄历问世:全球限量1000册
· 趣店被蚂蚁金服送上纽交所,现在是时候该独立了
· 蚂蚁宝卡升级:支付宝/微博即将免流
» 更多新闻...
最新知识库文章:

· 步入云计算
· 以操作系统的角度述说线程与进程
· 软件测试转型之路
· 门内门外看招聘
· 大道至简,职场上做人做事做管理

» 更多知识库文章...

公告


hit counter dreamweaver
本文转自我的程序人生博客园博客,原文链接:http://www.cnblogs.com/wenjl520/archive/2009/03/17/1413911.html,如需转载请自行联系原作者

AE按行政区范围加载图层数据(转载)相关推荐

  1. 分图层加载CAD数据

    #region 分图层加载CAD数据 private void btnAddCADByLayer_Click(object sender, EventArgs e) {IWorkspaceFactor ...

  2. AE加载不同数据的方法

    先看一下GeoDatabase核心结构模型图: 1 工作空间工厂WorkspaceFactory对象 WorkspaceFactory是GeoDatabase的入口,是一个抽象类,拥有很多子类,例如S ...

  3. 【ArcGIS风暴】ArcGIS Editor for OSM中文教程(2):下载及加载OSM数据

    本文讲解在ArcGIS中借助OpenStreetMap工具下载并加载OSM数据. 文章目录 1. 下载OSM数据 2. 加载OSM数据 1. 下载OSM数据 在工具箱中双击Download OSM D ...

  4. WebGIS——Openlayers加载图层

    Openlayers加载图层 一.创建Html文件并在body中放入一个Div作为地图显示的容器 <body><div id="map" class=" ...

  5. Cesium基础知识-加载json数据

    viewer = new Cesium.Viewer('cesiumContainer'); //加载json数据生成线 function CreateLineFromJson(params) { / ...

  6. ArcGIS Runtime SDK for .Net 100.6 如何加载本地数据

    由于ArcGIS Engine的32位.部署繁重.不适应新一代Web GIS的发展等缺点,Esri推出了ArcGIS Runtime产品,该产品因其64位.部署轻便.跨平台.更好地适应新一代Web G ...

  7. Cesium开发基础笔记总结(加载影像、加载地形数据、加载矢量)

    Cesium开发基础笔记总结 学习总结于GIS李胜老师博客 Cesium开发基础01加载影像数据 加载影像数据 Cesium中的影像图层类: 无论是二维地图还是三维地图,如果缺少了底图影像或电子地图, ...

  8. autoware加载地图数据与使用rosbag包建图(三)

    autoware加载地图数据(三) 介绍如何为autoware加载地图数据 启动autoware $ cd ~/autoware.ai $ source install/setup.bash $ ro ...

  9. Naigos PNP图无法加载最新数据

    Naigos PNP图无法加载最新数据 前几天IDC断电,设备全部重启,导致nagios pnp图无法正常加载,经过排查发下如下几点状况: 1,查看log日志,并没有报错. 2,npcd没有正常运行, ...

最新文章

  1. 一些知识点的初步理解_4(协方差矩阵,ing...)
  2. 实训09.10:HTML简单表格设计
  3. c#winform演练 ktv项目 制作歌曲播放列表
  4. 04737 c++ 自学考试2019版 第二章课后程序设计题 3
  5. mysql远程连接打不开_MySql远程连接无法打开解决办法
  6. antd如何获取表单的值_JavaScript多个表单序列化获取值
  7. [转载] 算法导论:分治法,python实现合并排序MERGE-SORT
  8. synchronized的使用(一)
  9. 基于Python-turtle库绘制哆啦A梦
  10. 10.Java面向对象(一)
  11. 2015百度之星资格赛.1004放盘子(数学推导)
  12. 投资学翻译及感悟 Lazy Prices
  13. Phase2 Day20 事务 索引
  14. 关于PLC手册中的源型和漏型
  15. 删除的vue怎么找回_vue详情 恢复 删除
  16. IP-guard如何实现远程控制或远程文件传送时,不在客户端弹出授权提示
  17. 比起结果过程更加重要
  18. 自适应均衡器的设计与仿真
  19. 3d mark android 版本,安卓版3D Mark软件介绍及使用方法
  20. keepalived脚本健康检查

热门文章

  1. thinkphp5.1模板中获取资源文件路径
  2. Ozone SCM HA模式下的请求处理过程
  3. 归档(archive)文件(一)
  4. 【量亿数据-量化交易学习】均线系统
  5. jquery获取scrollHeight
  6. 暗黑符文之语1.10
  7. Python 打包 exe 指南
  8. 魔兽地图编辑器插件YDWE的使用与基本设置5 触发编辑器4 技能特效
  9. 【车】铅酸电池和锂电池、鼓刹和碟刹
  10. 什么是计算机素质教育,计算机教育在素质教育中的作用