ARCGIS刷新的故事
转自原文章ARCGIS部分刷新
1, IActiveView.Refresh
全局刷新,即重绘地图中的所有内容,是效率最低的一种刷新方法。当数据量大时非常耗时。所以除非绝对必要,一般推荐使用IActiveView.PartialRefresh方法。当然如果是涉及全部显示范围的更新就需要使用Refresh,比如平移、缩放、全图等操作。
2, IActiveView.PartialRefresh
部分刷新,可以人为指定重绘地图中的部分内容,该方法效率高,推荐使用。下表说明了部分刷新的参数以及Map或PageLayout中刷新的内容:
PartialRefresh方法是部分刷新,效率方面比单纯的Refresh方法高很多。调用Refresh总是绘画毎一个对象。这是非常低效的。所以应该多使用PartialRefresh方法而少用Refresh。
刷新图层:
pMap.PartialRefresh(esriViewGeography, pLayer, null);
刷新所有图层:
pMap.PartialRefresh(esriViewGeography, null, null);
刷新所选择的对象:
pMap.PartialRefresh(esriViewGeoSelection, null, null);
刷新标注:
pMap.PartialRefresh(esriViewGraphics, null, null);
刷新图元
pLayout.PartialRefresh(esriViewGraphics, pElement, null);
刷新所有图元
pLayout.PartialRefresh(esriViewGraphics, null, null);
刷新所选择的图元
pLayout.PartialRefresh(esriViewGraphicSelection, null, null);
特殊的对于清除选择集,要在清除前后均进行一次刷新
1: public void ClearSelectedMapFeatures(ESRI.ArcGIS.Carto.IActiveView activeView, ESRI.ArcGIS.Carto.IFeatureLayer featureLayer)
2: {
3: if(activeView == null || featureLayer == null)
4: {
5: return;
6: }
7: ESRI.ArcGIS.Carto.IFeatureSelection featureSelection = featureLayer as ESRI.ArcGIS.Carto.IFeatureSelection; // Dynamic Cast
8: // Invalidate only the selection cache. Flag the original selection
9: activeView.PartialRefresh(ESRI.ArcGIS.Carto.esriViewDrawPhase.esriViewGeoSelection, null, null);
10: // Clear the selection
11: featureSelection.Clear();
12: // Flag the new selection
13: activeView.PartialRefresh(ESRI.ArcGIS.Carto.esriViewDrawPhase.esriViewGeoSelection, null, null);
14: }
另外,对于如果对地图进行刷新、闪烁的时候,会出现先闪烁后刷新的问题,这是要添加相应的语句进行处理。
1: m_activeView.Refresh();//或者是某种部分刷新的语句
2: m_mapControl.FlashShape(...);
出现这个问题好像是由于图形显示和闪烁不在同一个线程中执行导致的。闪烁图形是一个很快的操作,而刷新背景却需要比较复杂的计算,所以先出来的语句 后执行结束。使用 m_activeView.UpdateWindow后就可以让代码在此等待。等到刷新确实搞定了。才开始执行FlashShape。使用下面的方法就可以解决这个问题:
1: m_activeView.Refresh().//获者是某种部分刷新语句
2: m_activeView.UpdateWindow();//这条语句是关键 。
3: m_mapControl.FlashShape(...);
ARCGIS刷新的故事的更多相关文章
- ArcGIS Engine 刷新问题
link: http://www.cnblogs.com/Jingkunliu/archive/2013/01/10/2854710.html PartialRefresh方法是部分刷新,效率方面比单 ...
- ArcGIS engine中Display类库 (局部刷新)
转自原文 ArcGIS engine中Display类库 (局部刷新) Display类库包括了用于显示GIS数据的对象.除了负责实际输出图像的主要显示对象(display object)外,这个类库 ...
- arcgis python 刷新
arcpy.RefreshActiveView() 刷新地图和布局窗口 arcpy.RefreshTOC() 刷新内容列表 arcpy.RefreshCatalog(r"F:\tknew10 ...
- ArcGIS Engine开发之属性查询
属性查询即基于空间数据的属性数据的查询,通过用户提交SQL语言中的where语句定义的查询条件,对属性数据进行搜索,从而得到查询结果的操作. 相关的类与接口 与属性查询功能相关的类主要有QureyFi ...
- ArcGIS Engine开发之鹰眼视图
鹰眼是GIS软件的必备功能之一.它是一个MapControl控件,主要用来表示数据视图中的地理范围在全图中的位置. 鹰眼一般具有的功能: 1)鹰眼视图与数据视图的地理范围保持同步. 2)数据视图的当前 ...
- ArcGIS Engine开发之地图基本操作(3)
地图数据的加载 一.加载Shapefile数据 Shapefile文件是目前主流的一种空间数据的文件存储方式,也是不同GIS软件进行数据格式转换常用的中间格式.加载Shapefile数据的方式有两种: ...
- ArcGIS 地图性能优化系列一
经常有客户会咨询到如何提高地图的显示性能.为何ArcMap刷新地图那么缓慢.为何地图服务响应要等待10多秒? 诸如这些问题,虽然它们的表象都是相似的,但是往往在分析排查问题的时候,我们发现背后的原因是 ...
- ArcGIS 10.5新功能预览
ArcGIS for Server产品线被重命名为ArcGIS Enterprise. 带来更多丰富的时空GIS功能. 分析地理大数据 捕捉和分析实时传感器数据 快速地理影像分析 ArcGIS Ent ...
- ArcGIS Server开发教程系列(8)ArcGIS API for Javascript-控件(小部件)
1. 鹰眼 OverviewMap小部件用于在其关联的主地图内较清楚的当前鸟瞰图的范围.当主地图范围变化时,鹰眼图会自动在其空间内更新范围以保持和地图的当前范围保持一致,当鹰眼图空间的地图范围 ...
随机推荐
- MySQL Pool
创建连接池 function SqlPool() { this.flag = true;//是否连接过 this.pool = mysql.createPool({ host : 'localhost ...
- JSP页面的静态包含和动态包含的区别与联系
JSP中有两种包含: 静态包含:<%@include file="被包含页面"%> 动态包含:<jsp:include page="被包含页面" ...
- comm---两个文件之间的比较
comm命令可以用于两个文件之间的比较,它有一些选项可以用来调整输出,以便执行交集.求差.以及差集操作. 交集:打印出两个文件所共有的行. 求差:打印出指定文件所包含的且不相同的行. 差集:打印出包含 ...
- Swift学习笔记(8)--函数
1.定义及调用 func sayHelloAgain(personName: String) -> String { return "Hello again, " + per ...
- php安装zendDebug
这次一定要写.这个zendDebug安装说不麻烦也简单,可是我却安装了非常久,就是自己粗心的问题.这个一定要解决呀. 言归正传,首先.去官网上下载zendDebug的安装文件.下载地址.TMD这个地址 ...
- 大型情感类电视连续剧--Android高德之旅(2)地图类型
总要说两句 今天继续我们的Android高德之旅,上一篇已经能够显示最主要的地图了.有主要的放大缩小功能.还有最后做的点击3D旋转.倾斜视角的效果.今天这篇文章来记录一下高德地图的5种地图类型. (其 ...
- 我的vim配置记录
一 总体介绍 配置路径,/etc/vim/vimrc,这个是系统的vim配置,假设一台PC多个用户使用,每一个用户的习惯不同的话,能够使用不同的配置.在用户文件夹下新建一个.vimrc的文件就能够了. ...
- css3的新特性选择器-------属性选择器
自己学css的时候比较乱,这次趁着复习把css3的新特性选择器和css2以前不怎么用的选择器做一个总结 <div id="parent"> <p>I'm a ...
- Oracel 格式化日期 to_char()
select empno,ename,job,mgr,to_char(HIREDATE,'yyyy-mm-dd') as 入职日期,sal,comm,deptno from emp order by ...
- ps---报告当前系统的进程状态
ps aux最初用到Unix Style中,而ps -ef被用在System V Style中,两者输出略有不同.现在的大部分Linux系统都是可以同时使用这两种方式的. linux上进程有5种状态: ...