下面要講的種重分類方法,網上很多。但是好像 System.Array pSafeArray = pPixelBlock.get_SafeArray(0) as System.Array;這一句一直報下面的錯誤。我還沒有解決。
不過還是将這種方法整理一下,轉載自此。

作者本人的初步的解決方法為:
将 pSafeArray.GetValue(x, y) 替換為 pPixelBlock.GetVal(0, c_x, r_y)。 同時避免了“System.Array pSafeArray = pPixelBlock.get_SafeArray(0) as System.Array”的異常問題。該問題很有可能為内部調用 MemoryStream 的 set_Capacity 時,在申請新記憶體時失敗,可能是需要存儲到ViewState中的内容太過龐大,或者可用記憶體太少。導緻嘗試将資料序列化寫入ViewState時記憶體溢出。
下面為正文
--------------------------
栅格重分類方法很多,在AE中有多種方式可以實作,使用地圖代數(在RasterModel中實作),或者IReclassOp,或者Geoprocessor的方式都可以,甚至可以周遊栅格來實作,這是最原始的方式,不過也可能是最實用的。這裡使用的是最原始的周遊栅格的方式。
<a></a>
改變RasterLayer中DEM的值
View Code
及将IRasterLayer存儲起來的方法
1
2
3
4
5
6
7
8
9
<code>public</code> <code>static</code> <code>void</code> <code>SaveRasterLayerTofile(IRasterLayer pRasterLayer, </code><code>string</code> <code>fileName, </code><code>string</code> <code>strFileExtension=</code><code>"TIFF"</code><code>)</code>
<code> </code><code>{</code>
<code> </code><code>IRaster pRaster = pRasterLayer.Raster;</code>
<code> </code><code>IRaster2 pRaster2 = pRaster </code><code>as</code> <code>IRaster2;</code>
<code> </code><code>ISaveAs pSaveAs = pRaster2 </code><code>as</code> <code>ISaveAs;</code>
<code> </code><code>pSaveAs.SaveAs(fileName, </code><code>null</code><code>, strFileExtension);</code>
<code>}</code>
參考文章:
<a href="http://www.thinksaas.cn/topics/0/651/651226.html" target="_blank"> AE 周遊栅格實作栅格重分類(C#實作)</a>
<a href="http://www.bubuko.com/infodetail-156921.html" target="_blank">AE IRasterCursor 改變栅格圖層像素值</a>
沒有整理與歸納的知識,一文不值!高度概括與梳理的知識,才是自己真正的知識與技能。 永遠不要讓自己的自由、好奇、充滿創造力的想法被現實的架構所束縛,讓創造力自由成長吧! 多花時間,關心他(她)人,正如别人所關心你的。理想的騰飛與實作,沒有别人的支援與幫助,是萬萬不能的。
本文轉自wenglabs部落格園部落格,原文連結:http://www.cnblogs.com/arxive/p/6838365.html,如需轉載請自行聯系原作者