摘要: 有一段时间不用IDL了,今天在处理FAST格式的Landsat影像时,想要按波段将FAST格式的影像存储为GeoTIFF格式的影像,需要针对波段数生成数组,于是重新看了一下在IDL中生成数组。 对于一维数组而言,IDL自然就可以生成一个数组,每个元素的值就是其...
有一段时间不用IDL了,今天在处理FAST格式的Landsat影像时,想要按波段将FAST格式的影像存储为GeoTIFF格式的影像,需要针对波段数生成数组,于是重新看了一下在IDL中生成数组。 对于一维数组而言,IDL自然就可以生成一个数组,每个元素的值就是其指标值。
<pre class="brush: py;"> IDL> a = lindgen(n) </pre>
有了这样一个数组,下面的操作就和操作一个元素是一样的,比如要生成一个存指标的平方值的数组。
<pre class="brush: py;"> IDL> b = a^2 </pre>
那么对于二维数组应该怎么办呢?我想到的办法是生成两个数组,一个数组的每个元素存其行指标,另外一个数组的每个元素存其列指标。具体实现可以作如下操作。 `
<pre class="brush: py;"> IDL> a = lindgen(n,m) IDL> y = a/n IDL> x = a-y*n ` </pre>
如此之后将x和y两个和a大小相同的数组当作a的x坐标和y坐标处理就可以了。比如要生成一个高斯函数。
<pre class="brush: py;"> IDL> gauss = exp(-(x^2+y^2)) </pre>
多维数组可以类推。这样处理可以比循环快很多,尤其是多维的时候,不过显而易见,存储量增大了很多,这就是代价。