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

  总览

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

  本指南说明如何通过第一次回波激光雷达获得建筑物轮廓线的屋顶高程值和建筑物高度。

  从激光雷达信息创建栅格高程面

  首先,将激光雷达信息转换为栅格高程面。从大型激光雷达点集合创建栅格 DEM 和 DSM 指南介绍创建栅格高程面的过程。创建高程面时,确保选择一个可用于确定建筑物高程高度的单元大小。单元大小必须足够小,以便沿轮廓线边缘的高度值可以清楚地定义哪些是建筑物的一部分,哪些不是。通常,单元大小为 1 米即足以有效地捕捉此信息。

  从随机点建立建筑物轮廓线的高程

  由于您已有了高程图层,因此需要在随机位置进行采样以确定建筑物的高程。第一步是为各建筑物轮廓线生成一组随机采样点。可以使用创建随机点地理处理工具生成一组随机采样点,这些点受建筑物轮廓线约束并引用其唯一对象标识符。为每个建筑物轮廓线创建的点数由您自己决定。采样点越多,平均高度越精确,但处理时间越长。设置采样点间允许的最小距离时,请记住,该距离不应小于采样栅格中的单元大小。否则,最终可能需要对一些单元进行重新采样。

  

  结果为包含点组的新要素类,每组对应一个建筑物。请注意,各建筑物可能不具有在地理处理工具中指定的采样点总数。该工具在无法放置新点时将停止创建点,以便不违反允许的最小距离。

  

  可使用添加表面信息地理处理工具将高程信息(来自从激光雷达得到的第一次回波栅格高程面)作为属性添加到各个点。

  

  现在可以使用汇总统计数据地理处理工具汇总高程信息,以便为各建筑物生成单一值。汇总高程值所使用的统计方法取决于所需的结果类型。例如:

  •   MEAN 统计方法将给出建筑物的平均屋顶高度并提供最佳的可视化结果。
  •   MAXIMUM 统计方法将屋顶高度设置为最高的采样值,并且是用于通视线分析的最佳结果。
  •   MINIMUM 统计方法将屋顶高度设置为最低的采样值,并且是用于天际线分析的最佳结果。

  使用包含初始建筑物轮廓线中的对象标识符的字段作为案例分组字段,以汇总各建筑物的值。然后可以使用对象标识符将汇总表重新连接到建筑物轮廓线。

  

  在 ArcGlobe 或 ArcScene 中将轮廓线显示为建筑物与将拉伸用作 3D 符号系统一样简单。打开图层属性 对话框,首先启用拉伸图层中的要素选项。使用表达式构建器 选择拉伸所依据的属性。接下来,设置拉伸值时,确保将拉伸方法设置为将其用作要素的拉伸数值。要成功完成拉伸过程,需要添加和指定轮廓线图层的高程面(“图层属性”>“高程”选项卡)。否则,轮廓线将从 0 高程(海平面)拉伸到各建筑物的屋顶高程。

  

  确定建筑物轮廓线的高度

  由于您已具有表示建筑物轮廓线屋顶的高程值,因此接下来要计算各建筑物的高度。为此,需要使用各建筑物的地面高程。有多种不同方法可确定建筑物轮廓线的地面高程。如果您有权使用激光雷达的后处理裸露地面版本或高分辨率裸露地面数字高程模型,就可以很容易地收集各建筑物轮廓线的高程信息。使用在前一部分中讨论的相同方法为各建筑物开发采样点,并从裸露地面栅格面高程图层收集高程信息。按建筑物将这些采样值汇总为单一值,并将其重新连接到源数据。向原始数据添加一个字段,并从裸露地面高程中减去建筑物的屋顶高程。结果为各建筑物的高度值。

  或者,可能要从用于生成初始建筑物屋顶高度的第一次回波激光雷达数据获取表面高程值。使用一致的数据源会消除由于数据集间的差异导致的错误。这需要生成第二组采样点(建筑物周围的环形采样点),并进行采样以查看这些点处的地面高程。

  生成建筑物轮廓线周围的环形采样点前,应考虑如下事项:首先,采样点应距建筑物足够远,以便收集值不受建筑物的高度影响。此偏移距离应不小于从激光雷达得到的栅格高程面的单元大小。此外,应十分小心,以防止某个建筑物的采样点与邻近建筑物重叠。要创建这些采样点,请执行以下步骤:

  步骤:

  •   缓冲建筑物轮廓线,缓冲距离等于表面高程图层的栅格单元大小。
  •   缓冲建筑物轮廓线,缓冲距离等于表面高程图层的栅格单元大小的两倍。切勿使用缓冲区地理处理工具上的融合选项,因为每个轮廓线需要一个唯一面。
  •   使用擦除地理处理工具从步骤 2 的缓冲结果中擦除步骤 1 的缓冲结果。输出应为围绕各建筑物的一组环。
  •   使用在前一部分中描述的相同方法开发一组随机点。

  最终结果是为建筑物周围的各环生成的一组采样点。请注意,如果采用此方法,环可能彼此重叠,但绝不会与建筑物重叠。由于第一次缓冲,所有环距离建筑物足够远,因此源自这些环的采样点不会受建筑物屋顶高程的影响。

  

  可以利用在前一部分中描述的方法使用这些采样点来汇总各建筑物的地面高程值。但在此情况下,应仅使用MINIMUM 统计方法。这是因为第一次回波激光雷达可能具有附加的收集要素,如植物、街道设施和汽车。使用最小的收集值可提供正确标识建筑物表面高程的最佳机会。汇总地面高程值后,可以从先前收集的屋顶高程值减去该值以确定各建筑物的高度。

时间: 2024-11-04 11:09:52

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

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::Reade

《ArcGIS Engine+C#实例开发教程》第四讲 状态栏信息的添加与实现

原文:<ArcGIS Engine+C#实例开发教程>第四讲 状态栏信息的添加与实现 摘要:在上一讲中,我们完成了 MapControl 和PageLayoutControl两种视图的同步工作,本讲我们将完成状态栏信息的添加与实现.应用程序的状态栏一般用来显示程序的当前状态,当前所使用的工具. GIS应用程序一般也在状态栏显示当前光标的坐标.比例尺等信息.学习完本讲内容,您将学会状态栏编程的基本方法,并且能够在我们的程序的状态栏中添加且显示以下信息:当前所用工具信息.当前比例尺.当前坐标.  

ArcGIS教程:3D Analyst基础知识

创建3D视图 以三维形式查看数据能为您提供一个全新的认识.通过三维视图可以深入了解通过相同数据的平面地图不易察觉的内容.例如,您不必根据配置等值线来推断是否存在山谷,您能够实际看到山谷和感到谷底和谷脊的高度差异. ArcGlobe 和 ArcScene 可用于构建多图层 3D 环境,并控制如何对各图层进行符号化.渲染各图层和在 3D 空间中定位各图层.还可以控制 3D 视图的全局属性,如照明度或垂直夸大.可以通过以下方式选择要素:使用要素的属性或要素相对于其他要素的位置,或者在场景或地球中单击各

ArcGIS教程:了解连通性

创建网络数据集时,需要选择将根据源要素创建哪些边或交汇点元素.确保正确形成边和交汇点对于获得准确的网络分析结果而言非常重要. 网络数据集中的连通性基于线端点.线折点和点的几何重叠建立,并遵循设置为网络数据集属性的连通性规则. 连通性组 建立 ArcGIS Network Analyst 扩展模块中的连通性要从定义连通性组开始.每个边源只能被分配到一个连通性组中,每个交汇点源可被分配到一个或多个连通性组中.一个连通性组中可以包含任意数量的源.网络元素的连接方式取决于元素所在的连通性组.例如,对于创

Inxi:获取Linux系统和硬件信息的神器

导读 在这篇文章里,我们将看到如何使用inxi来获取这些详情信息.在论坛技术支持中,它可以作为调试工具,迅速确定用户的系统配置和硬件信息. Inxi是一个可以获取完整的系统和硬件详情信息的命令行工具,内容包括: 硬件 CPU 磁盘驱动器 Xorg 桌面环境 内核 GCC版本 进程 内存占用 和其他有用的信息 安装方法 Inxi在多数现代GNU/Linux操作系统的默认软件仓库中.所以,我们可以简单地运行下列命令安装. 在基于Debian的发行版: sudo apt-get install inx

获取INET4与INET6的信息

参考书籍: 本人封装的源码: // // IPAddressInfo.h // YXNETWORK // // http://www.cnblogs.com/YouXianMing/ // // Copyright (c) 2014年 Y.X. All rights reserved. // #import <Foundation/Foundation.h> @interface IPAddressInfo : NSObject + (NSDictionary *)net4Info; @end

ios项目开发(天气预报项目):使用正则获取 weather.com.cn网站信息

[objc] view plaincopyprint?在CODE上查看代码片派生到我的代码片 <pre code_snippet_id="346208" snippet_file_name="blog_20140515_1_2220869" name="code" class="cpp">- (NSString *)hmacsha1:(NSString *)text key:(NSString *)secret {

[C语言](二)01 获取Windows图形构件大小信息

SYSMETS.c #include <windows.h> #include "SYSMETS.H"//自定义的单元,所以用"",不是用<> //消息循环处理函数,Windows回调函数 LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); //Windows程序的入口函数 int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevIn

【工具】获取窗口与控件信息

[工具]获取窗口与控件信息 常言道,工欲善其事,必先利其器.在脚本中常见的一种操作是操作窗口或控件,在操作之前,首先必须获取目标的各种信息,这时就要用上辅助工具了.本文会介绍一些获取窗口.控件信息的常用工具,这里的先后顺序是随意安排.如果目前用的没什么问题就继续用着,如果对某些地方不满意则可试试其他.简单的截图不容易全面反映整个工具的功能和特色,使用才能获得真实体验. Active Window Info 评论:这个最初来自于 AutoIt3 且安装包中自带的工具,就无需过多介绍了.功能简陋,但