天天看點

AE 周遊栅格實作栅格重分類(C#實作)

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

不過還是将這種方法整理一下,轉載自此。

AE 周遊栅格實作栅格重分類(C#實作)

作者本人的初步的解決方法為:

将 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,如需轉載請自行聯系原作者

繼續閱讀