关于提高ArcScene加载影像图的分辨率

时间:2024-03-04 18:37:07
问题描述如下:
      对于同一张栅格数据(例如jpg、img),在ArcMap中加载后显示的时候,效果是和通常图片浏览器打开的没有什么差别。可是在ArcScene加载后栅格数据数据发生失真,即分辨率下降了,变得模糊。
      如下图所示:
      1、以下为ArcMAP下打开的效果:
                      
         2、以下为ArcScene下打开的效果(同一张栅格数据):
                       

      出现这种情况的原因:ESRI在三维显示的一种策略吧,为了提高数据的检索,以提高显示数率。对具体的空间栅格操作并没有发生变化。
      1、如果是在桌面平台ArcScene上提高显示分辨率的话可以通过以下方式解决:
      可以在Raster栅格图层中单击属性“layer properties”,然后在“Rendering” 选项卡中最下面的“Quality enhancement for raster image”,将右面的滑块“slider”到最high高的部分就可以了;
      2、如果是自己写程序实现的话,可以通过如下解决方法:
         注意点:I、更改分辨率后,如何让分辨率设置发挥作用。主要是刷新的问题(使用IActiveView刷新、而不能使用Iscene及IScenegraph刷新)
                    II、分辨率数值在( 262144-268435456)范围之内,越大越清晰。使用
I3DProperties.MaxTextureMemory 方法
     
   具体代码:

            IRasterLayer pRLyr = axSceneControl1.Scene.get_Layer(0) as IRasterLayer;
            IActiveView pActiveView = axSceneControl1.Scene as IActiveView;
            if (pActiveView == null) return;

            ILayerExtensions pLayerExts = pRLyr as ILayerExtensions;           
            for (int i = 0; i < pLayerExts.ExtensionCount; i++)
            {
                if (pLayerExts.get_Extension(i) is I3DProperties)
                {
                    I3DProperties p3DProps = pLayerExts.get_Extension(i) as I3DProperties;
                     if (p3DProps != null)
                    {
                        p3DProps.MaxTextureMemory = 268435456;
                        p3DProps.Apply3DProperties(pRLyr);
                        pActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, pRLyr, pActiveView.Extent);
                    }
                }
            }