• 大小: 31KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-05-10
  • 语言: C#
  • 标签: 块状编码  C#  源码  栅格  

资源简介

栅格数据块状压缩编码的C#源码,由VS2010实现,是最简单的编码方式,可以直接调用。

资源截图

代码片段和文件信息

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace BlockCode
{
    /// 
    /// 单个块的结构---四元组结构
    /// 

    public struct block
    {
        /// 
        /// 块的左上角x坐标——列号
        /// 

        public int xTopLeft;
        /// 
        /// 块的左上角y坐标——行号
        /// 

        public int yTopLeft;
        /// 
        /// 块的尺寸
        /// 

        public int blockszie;
        /// 
        /// 块的值
        /// 

        public float value;
    }

    //块状编码
    /// 
    /// 
    /// 

    class BlockCodeClass
    {
        private bool[] visited;
        //原始数据行列数
        int rowCount = 0;
        int colCount = 0;
        //当前块的起始位置
        int[] location = new int[2];

        public BlockCodeClass()
        { }

        /// 
        /// 数据压缩
        /// 

        /// 四元组链表
        public List Compress(float[] data)
        {
            //获取原始数组行列数
            rowCount = data.GetLength(0);
            colCount = data.GetLength(1);

            //初始化压缩编码存储结构体
            List ComData = new List();

            //初始化访问标示矩阵
            visited = new bool[rowCount colCount];
            for (int i = 0; i < rowCount; i++)
                for (int j = 0; j < colCount; j++)
                {
                    visited[i j] = false;
                }

            //块状压缩编码
            bool endCode = false;
            int row = 0;
            int col = 0;
            while (!endCode)
            {
                int r = 1;
                float value = data[row col];
                bool endSearch = false;
                //生成压缩块
                while (!endSearch)
                {
                    r = r+1;
                    //当前尺寸的块不越界
                    if ((row + r - 1 < rowCount) && (col + r - 1 < colCount))
                    {
                        for (int i = row j = col + r - 1; i < row + r; i++)
                        {
                            if (data[i j] != value||visited[ij])
                            {
                                endSearch = true;
                                break;
                            }
                        }
                        if (!endSearch)
                        {
                            for (int i = row + r - 1 j = col; j < col + r; j++)
                            {
                                if (data[i j] != value || visited[i j])
                                {
                                    endSearch = true;
                                    break;
                                }
                            }
                        }
                    }
                    else
                        break;
   
              

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2012-07-04 20:38  BlockCode\
     目录           0  2012-07-04 20:39  BlockCode\BlockCode\
     文件         869  2012-07-04 20:38  BlockCode\BlockCode.sln
     文件       16384  2012-07-08 15:54  BlockCode\BlockCode.suo
     目录           0  2012-07-04 20:38  BlockCode\BlockCode\bin\
     目录           0  2012-07-08 15:52  BlockCode\BlockCode\bin\Debug\
     文件        7168  2012-07-08 15:54  BlockCode\BlockCode\bin\Debug\BlockCode.exe
     文件       19968  2012-07-08 15:54  BlockCode\BlockCode\bin\Debug\BlockCode.pdb
     文件       11600  2012-07-08 15:54  BlockCode\BlockCode\bin\Debug\BlockCode.vshost.exe
     文件         490  2010-03-17 22:39  BlockCode\BlockCode\bin\Debug\BlockCode.vshost.exe.manifest
     文件        2484  2012-07-04 20:51  BlockCode\BlockCode\BlockCode.csproj
     文件        5729  2012-07-08 15:54  BlockCode\BlockCode\BlockCodeClass.cs
     目录           0  2012-07-04 20:38  BlockCode\BlockCode\obj\
     目录           0  2012-07-04 20:38  BlockCode\BlockCode\obj\x86\
     目录           0  2012-07-08 15:54  BlockCode\BlockCode\obj\x86\Debug\
     文件         269  2012-07-08 15:54  BlockCode\BlockCode\obj\x86\Debug\BlockCode.csproj.FileListAbsolute.txt
     文件        7168  2012-07-08 15:54  BlockCode\BlockCode\obj\x86\Debug\BlockCode.exe
     文件       19968  2012-07-08 15:54  BlockCode\BlockCode\obj\x86\Debug\BlockCode.pdb
     文件        5752  2012-07-08 15:54  BlockCode\BlockCode\obj\x86\Debug\DesignTimeResolveAssemblyReferencesInput.cache
     目录           0  2012-07-04 20:38  BlockCode\BlockCode\obj\x86\Debug\TempPE\
     文件        1965  2012-07-08 15:52  BlockCode\BlockCode\Program.cs
     目录           0  2012-07-04 20:38  BlockCode\BlockCode\Properties\
     文件        1350  2012-07-04 20:38  BlockCode\BlockCode\Properties\AssemblyInfo.cs

评论

共有 条评论