干货分享丨 数据可视化专题:地形生成及高程分析
Posted 风景园林杂志
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了干货分享丨 数据可视化专题:地形生成及高程分析相关的知识,希望对你有一定的参考价值。
在这里首先感谢各位小主的关注和爱戴,
兰亭君有礼了~
— 某日 —
兰亭君: 唉?你在干啥?好多高程点... (+﹏+)~
同学甲:我在给每个点输入z值呢,嘤嘤嘤...坑爹的甲方居然给我的现状cad总图里高程点都是平的..平的..平的..画圈圈画圈圈...
兰亭君:……(๑°⌓°๑)
从今天开始兰亭君准备同步开启一个新的专题——数据可视化专题。今天第一篇比较基础和简单,教教大家如何利用高程数据生成我们需要的地形模型和高程分析图。现在市面上已有很多相应的教程和文章,但大多授人以鱼而不教人原理。所以在强迫症病情影响下 (ー̀дー́),兰亭君准备总结了一份比较全面的教程,给各位小主一解千愁。
然后麻麻就再也不用担心我们的地形分析啦~
同学甲:什么!你怎么不早点教教我!
◆ 地形生成 及 高程分析 ◆
在建筑、景观设计过程中,小伙伴们拿到的第一手资料之一便是场地的现状测绘图纸,林林总总的奇葩问题总是困扰着设计师。首当其冲的问题当然就是地形资料的整理、建模以及设计前期的地形现状分析。然而拿到测绘图的小伙伴们总是会崩溃如斯:什么?!只有高程点怎么画等高线出来?...只有高程数字,居然高程点木有z值!!...只有等高线,怎么才能做出完美地形出来?!!...卒...~~(>_<)~~
今天兰亭君就来给大家总结一下比较全面的地形建模及分析方式。
思路概述:
Step 1:
先得到具有 z 值的高程点!
高程点! 高程点!...
重要的方式说三遍!!
Step 2:
直接生成地形模型!!
* 但不够完美或圆滑,
心急的小伙伴到此出门右拐,
赶紧回家建模。
强迫症患者继续阅读!!
Step 3:
优化地形,
把 Step 2 的模型转化为结构线均匀的曲面,
或 直接生成 uv方向上均布的高程点!!
Step 4:
生成相应的等高线 或 mesh地形,
以便进行高程分析。
01
当我们刚拿到现状cad总图的时候,
一般会遇到以下三种情况:
①具有 z 值的高程点图块;
②没有 z 值的高程点及标高;
③具有 z 值的等高线。
如何整理得出比较靠谱的高程点,
我们需要分以上三种情况进行操作。
① 具有 z 值的高程点图块:
遇到这种情况是最幸福的事情,
我们只需要得到每个圆形图块的中心点即可。
将模型整理干净,
把高程点图块及标高数字放在同一图层,
并保证其他物件隐藏或图层关闭状态。
通过 SelBlockInstance 命令选取模型中所有图块。
炸开 / Explode 图块,获得圆形曲线。
通过 选取曲线 / SelCrv 命令选取模型中所有圆,
在 Grasshopper 中拾取模型空间所有被炸开的曲线。
使用 Deconstruct Arc 运算器 获得所有圆的圆心。
选中目标图层,
bake!!
见证奇迹的时刻!!
② 没有 z 值的高程点标高:
这里最麻烦的就是所有高程点没有z值,
兰亭君曾真实见过小伙伴们在cad中
把所有点的z值属性一个一个输入标高数值...
几千个点呢 TAT
花了两天时间输入大半的小伙伴表示:
内心很崩溃 (o_ _)ノ
这里就需要借助我们强大的grasshopper
来实现数字内容转换为坐标z值并拔高高程点,
用到的运算器来自于常见的 Human 插件。
不用编程,不用编程,不用编程...
曾经的我们装着 Human
却傻傻浪费了多少青春
不知道还能干这事 ...
拾取图块并转换点的操作同 ①。
在 Grasshopper 中将拾取并转化的数值
赋予每个对应高程点的z值,
即 将高程点沿z轴移动相应的距离。
bake!!
③ 具有 z 值的等高线:
一般为已有等高线,
需要建立地形曲面模型的情况。
或者是拿到一手破碎的等高线的情况... (ー̀дー́)
建模原理为:
按距离等分等高线,
得到相应的高程点。
当然,这里并不是按距离直接等分。
而是先测量每根等高线的长度 L,
再除以等分距离 a,
得到每根曲线分段数目 x = L / a,
最终等分等高线得到高程点。
至此,我们通过三种方法分别处理了
不同情况的cad原始文件。
最终得到 step1 所需的结果:
—— 具有z值的高程点 ——
02
获取 step1中的高程点后,
我们需要建立下一步的:
地形曲面(surface) or 地形网格(mesh)。
① 直接获得地形曲面(surface):
我们可以运用嵌面 / Patch 命令。
在输入参数的时候尽量使其 uv 结构线足够密集,
才能保证生成的地形曲面更贴近先前的高程点。
但是!但是!!这么做会非常卡顿...
uv 数值设置的越大,虽然生成的面越精确,
但电脑计算的时间就越长...
如果软件崩溃兰亭君只能默默地为你祝福了。
最终通过切割 / Split 命令,
得到我们范围内需要的地形曲面。
此方法适合初学者建立简单地形模型,
但不具有太高学习价值,
建议小伙伴们继续向下阅读。
② 获得地形网格(mesh):
无论是速度还是精度会比方法 ① 靠谱很多,
也是最常用的高程点建地形的方式。
在这里我们会需要用到
Grasshopper 的 Delaunay Mesh运算器,
操作简单便捷,直接拾取高程点。
bake!!
见证奇迹的时刻
再来一张等高线建地形最终的mesh网格。
是不是很有SU沙盒的 feel~
到这里心急的小伙伴们可以回家建模啦~
但是这一步得到的模型并不甚完美,
比如:
边缘地区会有很多褶皱和拉伸夸张的三角面。
再比如:
抖抖抖抖....
所以患有强迫症的小伙伴们,
请继续阅读 (ノ*・ω・)ノ
03
重新整理地形。
目的就是把结构线混乱的曲面或者网格
整理为uv分布完美的曲面地形。
这一步我们有三种达成目标的方式:
① 布帘点 / DrapePt;
② 布帘曲面 / Drape;
③ 重建结构线并放样。
其中①②方法类似,③较为复杂。
① 通过 布帘点 / DrapePt 命令
得到分布有序的uv点阵:
在命令栏中有两种控制点密度的方式供我们选择:
通过点之间的距离来建立点阵。
通过uv数目来建立点阵。
得到如此完美的高程点阵。
最终,运用 Grasshopper 的
Surface From Points 命令,
得到我们所需的完美地形曲面。
或者运用 Mesh From Points 命令
得到完美的地形网格。
或者...
② 通过 布帘曲面 / Drape 命令,
得到结构线均布的地形曲面:
操作同布帘点,记好伦家的图标按钮
很萌很形象有木有!!~
(,,•́.•̀,,) ~ 掀起你的盖头来 ~ (,,•́.•̀,,)
顾名思义,
它是用像布帘一样的曲面盖在物体上方,
最终形成重力影响下的布帘形态。
如果用在地形重建上是再合适不过的选择。
(在这里感谢曾经鹿神的提示)
一如布帘点般的奇迹时刻。 <( ̄ˇ ̄)/
最终得到的布帘曲面
可以说是完美贴合初步地形模型的。
如果布帘重力方向歪了一点点... (ー̀дー́)
③ 重建曲面结构线并放样:
建立曲面结构线需要用到
等距断面线 / Contour 命令,
不过这次不是沿着 z 值方向画等距断面线,
而是...
话说兰亭君曾经也干过
先画平面网格再投影到曲面上的萌事~
提起来都好羞涩呢 (,,•́.•̀,,)
得到初步的等距断面线后,
只需要根据实际情况重建曲线即可。
曲线的控制点数目由具体情况而定,
是否删除原曲线则看各人需求。
最后一步,
全选,放样 / Loft。
至此,三种重建地形曲面的方法全已完毕。
麻麻再也不用担心我的地形建模与修整啦~
04
等高线的建立:
也可以通过 Grasshopper 的 Contour(ex)(Contour)命令来实现。
不过兰亭君在这里建议小伙伴们
尽量不使用 Grasshopper 的布尔运算功能。
那是会相当卡顿滴~
最终,就可以得到我们真正所求的地形等高线啦
兰亭小纪:
01 整理现状资料:
① 具有 z 值的高程点图块;
② 没有 z 值的高程点及标高值;
③ 具有 z 值的等高线。
▌ 通过一系列简单操作得到具有 z 值的高程点。
02 初步地形生成:
① 嵌面 / Patch;
② Grasshopper : Delaunay Mesh。
▌通过 01 步骤得到的高程点,
① 可以得到比较完美圆滑的曲面;
② 可以得到较为准确的mesh三角面。
* 如果建模精度要求不高,到此结束。
03 模型整理重建:
① 布帘点 / DrapePt;
② 布帘曲面 / Drape;
③ 重建结构线并放样。
▌对 02 步骤的模型进行手工优化,
得到结构线均布的完美曲面及对应 uv 点。
* 强迫症患者的救星!!
04 高程分析:
(1)生成等高线并着色;
(2)生成mesh地形并着色。
▌最终目标为 可根据高程进行着色的等高线或mesh地形。
看到这里,是不是觉得简直是神操作!
那么,怎么才能系统的学习,通往大神之路?
福利来啦!
为了快速提升我们的战斗力,迎接留学作品集提交,迎接挤破头的招聘市场,迎接各种加分竞赛,《风景园林》和专筑讲坛云集各路精英讲师,用9天时间,授课+嘉宾讲座+实地考察+作业交流,完美打造暑期工作坊,让你瞬间超越!
以上是关于干货分享丨 数据可视化专题:地形生成及高程分析的主要内容,如果未能解决你的问题,请参考以下文章