Posted on 2007-03-08 16:43
帥子 閱讀(1188)
評論(0) 編輯 收藏 所屬分類:
j2se技術專區
ArcEngine影像圖配準
影像圖配準主要包括以下幾個方面
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();
????這個影像圖 就這樣到數據庫中去了
????
????注意
????一般自己還要建立一個關于影像圖的原數據表 。用來記錄那些影像圖是屬于自己的。還有名稱的轉換問題
????因為中文名稱是不可以的。??