天天看点

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,如需转载请自行联系原作者