美文网首页
Arcgis & AE 处理栅格碰到的一些问题

Arcgis & AE 处理栅格碰到的一些问题

作者: 吵吵人 | 来源:发表于2019-06-28 11:03 被阅读0次

编辑栅格像素值的问题

for (int i = 0; i < blockheight; i++)
      for (int j = 0; j < blockwidth; j++)
            if (values[top + i, left + j] != noDataValue)
                    pixels.SetValue(Convert.ToByte(values[top + i, left + j]), j, i);

以上是正确写法,如果出现类似下面的错误,一、检查width 和 height是否交换了位置。二、在写入时不要忘记Convert.ToByte(),即将你要修改成的数据值转换成byte类型。



pRasterProps.NoDataValue使用问题

目标:将栅格值提取到数组,并将其无值区域统一改成-9999.
思路:将值提取到数组之后,遍历数组,和pRasterProps.NoDataValue作比较看是否一样,一样将其值改为-9999.
问题:pRasterProps.NoDataValue无法直接比较
正确做法:
如果栅格看起来是整型,pRasterProps.NoDataValue里的值可能是byte、unshort或者是其他,根据情况用if语句进行判断,得到int型的NoData,再比较。

            System.Type typeNo = pRasterProps.NoDataValue.GetType();
            if (typeNo.Name == "Byte[]")
            {
                byte[] test = (byte[])pRasterProps.NoDataValue;
                byte[] data = { test[0], (byte)0, (byte)0, (byte)0 };
                NoData = System.BitConverter.ToInt32(data, 0);
            }
            else if (typeNo.Name == "UInt16[]")
            {
                ushort[] test = (ushort[])pRasterProps.NoDataValue;
                NoData = test[0];
            }
            else
            {
                MessageBox.Show("还存在其他的无值类型!");
            }
       

如果是浮点型,直接float就可以了

            float[] test = (float[])pRasterProps.NoDataValue;
            double NoData = Convert.ToDouble(test[0]);

ArcGIS遇到严重的应用程序错误

有的功能路径和名称不能有中文

相关文章

网友评论

      本文标题:Arcgis & AE 处理栅格碰到的一些问题

      本文链接:https://www.haomeiwen.com/subject/zgxscctx.html