arcgis 影像金字塔
影像金字塔结构:指在同一的空间参照下,根据用户需要以不同分辨率进行存储与显示,形成分辨率由粗到细、数据量由小到大的金字塔结构。影像金字塔结构用于图像编码和渐进式图像传输,是一种典型的分层数据结构形式,适合于栅格数据和影响数据的多分辨率组织,也是一种栅格数据或影像数据的有损压缩方式。
近期在整理大量的栅格数据,构建金字塔结构可以提高显示栅格数据的速度。但是我发现有些文件在构建金字塔结构后,所在文件夹下面并没有出现.rrd文件,很是奇怪。经过查询发现,在C:\temp\rasterproxies下有大量的文件,文件名类似erdas$@_h_aa_mm1.tif.rrd,经过查找资料,发现在构建金字塔时,如果文件夹只读或者raster文件本身只读,那么arcgis将在C:\temp\rasterproxies下生成相应的附属文件和金字塔结构文件。该目录可以在program files\ArcGIS\Utilities中的AdvancedArcMapSettings.exe中进行修改。
影像图配准主要包括以下几个方面
1.打开影像图
2.配准
3.影像图入库/保存
1.打开影像图的代码以前已经写过了。
2.配准
配准 主要使用IGeoReference这个接口来完成工作。
还有使用ActiveView来进行坐标转换,将MapControl中鼠标的点击位置 转换为
地图和影像图上的坐标。
下面介绍IGeoReference接口
首先RasterLayer实现了这个接口
CanGeoRef 监测该图层是否可以做配准
PointsTransform 将鼠标的位置 转换为栅格文件上的相对坐标。
Rectify 将纠正的结果保存为一个新的栅格文件 相当于另存为
Register 纠正的结果生成World文件 和栅格文件保存在同一个目录下
Reset 取消纠正 但是Register 之前的操作不能恢复。
最重要的是下面三个
Shift 一点纠正 就是平移
TwoPointsAdjust 两点配准 有一定的缩放
Warp 三点或以上配准
注意事项
1.每次Register是一个标志阶段
这每次配准的过程中 必须把上次Register 以来的所有配准点数据都使用上。
例如:
首先Register了
然后 1.使用了一点平移
2.接下来 又接受了一个点 这个时候就要使用 两点配准。
3.接下来 又接受了一个点 这个时候就要使用 三点配准了。
2.配准一般还有一个附加的功能
就是 让用户保存每次的配准过程 并且 提供每次配准过程的精度。这个需要自己补充。
3.入库/金字塔
直接来代码:
IRasterProps props=(IRasterProps)this.pRasterLayer.Raster;
m_rasEnv=props.Extent;
IBasicRasterSdeConnection pBasic=new BasicRasterSdeLoader();
//提供连接信息
pBasic.ServerName ="服务期名称" ;
pBasic.Instance ="端口号" ;
pBasic.UserName ="用户名" ;
pBasic.Password ="密码" ;
//提供影像图
pBasic.Raster =this.pRasterLayer .Raster ;
//名称
pBasic.SdeRasterName=rasterNameInDB;
IRasterSdeServerOperation pRo=(IRasterSdeServerOperation)pBasic;
//导入数据
try
{
pRo.Create();
pRo.ComputeStatistics();
}
catch(Exception ex)
{
System.Windows .Forms .MessageBox .Show ("影像数据入库失败!"+ex.Message );
return;
}
//建立金字塔
IRasterSdeStorage2 pRs=(IRasterSdeStorage2)pRo;
pRs.PyramidOption=esriRasterSdePyramidOptEnum.esriRasterSdePyramidBuildSkipFirstLevel;
pRs.PyramidResampleType=rstResamplingTypes.RSP_BilinearInterpolation;
pRo.BuildPyramids();
这个影像图 就这样到数据库中去了
注意
一般自己还要建立一个关于影像图的原数据表 。用来记录那些影像图是属于自己的。还有名称的转换问题
因为中文名称是不可以的。
ArcGIS中的辅助(auxiliary)文件--扩展名为AUX,是一个用来保存栅格文件自身不能保存的辅助信息的文件,它与栅格文件一起存在同一目录中,文件名与栅格文件一致。
一个栅格数据集的统计信息如果不能保存在自身的栅格文件中,那这些信息就会保存在对应的AUX文件中。AUX在对栅格图层进行第一次统计分析的时候自动创建。如果栅格数据集很大,因为统计分析就需要获取更多的栅格单元,以得到统计结果,那么生成AUX文件的时间也需要长些。AUX文件一旦创建好之后,在以后的生产中,如果需要对应栅格数据集的统计信息,那么就可以直接利用AUX文件中的统计数据了,而不需要重新进行统计运算。
如果一个栅格数据集已经创建了影像金字塔,那么AUX文件也保存影像金字塔(RRD)文件保存路径的指针。在影像金字塔创建好之后,直接利用操作系统的Copy、Cut命令来移动栅格图层(raster),系统软件就会在AUX文件中记录的路径中寻找RRD文件。如果找不到对应的RRD文件,系统则会在栅格文件移动前的目录下寻找RRD文件。如果要赋值或粘贴一个栅格数据集,所以为了保住相关文件的完整,最好使用ArcCatalog或ArcInfo实现,
AUX文件能够保存以下信息:彩色地图信息;直方图或表格;坐标系统;变换信息;投影信息。
如果用户是对栅格数据集所在目录或栅格数据集本身进行读写,那么AUX文件会在源数据集的目录下创建。如果栅格数据集所在文件夹是“只读”,或是栅格数据本身是“只读”,那么AUX文件则会创建在默认的代理文件(proxy
file)路径下。
AUX文件存储的信息,只能由ESRI产品,ERDS或是由RDO/ERaster 库派生出的第三方产品读取。