C#:C#与libLAS的简单操作(VS2010窗体+代码)

一、将这三个dll文件,拷贝到Debug里面

二、在引用中添加dotnerLibLAS

三、程序

分享给有需要的人,代码质量勿喷。

using LibLAS;

//选择las
private void btn_Path_Click(object sender, EventArgs e)
{
    string xjExtension = "las";
    string xjFileFullPath = xjGetFileFullPath(xjExtension);
    this.txt_lasPath.Text = xjFileFullPath;
    //点云数量
    LASReader xjLASReader = new LASReader(xjFileFullPath);//using LibLAS;
    LASHeader xjLASHeader = xjLASReader.GetHeader();
    uint xjPointCount = xjLASHeader.PointRecordsCount;//点数量//uint=[0,4294967295]
    this.txt_Count.Text = xjPointCount.ToString();
}

/// <summary>
/// 获取单一文件 绝对路径
/// </summary>
/// <param name="extension">扩展名</param>
/// <returns></returns>
private string xjGetFileFullPath(string extension)
{
    OpenFileDialog xjOpenFileDialog = new OpenFileDialog();
    xjOpenFileDialog.Filter = extension + "文件|*." + extension;
    string xjFileFillPath = string.Empty;
    if (xjOpenFileDialog.ShowDialog() == DialogResult.OK)
    {
        xjFileFillPath = xjOpenFileDialog.FileName;
    }
    return xjFileFillPath;
}
//显示XYZ
private void lbl_XYZ_Click(object sender, EventArgs e)
{
    DataTable xjDataTable = new DataTable();

    #region 新建列
    DataColumn xjColumnID = new DataColumn("ID", typeof(string));
    xjDataTable.Columns.Add(xjColumnID);
    DataColumn xjColumnX = new DataColumn("X", typeof(string));
    xjDataTable.Columns.Add(xjColumnX);
    DataColumn xjColumnY = new DataColumn("Y", typeof(string));
    xjDataTable.Columns.Add(xjColumnY);
    DataColumn xjColumnZ = new DataColumn("Z", typeof(string));
    xjDataTable.Columns.Add(xjColumnZ);
    #endregion

    string xjFileFullPath = this.txt_lasPath.Text;
    LASReader xjLASReader = new LASReader(xjFileFullPath);
    LASHeader xjLASHeader = xjLASReader.GetHeader();

    #region 获取所有点的最大最小XYZ
    double xMax = xjLASHeader.GetMaxX();
    double xMin = xjLASHeader.GetMinX();
    double yMax = xjLASHeader.GetMaxY();
    double yMin = xjLASHeader.GetMinY();
    double zMax = xjLASHeader.GetMaxZ();
    double zMin = xjLASHeader.GetMinZ();
    //新建行:最大值
    DataRow xjRowMax = xjDataTable.NewRow();
    xjRowMax[xjColumnID] = "最大值";
    xjRowMax[xjColumnX] = xMax.ToString("f4");//保留4位小数
    xjRowMax[xjColumnY] = yMax.ToString("f4");
    xjRowMax[xjColumnZ] = zMax.ToString("f4");
    //添加行:最大值
    xjDataTable.Rows.Add(xjRowMax);
    //新建行:最小值
    DataRow xjRowMin = xjDataTable.NewRow();
    xjRowMin[xjColumnID] = "最小值";
    xjRowMin[xjColumnX] = xMin.ToString("f4");//保留4位小数
    xjRowMin[xjColumnY] = yMin.ToString("f4");
    xjRowMin[xjColumnZ] = zMin.ToString("f4");
    //添加行:最大值
    xjDataTable.Rows.Add(xjRowMin);
    #endregion

    #region 获取所有点的XYZ
    uint counting = 0;
    while (xjLASReader.GetNextPoint())
    {
        LASPoint xjLASPoint = xjLASReader.GetPoint();
        double x = xjLASPoint.X;
        double y = xjLASPoint.Y;
        double z = xjLASPoint.Z;
        //新建行
        DataRow xjRow = xjDataTable.NewRow();
        xjRow[xjColumnID] = (++counting).ToString();
        xjRow[xjColumnX] = x.ToString("f4");//保留4位小数
        xjRow[xjColumnY] = y.ToString("f4");
        xjRow[xjColumnZ] = z.ToString("f4");
        //添加行
        xjDataTable.Rows.Add(xjRow);
    }
    #endregion

    this.dataGridViewXYZ.DataSource = xjDataTable;//数据绑定
}
//头文件信息
private void btn_HeaderInfo_Click(object sender, EventArgs e)
{
    string xjlasFileFullPath = this.txt_lasPath.Text;
    LASReader xjLASReader = new LASReader(xjlasFileFullPath);
    LASHeader xjLASHeader = xjLASReader.GetHeader();
    #region 头文件信息
    string xjVersion = xjLASHeader.VersionMajor.ToString() + "." + xjLASHeader.VersionMinor.ToString();
    string xjHeaderSize = xjLASHeader.HeaderSize.ToString();
    string xjPointNumber = xjLASHeader.PointRecordsCount.ToString();
    string x_max = (xjLASHeader.GetMaxX()).ToString();
    string x_min = (xjLASHeader.GetMinX()).ToString();
    string y_max = (xjLASHeader.GetMaxY()).ToString();
    string y_min = (xjLASHeader.GetMinY()).ToString();
    string z_max = (xjLASHeader.GetMaxZ()).ToString();
    string z_min = (xjLASHeader.GetMinZ()).ToString();

    string xjHeaderInfo = "File Name: " + xjlasFileFullPath + "\r\n" +
      "Version: " + xjVersion + "\r\n" +
      "Header Size: " + xjHeaderSize + "\r\n" +
      "xjPointNumber: " + xjPointNumber + "\r\n" +
      "X Max: " + x_max + "\r\n" +
      "X Min: " + x_min + "\r\n" +
      "Y Max: " + y_max + "\r\n" +
      "Y Min: " + y_min + "\r\n" +
      "Z Max: " + z_max + "\r\n" +
      "Z Min: " + z_min + "\r\n";
    #endregion
    MessageBox.Show(xjHeaderInfo);
}

四、运行结果

VS2010窗体+代码见:点击打开链接

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

累了就要打游戏

把我养胖,搞代码

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值