这段代码简单的实现了生成金字塔文件的功能,只是错误处理机制还不完善,可以参考第二段代码,同时,适当的加些try catch……
在此,贴上我的代码
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using OSGeo.GDAL;
namespace Check
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
OpenFileDialog openFileDialog = new OpenFileDialog();
openFileDialog.Title = "载入DEM";
openFileDialog.Filter = "TIFF文件(*.tif;*.tiff)|*.tif;*tiff|TIFF文件(*.tif;*.tiff)|*.img";
if (openFileDialog.ShowDialog(this) == DialogResult.OK)
{
string FileName = openFileDialog.FileName;
CreatePyramids(FileName);
}
}
private bool CreatePyramids(string filename)
{
Gdal.AllRegister();
Gdal.SetConfigOption("USE_RRD", "YES");
Dataset ds = Gdal.Open(filename, Access.GA_Update);
Driver drv = ds.GetDriver();
// System.Type szDriver = drv.ShortName.GetType();
int iWidth = ds.RasterXSize;
int iHeight = ds.RasterYSize;
int iPixelNum = iWidth * iHeight; //图像中的总像元个数
int iTopNum = 4096; //顶层金字塔大小,64*64
int iCurNum = iPixelNum / 4;
int[] anLevels = new int[10