(长期更新)《零基础入门 ArcGIS(ArcScene) 》实验七----城市三维建模与分析(超超超详细!!!)
城市三维建模与分析
三维城市模型已经成为一种非常普遍的地理空间数据资源,成为城市的必需品,对城市能化管理至关重要。语义信息丰富的三维城市模型可以有效实现不同领域数据与IS相信息的高层次集成及互操作,从而在城市规划、环境模拟、应急响应和辅助决策等众多领域公挥作用、利用城市的三维景观模型进行城市基础设施、规划等方面的应用分析,可以直接指导和服务于城市的各方面规划和建设,最终为城市基础设施布局更加合理、人居环境更加美好经济社会更好更快发展而服务。
目录
7.1 实验内容及目的
7.1.1 实验内容
7.1.2 实验目的
7.2解决方案
7.3 操作流程
7.3.1 环境设置
7.3.2 三维显示
(1)计算字段:
(2)拉伸显示:
(3)设置点符号:
7.3.3 计算 DEM
(1)创建 TIN:
(2)TIN转栅格:
(3)设置栅格值:
7.3.4 根据条件进行区域计算
(1)进行视域分析:
(2)进行栅格转面:
(3)筛选可视区域:
(3)筛选可视区域:
(4)得到可视区域:
(5)生成天际线:
(6)天际线转面:
(7)计算理想可视非建筑物区域:
(8)进行区域融合:
(9)计算可视道路长度:
7.3.5 绘制天际线
(1)二维视点转为三维点数据:
(2)计算天际线数据:
(3)绘制天际线图:
7.3.6 计算建筑面积
(1)计算天际线有效边界:
(2)找出最高最低建筑:
(3)计算最高最低建筑面积之和:
7.4实验心得
7.1 实验内容及目的
7.1.1 实验内容
本实验通过城区三维建模,初步认识城市三维建模、三维空间形态分析方法。利用某城区二维平面图,通过设置建筑物高度属性值构建城市三维模型,在此基础上利用ArcScene中的视域工具进行三维空间形态分析与统计计算,包括不考虑视野极限的可视区域、视野范围内非建筑物区域、视野范围内可见道路的长度、天际线(图)、可视建筑物统计。
(1)假设楼层均高为3m,请按照城市建筑物的楼层数字段(Floor),计算建筑物总体高度字段(Height),并以 Height 字段对 building数据进行三维拉伸显示。同时,按照观景点高度字段(Height),对观景点进行三维显示。
(2)根据地平面海拔和建筑物高度属性,构建该城市的DEM数据。
(3)根据游客的视野范围(视力极限距离为500m),分别计算不考虑视野极限的可视区域、视野范围内非建筑面积和视野范围内可见道路的长度。
(4)基于视点提取天际线和天际线图。
(5)天际线的有效边界由建筑物顶部与天空交接的边界线,计算其总长度,计算边界对应的建筑中最高和最低建筑的总面积之和。
7.1.2 实验目的
(1)掌握利用计算器进行赋值,对平面图形进行三维显示的方法
(2)熟悉构建TIN,TIN转换成 DEM 的操作过程。
(3)掌握ArcScene中的视域工具和栅格与面数据转换的方法;掌握分析工具相交、擦除交集制表等的使用。
(4)掌握二维点数据转为三维点数据的常用方法;掌握天际线的内涵并绘制天际线和转为天际线图的方法。
(5)掌握基于属性数据中的字段进行汇总统计。
7.2解决方案
对building数据属性中增加字段,进行三维拉伸显示。根据字段Height,将二维视点转为三维点数据,计算该视点位置处的天际线数据,以视点为中心,用极坐标系绘制出天际线图。计算该城市的DEM数据,并绘制专题图。根据游客视线距离初步计算不考虑视野极限的可视区、视野范围内非建筑面积和视野范围内可见道路的长度。计算天际线的有效边界的总长度,找出符合要求的建筑物,计算最高最低建筑的总建筑面积。
城市空间三维研究的逻辑过程主要包括以下内容:
(1)数据准备。确定需要哪些数据作为输入,即building和point 数据。
区域计算
(2)属性处理。修改字段和三维拉伸显示。
(3)计算该城市的DEM数据。构建TIN,利用TIN转栅格I具得到 DEM 数据。
(4)根据条件进行区域计算。计算出不考虑视野极限的可视区域、视野范围内非建筑面积和视野范围内可见道路的长度。
(5)绘制天际线。计算天际线数据,绘制天际线图。
(6)建筑物处理。找出天际线有效边界、最高和最低建筑,计算楼层面积之和。
7.3 操作流程
7.3.1 环境设置
在ArcScene 主菜单中点击【地理处理】--【环境设置】。设置工作空间、处理范围等,像元大小设为1,环境设置如下图所示:


7.3.2 三维显示
对building属性数据增加字段“Height”,计算建筑物总体高度字段“Height”,并以“Height”字段对 building数据进行三维拉伸显示。双击point点图层符号,在弹出的对话框中点击【符号编辑】进行设置,完成点的拉伸。
(1)计算字段:
右键点击“building"图层,点击【打开属性表】-【选表项】→【添加字段】,弹出“添加字段”对话框,在“名称”文本框中填入“Height”,点击【确定】。

右键点击“Height”字段,点击【字段计算器】,利用字段计算器对“Height”字段进行赋值,点击【确定】。
(2)拉伸显示:
右键点击“building”图层,打开“图层属性”,选择“拉伸”选项卡,填写高度函数,进行拉伸显示。

拉伸结果如下图所示。

(3)设置点符号:
双击 point点符号,弹出“符号选择器”对话框,点击【符号编辑】,弹出“符号属性编辑
器”,“类型”设置为“3D简单标记符号”,选择“3D放置”选项卡,把Z坐标的偏移设为“195”如下图所示



点击【确定】。图形变化如下图所示。

7.3.3 计算 DEM
由于DEM图像为栅格图像,而原始数据为矢量图像,首先基于building数据构建TIN.基于合理采样转成栅格数据,然后利用栅格计算器获取满足一定条件的DEM。
(1)创建 TIN:
点击 ArcToolbox中的【3D Analyst】--【数据管理】--【TIN】-【创建 TIN】“输出TIN”选择一个合适的路径,“输人要素类”选择“building”。

输出结果如下图所示:

(2)TIN转栅格:
点击ArcToolbox中的【3DAnalyst】-【转换】-【由TIN转出】-【TIN转栅格】。“采样距离(可选)”设置为“CELLSIZE1”。

(3)设置栅格值:
点击ArcToolbox中的【空间分析】--【地图代数】-【栅格计算器】,栅格
计算器设置如下图所示:

点击【确定】。
颜色很刺眼的话可以改成温和点的颜色

7.3.4 根据条件进行区域计算
首先将完成的DEM数据利用视域工具求出不限视野范围的可视区域并转为矢量面要素,再筛选出可见区域,之后擦除建筑物,即可得到非建筑物区域。然后利用 building、poin原始数据绘制天际线,并进行矢量化操作。最后将两部分区域叠加,即可得到在视野范围内能看到的、非建筑物区域的面积,采用交集制表将天际线转成的面与道路取交集得到一个表。
(1)进行视域分析:
点击ArcToolbox中的【3DAnalyst】-【可见性】--【视域】,视域设置如下图所示:

点击【确定】。

(2)进行栅格转面:
点击ArcToolbox中的【转换工具】--【出栅格转出】一【栅格转面】格转面设置如下图所示:

点击【确定】。输出结果如下图所示。

(3)筛选可视区域:
点击ArcToolbox中的【分析工具】【提取分析】--【筛选】,点击“表达式(可选)”文本框右边的圆按钮,弹出“査询构建器”对话框,选择“GRIDCODE”,点击【获取唯一值】,选择“1”.

点击【确定】,关闭对话框,如下图所示。
(3)筛选可视区域:
点击AreToolbox中的【分析工具】【提取分析】-【筛选】,点击“表达式(可选)”文本框右边的圆按钮,弹出“查询构建器”对话框,选择“GRIDCODE”,点击【获取唯一值】,选择“1”,点击【确定】

(4)得到可视区域:
点击 AreToolbox中的【分析工具】->【叠加分析】-【相交】,“输入要素”选择可视区域和建筑物数据,如下图所示:

结果如图:

点击 ArcToolbox中的【分析工具】【叠加分析】-【擦除】,“输人要素”为可视区域,“擦除要素”为可视建筑物,点击【确定】。


(5)生成天际线:
点击ArcToolbox中的【3DAnalyst】--【可见性】-【天际线】,在弹出的对话框中进行如下图所示的设置。

产生如下图所示结果

(6)天际线转面:
点击ArcToolbox中的【数据管理工具】--【要素】-【要素转面】,在弹出的对话框中进行如下图所示设置


(7)计算理想可视非建筑物区域:
点击ArcToolbox中的【分析工具】-【叠加分析】->【相交】输入非建筑物和天际线数据,即可得到在视野范围内能够看到的非建筑物区域,如下图所示。


(8)进行区域融合:
点击ArcScene的【地理处理】-【融合】,弹出“融合”对话框,融合设置如下图所示:

点击【确定】。

右键点击生成的图层,打开属性表,新建面积字段,点击计算几何,计算该可视区域的面积,配置如下:

面积计算结果:

(9)计算可视道路长度:
点击ArcToolbox中的【分析工具】-【统计分析】-【交集制表】“区域字段”设置成“Shape_Area”,如下图所示。

在Polygon_Skyline中添加Shape_Area字段

并计算:

右键点击生成的图层,打开属性表,查看数值,如下图所示:

7.3.5 绘制天际线
当行人在城市街道上行走时,其视线会受到周边建筑的遮挡,在建筑顶部形成与天空相接的轮廓边界,即天际线,。天际线代表了视线所能看到地物的最高边界。
根据Height字段,将二维视点转为三维点数据,计算该视点位置处的天际线数据,并以该视点为中心,用极坐标系绘制出天际线图。
(1)二维视点转为三维点数据:
点击【3DAnalyst】-【3D要素】->【依据属性实现要素转D],实现三维要素的转换,设置如下图所示。

(2)计算天际线数据:
点击ArcToolbox中的【3DAnalyst】-【可见性】-【天际线】,“输人图7.32 数据处理流程观察点要素”设置为“3Dpoint”,“输人要素(可选)”选择“building”数据,方位角增量设为2’。


点击【确定】,结果如下图所示。

(3)绘制天际线图:
点击ArcToolbox中的【3D Analyst】--【可见性】【天际线图】。“输人观察点要素”选择“point”数据,“输入线要素”选择天际线数据“3Dpoint_Skyline”。

输出结果如下图所示:

7.3.6 计算建筑面积
利用天际线有效边界的总长度,找出符合要求的建筑物,计算最高和最低建筑的总建筑面积。
(1)计算天际线有效边界:
点击ArcToolbox中的【分析工具】-【叠加分析】-【相交】。“输入要素”选择建筑物数据和天际线数据:

输出结果如下图所示:

右键点击实际天际线图层,打开属性表,选中“Shape_Leng"字段,右键点击该字段,选择【统计】,统计数据结果如下图所示。

(2)找出最高最低建筑:
在ArcScene主菜单中点击【选择】--【按位置选择】。“目标图层”选择“building”数据,“源图层”选择实际天际线数据“valid_Skyline”

输出结果如下图所示。

右键点击“building”图层,选择【数据】-【导出数据】,设置好保存路径,如下图所示

右键点击导出数据图层,打开属性表,选中Height字段,右键点击该字、选择【统计】统计数据结果下图所示,可以看到最大值为75,最小值为0.

(3)计算最高最低建筑面积之和:
点击ArcToolbox中【分析工具】-【统计分析】-【汇总统计数据】,对面积字段进行求和统计,以Floor字段进行案例分组(图7.46).结果如下表所示。最高建筑物共65层,每层面积约为2730.69m’,总面积约为177494.85m。最低建筑物仅有1层,每层面积平均约为2308.48m,共有12栋,总面积约为27701.76m2

7.4实验心得
首先,做这个实验用的是ArcScene,而不是ArcMap,不然后面的操作做不了,我也是用ArcMap用了之和才发现的。然后,这个实验我做着的话感觉是少了点数据,一些字段缺失了,我就认为这些字段是面积,所以就自己加了字段并且计算了。所以我这做法仅供参考,大家看看就行。
实验七结束了,小专栏《零基础入门 ArcGIS(ArcScene) 》也结束了,详细做完以上七个实验,您对arcgis的操作已经非常流畅了,后面我也许还会更新其他关于arcgis的内容,大家敬请期待。
感谢您的三连!!!
相关文章:
(长期更新)《零基础入门 ArcGIS(ArcScene) 》实验七----城市三维建模与分析(超超超详细!!!)
城市三维建模与分析 三维城市模型已经成为一种非常普遍的地理空间数据资源,成为城市的必需品,对城市能化管理至关重要。语义信息丰富的三维城市模型可以有效实现不同领域数据与IS相信息的高层次集成及互操作,从而在城市规划、环境模拟、应急响应和辅助决策等众多领域公挥作用、…...
war包 | Docker部署flowable-ui
文章目录 引言I war包部署flowable-ui下载war包配置Tomcat访问 flowable-uiII Docker启动flowable-ui并修改配置Docker启动flowable-ui修改配置访问Flowable UI界面。III 知识扩展加速源docker run -i -t -d 参数引言 Flowable 支持 BPMN 2.0 行业标准,同时提供了一些 Flowab…...
Java数据结构方面的面试试题以及答案解析
Java数据结构是在计算机中存储和组织数据的方式,用于高效地处理和管理数据。 以下是一些常见的Java数据结构: 数组(Array):一种线性数据结构,允许通过索引快速访问元素。它存储固定大小的相同类型的元素集…...
Qt 5.14.2 学习记录 —— 십구 事件
文章目录 1、事件的概念2、处理事件3、鼠标事件1、鼠标单击和双击2、鼠标移动3、鼠标滚轮滚动 4、键盘事件5、定时器事件6、窗口移动和大小改变事件 1、事件的概念 用户进行操作时会产生事件,事件可以关联处理函数。Qt封装了操作系统的事件机制,然后进一…...
国产编辑器EverEdit - 命令窗口应用详解
1 命令窗口应用详解 1.1 应用场景 有时需要在EverEdit中执行一些命令行工具,甚至想把当前文档做为参数,传递给命令进行一些文本分析,比如:一些常用的文本处理工具,gawk.exe等。 1.2 使用方法 命令窗口的使用在官方手…...
iOS开发设计模式篇第二篇MVVM设计模式
目录 一、什么是MVVM 二、MVVM 的主要特点 三、MVVM 的架构图 四、MVVM 与其他模式的对比 五、如何在iOS中实现MVVM 1.Model 2.ViewModel 3.View (ViewController) 4.双向绑定 5.文中完整的代码地址 六、MVVM 的优缺点 1.优点 2.缺点 七、MVVM 的应用场景 八、结…...
【深度学习】3.损失函数的作用
损失函数的作用 假设把猫这张图片分成四个像素点,分别为:56、231、24、2(实际应该是三维的,因为还有颜色通道的维度,这里简化成二维)。 像素点拿到以后,进行三分类,粉红色为第一组W…...
深入MapReduce——计算模型设计
引入 通过引入篇,我们可以总结,MapReduce针对海量数据计算核心痛点的解法如下: 统一编程模型,降低用户使用门槛分而治之,利用了并行处理提高计算效率移动计算,减少硬件瓶颈的限制 优秀的设计,…...
小黑日常积累:学习了CROSS APPLY字段,将sqlserver中字段通过分隔符拆分并统计
问题 字段中的元素是通过分隔符进行拼接的,我需要统计元素的个数,例如: 代码 样例表创建 -- 创建样例表 create table #Tmp_Table (ID int IDENTITY (1,1) not null,Strs nvarchar(50),primary key (ID) ); insert into #Tmp_Table (Strs) VALUES…...
WebSocket知识点笔记(一)
WebSocket WebSocket是一种在单个TCP连接上进行全双工通信的协议。它使得客户端和服务端之间的消息传递更加高效,允许服务器主动向客户端推送数据。 一.WebSocket全双工通信 WebSocket提供了真正的双向通信,客户端和服务端可以同时发送和接收消息 …...
安宝特方案 | AR在供应链管理中的应用:提升效率与透明度
随着全球化的不断深入和市场需求的快速变化,企业对供应链管理的要求也日益提高。如何在复杂的供应链环境中提升效率、降低成本,并确保信息的透明度,成为了各大行业亟待解决的问题。而增强现实(AR)技术,特别…...
基于Springboot + vue实现的美发门店管理系统
💖学习知识需费心, 📕整理归纳更费神。 🎉源码免费人人喜, 🔥码农福利等你领! 💖常来我家多看看, 📕网址:扣棣编程, 🎉感谢支持常陪伴, 🔥点赞关注别忘记! 💖山高路远坑又深, 📕大军纵横任驰奔, 🎉谁敢横刀立马行? 🔥唯有点赞+关注成! �…...
springboot中配置logback-spring.xml
一、在src/main/resources目录下,也就是在classpath路径下创建logback-spring.xml 注:springboot框架自动配置,如果更换名称,可在配置文件指定该文件即可 <?xml version"1.0" encoding"UTF-8"?> <…...
从63 秒到 0.482 秒:深入剖析 MySQL 分页查询优化
在日常开发中,数据库查询性能问题就像潜伏的“地雷”,总在高并发或数据量庞大的场景下引爆。尤其是当你运行一条简单的分页查询时,结果却让用户苦苦等待,甚至拖垮了系统。这种情况你是否遇到过? 你可能会想࿱…...
细说机器学习算法之过拟合与欠拟合
系列文章目录 第一章:Pyhton机器学习算法之KNN 第二章:Pyhton机器学习算法之K—Means 第三章:Pyhton机器学习算法之随机森林 第四章:Pyhton机器学习算法之线性回归 第五章:Pyhton机器学习算法之有监督学习与无监督…...
C/C++ 虚函数
虚函数的定义 虚函数是指在基类内部声明的成员函数前面添加关键字 virtual 指明的函数虚函数存在的意义是为了实现多态,让派生类能够重写(override)其基类的成员函数派生类重写基类的虚函数时,可以添加 virtual 关键字,但不是必须这么做虚函…...
【3GPP】【5G】注销流程(Deregistration procedures)
1. 欢迎大家订阅和关注,精讲3GPP通信协议(2G/3G/4G/5G/IMS)知识点,专栏会持续更新中.....敬请期待! 目录 3.1.2 Deregistration procedures 3.1.2.1 UE-initiated Deregistration 3.1.2.2 Network-initiated Deregistration 3.1.2 Deregistration procedures 注销流程…...
【小游戏篇】三子棋游戏
硬控我一上午,小编还是太菜了,大家可以自行升级电脑难度,也可以升级游戏到五子棋 1.game.h #pragma once #include<stdio.h> #include<stdlib.h> #include<time.h> #define ROW 3 #define COL 3//初始化棋盘 void InitBoa…...
7-Zip Mark-of-the-Web绕过漏洞复现(CVE-2025-0411)
免责申明: 本文所描述的漏洞及其复现步骤仅供网络安全研究与教育目的使用。任何人不得将本文提供的信息用于非法目的或未经授权的系统测试。作者不对任何由于使用本文信息而导致的直接或间接损害承担责任。如涉及侵权,请及时与我们联系,我们将尽快处理并删除相关内容。 0x0…...
2025年国产化推进.NET跨平台应用框架推荐
2025年国产化推进.NET跨平台应用框架推荐 1. .NET MAUI NET MAUI是一个开源、免费(MIT License)的跨平台框架(支持Android、iOS、macOS 和 Windows多平台运行),是 Xamarin.Forms 的进化版,从移动场景扩展到…...
【Axure高保真原型】引导弹窗
今天和大家中分享引导弹窗的原型模板,载入页面后,会显示引导弹窗,适用于引导用户使用页面,点击完成后,会显示下一个引导弹窗,直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...
使用VSCode开发Django指南
使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架,专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用,其中包含三个使用通用基本模板的页面。在此…...
以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:
一、属性动画概述NETX 作用:实现组件通用属性的渐变过渡效果,提升用户体验。支持属性:width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项: 布局类属性(如宽高)变化时&#…...
centos 7 部署awstats 网站访问检测
一、基础环境准备(两种安装方式都要做) bash # 安装必要依赖 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 设置 Apache 开机自启 systemctl start httpd # 启动 Apache二、安装 AWStats࿰…...
《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)
CSI-2 协议详细解析 (一) 1. CSI-2层定义(CSI-2 Layer Definitions) 分层结构 :CSI-2协议分为6层: 物理层(PHY Layer) : 定义电气特性、时钟机制和传输介质(导线&#…...
java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别
UnsatisfiedLinkError 在对接硬件设备中,我们会遇到使用 java 调用 dll文件 的情况,此时大概率出现UnsatisfiedLinkError链接错误,原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用,结果 dll 未实现 JNI 协…...
成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战
在现代战争中,电磁频谱已成为继陆、海、空、天之后的 “第五维战场”,雷达作为电磁频谱领域的关键装备,其干扰与抗干扰能力的较量,直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器,凭借数字射…...
什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南
文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果(yakit方式)
本期内容并不是很难,相信大家会学的很愉快,当然对于有后端基础的朋友来说,本期内容更加容易了解,当然没有基础的也别担心,本期内容会详细解释有关内容 本期用到的软件:yakit(因为经过之前好多期…...
初学 pytest 记录
安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…...

