关于提高ArcScene加载影像图的分辨率
对于同一张栅格数据(例如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);
}
}
}