【GIS教程】ArcGIS做日照分析(附练习数据下载)

 我国对住宅日照标准的规定是:冬至日住宅底层日照不少于1小时或大寒日住宅层日照不少于2小时(通常以当地冬至日正午12时的太阳高度角作为依据)。因冬至日太阳高度角最低,照射范围最小,如果冬至日12:00建筑物底层能够接收到阳光,那么一年中其他天数就能接收到更多的太阳辐射。

        随着数字城市的建设,在大量的城市建筑数据支持下,应用GIS空间分析方法可以找出不符合建筑日照规范的建筑,为城市规划与设计提供有效的方法依据。

        小编通过12:00的日照情况来模拟该时刻的建筑物产生的阴影范围,如果在这时刻建筑物都没有被遮挡,则建筑间距满足日照要求,最后通过分析阴影与建筑物的空间叠加关系可以找出不符合日照标准的建筑物。

        我们用到的数据只有建筑物高度的矢量数据“Build”和小区数据“Community”,并且当地12:00太阳高度角为34.75197°。具体怎么求这个建筑物的日照阴影,看小编画的技术流程图啦!

图片

1.矢量转栅格

在Arcmap中处理阴影都是在栅格数据的基础上进行的,为此我们要把这个矢量数据转换成栅格数据。使用【转换工具】|【转为栅格】|【面转栅格】,【输出栅格】设置为“BuildR”。

图片

2.栅格重分类

现在要对刚才处理出来的栅格进行重分类,把旧值为“NoData”的像元值改成新值“0”,其他的不变。有的小伙伴可能不明白为什么要做这一步。在解释这个问题之前小编先说一下坡向计算的原理。

坡度计算是使用邻域分析,有多种计算方法,但是都涉及到模板,就是说计算某一个栅格的坡向,至少需要知道X轴和Y轴4个方向相邻像元的高程值。那么这里的建筑物边缘在后面的操作中也要计算坡向,但是边缘外面的值是“NoData”,这样无法计算建筑物的边缘,所以为了后续的坡向计算需要将“NoData”的像元值设置为0。

选择【Spatial Analyst 工具】|【重分类】|【重分类】工具,【输入栅格】选择“BuildR”,【值字段】选择“Value”,【输出栅格】设置为“reclass1”,如下图所示:

图片

图片

3.计算坡向

选择【Spatial Analyst工具】|【表面分析】|【坡向】工具,【输入栅格】选择“reclass1”,【输出栅格】设置为“aspect”,根据需要,设置其他参数,点击【确定】,生成坡向数据“aspect”,如下图所示:

图片

可以发现坡向都是在建筑物边缘,因为只有在边缘才有高度落差,才能形成坡向,其他同一水平面高度无法形成坡向。

4.提取建筑物的背光面轮廓

本次计算在12:00时刻太阳方位角在180°时建筑物的背光面轮廓,此时建筑物阴影应该是在0°—90°和270°—360°。

打开【Spatial Analyst 工具】|【地图代数】|【栅格计算器】,输入一个判断语句:

(("Aspect2">=0)&("Aspect2"<=90))|(("Aspect2">=270)&("Aspect2"<=360))

得到建筑物背光面轮廓“back12”,图中蓝色为轮廓,值为1。

图片

5.提取建筑物背光面的高度数据

由于栅格数据只能表示一种属性,而后面山体阴影分析需要的是高程数据,为此我们需要计算背光面的高度。已知前面的数据“reclass1”是表示高度的,而“back12”中背光面像元值为1,因此我们只要将两个相同位置的像元相乘即可的得到背光面像元的高度值。

打开【Spatial Analyst 工具】|【地图代数】|【栅格计算器】,输入:“reclass1”*“back12”,设置【输出栅格】为“DEM12”,这时候的背光面轮廓都有了高度属性。

图片

6.计算建筑物的阴影

我们要根据当地时间12:00太阳的方位角和高度角,以及背光面的高度计算建筑物的阴影。

打开【Spatial Analyst Tools】|【表面分析】|【山体阴影】工具,【输入栅格】选择“DEM12”,方位角:180(北半球当地时间12:00太阳方位角都是180°啦),高度:34.75197,选中【模拟阴影】,如果不选中的话就没有阴影出来,只有物体本身的阴阳面出现,【输出栅格】设置为“Shade12”,如下图所示:

图片

我们在结果图层的基础上叠加上建筑物的蓝色轮廓,我们可以发现有些建筑物轮廓里面有黑色的阴影,可以肯定该建筑物底层在12:00一定是无法接收到太阳照射的,不满足日照规范。

图片

在这里有的小伙伴就会想,为什么我不可以直接在“reclass1”这个建筑物高度数据上面做【山体阴影】?小编曾经也有这个疑惑,于是乎照着操作了一遍,得到的结果如下图所示:

图片

有什么不一样吗?眼尖的小伙伴一眼就识破。绝大多数的建筑物没有被阴影遮挡,这个是很正常的对吧?因为一部分的建筑物阴影会被后面楼层的向光面覆盖掉,而我们看到的图像是上帝视角,所以就觉得阴影缺失了一部分,只有极少部分由于建筑物太高,产生的阴影才可能会覆盖到后面建筑物的楼顶。

如下图所示:

图片

(小部分阴影会覆盖到其他建筑物屋顶)

图片

(大部分阴影被建筑物向光面遮挡)

由于图像显示的是上帝视角,垂直往下看的,这样看到的阴影没有覆盖住其他建筑物,就不好判断该建筑物是否被其他建筑物的阴影覆盖,是否符合日照标准。

由于阴影都是由建筑物的背光面遮挡太阳光线产生的,因此只要我们使用背光面来创建阴影即可,这样做有什么作用吗?有!这样背光面产生的阴影就不会因为有向光面而被残忍覆盖了,阴影就可以直接覆盖到建筑物的底层,叠加上建筑物就可以很容易判断其是否满足日照标准啦,如下图所示:

图片

7.判断阴影和建筑物的覆盖关系

此时我们需要将阴影栅格转换成矢量格式,在“Shade12”中,像元值为0的就是阴影,所以我们在属性表里面选中值为0的栅格,使用【转换工具】|【由栅格转出】|【栅格转面】,【输入数据】设置为“Shade12”,【字段】选择“Value”,选中简化面,输出文件名为“Mshade”,结果图层如下所示:

图片

接下来我们要查询不符合日照标准的建筑物了。选择菜单栏里面的选择选项卡,在下拉选项卡中点击【按位置选择】工具,选择方法设置为“从以下图层中选择要素”,目标图层勾选为建筑物矢量数据“Build”,源图层选择“Mshade”,空间选择方法为“目标图层要素的质心在源图层要素内”,为什么选择这个呢?因为根据这两个图层的空间关系来看,建筑物矢量数据都和它的阴影相交。

有的小伙伴又会问,为什么都相交?不应该是阴影和建筑物边界相邻吗?我第一感觉也是这样的,但是我看到建筑物的栅格数据“BuildR”时,发现矢量边界线一部分和建筑物边界外面的像元相交了,这说明阴影计算的结果阴影栅格中一定会有和建筑物边界线相交的像元,如下图所示:

图片

(黄色为建筑物栅格,蓝色线是建筑物矢量边框)

图片

(黑色为阴影栅格,蓝色线是建筑物矢量边框)

综上所述,只能选择建筑物的质心是否在阴影上面来判断其是否是不符合日照标准的建筑物咯,最后点击确定。

这时候我们可以看到“Build”中有一部分建筑物高亮显示,我们把选中的建筑物右键导出来,然后叠加到建筑物数据“Build”和小区上面进行符号化,最终结果如下图所示:

图片

如果有小伙伴准备买房的哈,对采光条件比较有要求的,可以自己做一个这样的日照分析,拿着这个图去挑房绝对不会吃亏哦!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/314069.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

kubernetes部署控制器Deployment

一、概念 在学习rc和rs控制器资源时&#xff0c;这两个资源都是控制pod的副本数量的&#xff0c;但是&#xff0c;他们两个有个缺点&#xff0c;就是在部署新版本pod或者回滚代码的时候&#xff0c;需要先apply资源清单&#xff0c;然后再删除现有pod&#xff0c;通过资源控制&…

[Flutter3] 记录Dio的简单封装(一)

文章目录 效果使用ResponseEntity类DioManager封装_onResponse / _onDioException 的设计Response的处理catch处理 效果 请求成功/失败/异常的日志输出效果 成功: 失败:500 失败:404 网络异常: 使用 举个使用的例子, 在调用 DioManager的时候, 直接通过返回值的状态, 来…

森林消防隔膜泵的应用与前景——恒峰智慧科技

随着全球气候变暖&#xff0c;森林火灾频发&#xff0c;给生态环境和人类安全带来严重威胁。为有效应对这一挑战&#xff0c;森林消防领域不断引入新技术、新装备。其中&#xff0c;隔膜泵作为一种高效、可靠的消防设备&#xff0c;正逐渐受到广泛关注。本文将探讨森林消防隔膜…

Python Flask Web框架快速入门

Flask 入门Demo Flask 开发环境搭建&#xff0c;执行如下指令&#xff1a; pip install flask # 第一节: Flask 快速入门from flask import Flask app Flask(__name__)app.route(/flask) def hello_flask():return Hello Flaskapp.run() 核心代码剖析&#xff1a; 从 fla…

五种主流数据库:集合运算

关系型数据库中的表与集合理论中的集合类似&#xff0c;表是由行&#xff08;记录&#xff09;组成的集合。因此&#xff0c;SQL 支持基于数据行的各种集合运算&#xff0c;包括并集运算&#xff08;Union&#xff09;、交集运算&#xff08;Intersect&#xff09;和差集运算&a…

springcloud Ribbon的详解

1、Ribbon是什么 Ribbon是Netflix发布的开源项目&#xff0c;Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端负载均衡的框架。 2、Ribbon能干什么 LB负载均衡(Load Balance)是什么&#xff1f;简单的说就是将用户的请求平摊的分配到多个服务上&#xff0c;从而达…

C++:const成员和取地址操作符

目录 一、const成员 二、取地址及const取地址操作符重载 一、const成员 将const修饰的“成员函数”称之为const成员函数&#xff0c;const修饰类成员函数&#xff0c;实际修饰该成员函数 隐含的this指针&#xff0c;表明在该成员函数中不能对类的任何成员进行修改。 注&…

ESLlint重大更新后,使用旧版ESLint搭配Prettier的配置方式

概要 就在前几天&#xff0c;ESLint迎来了一次重大更新&#xff0c;9.0.0版本&#xff0c;根据官方文档介绍&#xff0c;使用新版的先决条件是Node.js版本必须是18.18.0、20.9.0&#xff0c;或者是>21.1.0的版本&#xff0c;新版ESLint将不再直接支持以下旧版配置(非扁平化…

【CSS】使用 scroll snap 实现页面的垂直大屏滚动

CSS 属性 scroll-snap-type 设置了在有滚动容器的情形下吸附至吸附点的严格程度。 scroll-snap-type 使用 scroll snap 也可以用于垂直滚动&#xff0c;全屏展示就是一个很好的例子: <main><section class"section section-1"></section><sect…

pytest使用 pytest-rerunfailures 插件实现失败用例重跑功能

使用 pytest 进行测试时&#xff0c;你可以通过安装并配置 pytest-rerunfailures 插件来实现失败用例重跑功能。以下是一个示例说明&#xff1a; 假设你有一个测试文件 test_example.py 包含如下测试用例&#xff1a; import pytestpytest.mark.parametrize("num",…

Idea:通义千问插件

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 一、通义千问大模型 二、程序编写助手 三、Idea安装通义千问插件 总结 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、通义千问大模型…

python 中使用 ESP8266 实现语音识别(或热词检测)

介绍 我的大部分家庭自动化都是通过对网络中的设备执行 HTTP 请求来控制的。 (例如:开灯、打开收音机、控制加热系统...... 这可以使用ESP8266轻松完成。我有一个控制器和一个触摸传感器,当我在床上时用它来控制灯光和音乐。 像 Amazon Echo 或 Google Homepod 一样添加语…

基于harris角点和RANSAC算法的图像拼接matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 MATLAB2022a 3.部分核心程序 ....................................................................... I1_harris fu…

某翻译平台翻译接口逆向之webpack学习

逆向网址 aHR0cHM6Ly9mYW55aS55b3VkYW8uY29tLw 逆向链接 aHR0cHM6Ly9mYW55aS55b3VkYW8uY29tLyMv 逆向接口 aHR0cHM6Ly9kaWN0LnlvdWRhby5jb20vd2VidHJhbnNsYXRl 逆向过程 请求方式 POST 逆向参数 sign c168e4cb76169e90f82d28118dbd24d2 接口请求结果解密 过程分析 根据XHR…

计算机网络—— book

文章目录 一、概述1.1互联网的核心部分1&#xff0e;电路交换的主要特点2&#xff0e;分组交换的主要特点 1.2.计算机网络的性能1&#xff0e;速率2&#xff0e;带宽3&#xff0e;吞吐量4&#xff0e;时延5&#xff0e;利用率 1.3.计算机网络体系结构协议与划分层次具有五层协议…

用爬虫玩转石墨文档

目录 前言 一、什么是爬虫 二、爬虫原理 三、使用Python实现爬虫 1.安装Python库 2.爬取石墨文档内容 3.解析HTML内容 四、实际应用案例 1.批量下载附件 2.统计文档字数 3.自动化更新文档 总结 前言 在当今信息化时代&#xff0c;文档协作平台早已成为我们日常工作…

H5点击复制功能 兼容安卓、IOS

效果图 HTML代码 <div>链接&#xff1a;<span style"color: #FF8A21" click"CopyUrl" id"copyId"> https://blog.csdn.net/qq_51463650?spm1000.2115.3001.5343</span> </div>复制方法 const CopyUrl () > {let …

QT跨平台读写Excel

QT跨平台读写Excel 背景Excel工具CMakeLists.txt工程目录 背景 开发框架QT&#xff0c;makefile构建工具CMake&#xff0c;编译器MinGW Excel工具 考虑跨平台则不能使用针对微软COM组件的QAxObject来读写Excel&#xff0c;因此使用开源QtXlsx。 这里是将QXlsx当做源码嵌入使…

如何快速学习盲打键盘的指法

学习盲打键盘的指法需要一定的时间和练习&#xff0c;但是以下几个方法可以帮助你加快学习的速度&#xff1a; 掌握正确的手位&#xff1a;了解标准的键盘布局以及手指应该放置的位置是学习盲打的第一步。在QWERTY键盘上&#xff0c;你的左手应该放在ASDF键上&#xff0c;右手应…

Git--基础学习--面向企业--持续更新

一、基础学习 1.1基本命令 //查询基础信息 git config --global --list //选取合适位置创建 mkdir 文件名 //创建文件夹 //全局配置 git config --global user.email "****e***i" git config --global user.name "*** K****"//--------------------进入…