Пример #1
0
        private void button6_Click(object sender, EventArgs e)
        {
            string foldPath            = "";
            string tempfile            = "";
            string TargetFile          = "";
            FolderBrowserDialog dialog = new FolderBrowserDialog();

            dialog.Description = "请选择文件路径";
            if (dialog.ShowDialog() == DialogResult.OK)
            {
                foldPath = dialog.SelectedPath;
            }//获取文件夹名字
            string[] filenames = Directory.GetFiles(foldPath, "*.shp");  //获取该文件夹下面的所有文件名并限制文件读取的类型

            MessageBox.Show("请选择合并所有文件后的总文件地址");
            SaveFileDialog sfd = new SaveFileDialog();

            sfd.Filter           = "Shp文件|*.shp";    //设置文件类型
            sfd.Title            = "请选择合并所有文件后的总文件地址";
            sfd.FilterIndex      = 1;                //设置默认文件类型显示顺序
            sfd.RestoreDirectory = true;             //保存对话框是否记忆上次打开的目录
            if (sfd.ShowDialog() == DialogResult.OK) //点了保存按钮进入
            {
                TargetFile = sfd.FileName;
            }
            sfd.Dispose();//设置目的文件储存位置

            MessageBox.Show("由于需要缓存空间,请选择缓存文件的地址(在合并完成后会删除,不会对其他空间进行占用)");
            SaveFileDialog sfd1 = new SaveFileDialog();

            sfd1.Title            = "请选择缓存文件的地址";
            sfd1.Filter           = "Shp文件|*.shp";    //设置文件类型
            sfd1.FilterIndex      = 1;                //设置默认文件类型显示顺序
            sfd1.RestoreDirectory = true;             //保存对话框是否记忆上次打开的目录
            if (sfd1.ShowDialog() == DialogResult.OK) //点了保存按钮进入
            {
                tempfile = sfd1.FileName;
            }
            sfd1.Dispose();                                  //设置缓存文件储存位置

            TimeSpan ts1 = new TimeSpan(DateTime.Now.Ticks); //获取当前时间的刻度数

            ShpFunction.MergeManyShpFile(filenames, tempfile, TargetFile);
            TimeSpan ts2      = new TimeSpan(DateTime.Now.Ticks);
            TimeSpan ts       = ts2.Subtract(ts1).Duration();                                                                                               //时间差的绝对值
            String   spanTime = ts.Hours.ToString() + "小时" + ts.Minutes.ToString() + "分" + ts.Seconds.ToString() + "秒" + ts.Milliseconds.ToString() + "毫秒"; //以X小时X分X秒的格式现实执行时间

            MessageBox.Show("合并结束,耗时" + spanTime);
        }