las点转为Shapefile文件,获取高程信息

将LiDAR点文件转换为Shapefile文件,方便ArcGIS9.3版本操作

const char *pSrcFileName = "D:\\LidarTestData\\1.las";
std::ifstream ifs;ifs.open(pSrcFileName, std::ios::in | std::ios::binary);
if(ifs == NULL)
{
   cout<<"null"<<endl;
}
liblas::ReaderFactory f ;
liblas::Reader reader = f.CreateWithStream(ifs);
liblas::Header const& header = reader.GetHeader();
printf("Points count: %d\n",header.GetPointRecordsCount());
//空间参考
liblas::SpatialReference lasSRef = header.GetSRS();
string sSRS = lasSRef.GetWKT(lasSRef.eCompoundOK,true);
const char *pSRef = sSRS.c_str();
//创建Shapefile
OGRRegisterAll();
const char *shpPath = "D:\\LidarTestData\\test.shp";
OGRDataSource *pODS = NULL;
OGRLayer *pPtLayer = NULL;
OGRSFDriver *pDriver = OGRSFDriverRegistrar::GetRegistrar()->GetDriverByName("ESRI Shapefile");
pODS = pDriver->CreateDataSource(shpPath);
OGRSpatialReference *pSRS = new OGRSpatialReference(pSRef);
pPtLayer = pODS->CreateLayer("Point1",pSRS,wkbPoint);
char * pZFiledName = "ZValue";
OGRFieldDefn pZField(pZFiledName,OFTReal);
pPtLayer->CreateField(&pZField,1);
while(reader.ReadNextPoint())
{
	double x = reader.GetPoint().GetX();
	double y = reader.GetPoint().GetY();
	double z = reader.GetPoint().GetZ();
         OGRPoint pt(x,y);
	OGRFeature *pFeature = OGRFeature::CreateFeature(pPtLayer->GetLayerDefn());
	pFeature->SetGeometry(&pt);
	pFeature->SetField(pZFiledName,z);
	if( pPtLayer->CreateFeature(pFeature) != OGRERR_NONE )
         {
		printf("Failed to create feature in shapefile.\n");
                  exit(1);
         }
	OGRFeature::DestroyFeature(pFeature);
}
pPtLayer->SyncToDisk();

las点转为Shapefile文件,获取高程信息

时间: 2024-10-14 10:13:28

las点转为Shapefile文件,获取高程信息的相关文章

命令行记录-csv转为shape文件

1.除了一些转为shapefile文件必要的设置外,python读取csv文件也有一些需要注意的地方. (1)首先读取了第一行fds作为字段名 (2)之后以此读取文件内容存在data里,这部分代码比较冗长 (3)代码容易出错的地方在于ds = driver.CreateDataSource(filename[:-4])这行代码,生成shapefile文件的过程,首先是创建给定名称的文件夹(我这里是stations2),然后再在文件夹里储存相应的shp等文件,文件夹的名称和子文件的名称可以不同,但

如何在windows下和linux下获取文件(如exe文件)的详细信息和属性

程序员都很懒,你懂的! 最近在项目开发中,由cs开发的exe的程序,需要自动升级,该exe程序放在linux下,自动升级时检测不到该exe程序的版本号信息,但是我们客户端的exe程序需要获取服务器上新程序的版本号信息.最后由我用java实现linux上exe文件的版本号读取功能.下面是详细代码: package com.herman.utils; import java.io.File; import java.io.FileNotFoundException; import java.io.I

获取要下载文件的大小信息

原文来自IOS教程网,转载时请注明文章的来源:http://ios.662p.com/thread-1660-1-1.html NSURLConnectionDataDelegate方法中有: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 -(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {     //This method is calle

从BIRT报表文件中获取页面设置信息(页边距、纸张大小、输出方向)的方法

报表打印时,尤其是套打的报表,页面设置信息非常重要,比如页边距,纸张大小,输出方向等,而且每个报表的相关参数有可能不同,因此相关参数从具体报表中获取是一个非常正常而且合理的想法. 如果采用BIRT作为报表的开发工具,报表设计器负责报表的制作,BIRT运行时负责处理报表文件,对于浏览器来说,BIRT后端输出的是网页,并不包含页面设置相关信息,浏览器有自己的打印设置选项,也不会从网页中读取,但是报表设计器在报表设计时提供页面设置信息的设置界面,因此我们需要通过运行时API手工写代码从具体报表中获取页

获取系统特殊文件夹路径信息

//获取系统特殊文件夹路径信息 try {   this.textBox1.Text=Environment.GetFolderPath(System.Environment.SpecialFolder.System);   this.textBox2.Text=Environment.GetFolderPath(System.Environment.SpecialFolder.ProgramFiles);   this.textBox3.Text=Environment.GetFolderPa

C# 获取文件详细备注信息 (如图片、视频实际创建时间)

在整理照片/视频时想根据实际拍摄时间重命名文件,但 System.IO.FileInfo 只能获取到文件的创建时间或最后写入时间,不符合要求,遂寻找解决方案 方案 1: System.Drawing c#从相机拍摄的照片中提取拍摄时间 static void Main(string[] args) { var file = @"D:\image\IMG_6789.JPG"; var image = Image.FromFile(file); var propItems = image.

fsck获取文件的block信息和位置信息

原文链接:lxw的大数据田地 » hdfs fsck命令查看HDFS文件对应的文件块信息(Block)和位置信息(Locations) 关键字:hdfs fsck.block.locations 在HDFS中,提供了fsck命令,用于检查HDFS上文件和目录的健康状态.获取文件的block信息和位置信息等. fsck命令必须由HDFS超级用户来执行,普通用户无权限. [[email protected] ~]$ hdfs fsck Usage: DFSck [-list-corruptfileb

ArcGIS教程:获取建筑物轮廓线的高程信息

总览 建筑物轮廓线是一个常用数据集,可方便地供许多用户使用.创建 3D 建筑物的一种简便方法是使用 ArcGlobe或 ArcScene 拉伸这些轮廓线.在许多情况下,高度信息可能已经与这些面相关联.该信息可以表示为每个建筑物的屋顶数.轮廓线应拉伸到的绝对高程或距地面的相对高度.或者,您可能需要收集高度信息以构建 3D 建筑物.如果您有权使用第一次回波激光雷达,则可以建立各建筑物的屋顶高程或各建筑物距地面的高度. 本指南说明如何通过第一次回波激光雷达获得建筑物轮廓线的屋顶高程值和建筑物高度. 从

AE中Shapefile文件添加到SDE数据集

linder_lee 原文 AE中Shapefile文件添加到SDE数据集(c#) 主要完成用C#,通过AE将本地Shapefile文件导入到SDE的指定数据集下面. 首先说下思路: (1) 通过OpenFileDialog打开本地的Shp文件: (2)通过获取的Shp文件创建FeatureClass,获取shp的字段 IFields,并判断图层类别; (3)连接SDE中指定数据集,并创建新的FeatureClass: (4)将shp文件对应的 FeatureClass里的Feature复制到S