美文网首页
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