变化多端:你掉的是带标注CAD还是带地形SU?【2019-011】
Highlights
1、输出标注文字需要用到地理数据库;
2、SU插件请安装到默认路径;
3、可能需要手动添加SU插件工具条;
4、输出地形需要将DEM转为TIN;
5、建筑需要从TIN提取基准高度字段;
6、阅读原文链接中有插件和示例数据。
嗨~多磨,萝卜青菜各有所爱,大家对数据的需求真的是千差万别
【软件环境】
本文的操作基于ArcGIS 10.2.2和SketchUp6ESRI插件完成,不同版本的软件在界面和操作上可能略有差异,文中描述的步骤和配图仅供参考。
【结果示意】
先放两张图看一下成果长什么样子(图0(a)、图0(b)),以便各位同学判断本文对你的需求是否有所帮助(你们可以猜猜图0暗指何物,猜对没奖
图0(a) 建筑栅格转带标注CAD
图0(b) 建筑栅格转带地形SU
【带标注CAD】
先从简单的开始热热身吧,看过【2019-001】的同学应该已经知道如何将建筑栅格数据转为矢量面要素,这里就简单提一下。打开ArcMap,在ArcToolbox中找到【转换工具】-【由栅格转出】-【栅格转面】,建筑栅格数据作为输入栅格,字段默认Value即可(其实压根儿也没得选
第一步,把shp文件导入到地理数据库。在ArcMap界面右侧的目录中连接到存放数据的文件夹,新建一个文件地理数据库(图1),在需要导入的数据上点右键,选择导出-转出至地理数据库(图2)。选好输出位置,记得在输出要素类一栏中起个名字(图3),然后确定即可。
图1 新建文件地理数据库
图2 导出数据至地理数据库
图3 导出工具的参数设置
第二步,设置图层标注。将导入地理数据库的矢量面要素添加到ArcMap中,在其属性里找到标注选项卡(切换到该页面可能会略有卡顿
图4 标注选项卡的参数设置
第三步,将标注转换为注记。来回缩放图层,让文字大小和图形看起来比例和谐(ArcMap的默认参考比例是随当前窗口比例动态变化的,熟练的同学可以在数据框属性的常规选项卡中自己设定一个固定的参考比例),然后在图层的右键菜单中点击将标注转换为注记(图5),所有的设置都不用动,直接确定就可以了(图6)。
图5 将标注转换为注记菜单选项
图6 将标注转换为注记工具界面
第四步,导出到CAD。使用【转换工具】-【转为CAD】-【要素转CAD】工具,将矢量面要素图层和注记图层都放到输入要素中,找个合适的地方输出即可(图7)。至于结果长什么样呢,回到开头去看图0(a)吧
图7 要素转CAD的参数设置
一点补充。把shp放入地理数据库有什么用呢,诸如能存储拓扑信息啊、会自动更新几何属性字段啊之类的,都和今天的内容没什么关系,所以这次大可不必深究,等哪篇推文涉及到了再展开介绍吧(略过一时爽,一直略过一直爽
【带地形SU】
热完身开始攻坚战吧。我不知道ArcMap导出的kml文件用SketchUp导入为什么会报错(知情者欢迎留言,十分感谢
第一步,安装插件
第二步,在ArcMap中添加插件。在上面的菜单栏找到自定义-工具条-自定义(在最末尾),界面如图8所示。如果工具条已经显示有SketchUp 6 Tools,那么直接勾选就可以了;如果没有,点击从文件添加,找到C:\Program Files (x86)\ArcGIS\SketchUp6,选中FeaturesToSkp.dll文件(图9),点击打开并确定(图10),然后勾选该插件(图11)并关闭界面,然后画面上会多出来一个非常小巧的工具栏(图12)。
图8 工具条自定义界面
图9 从文件添加插件
图10 添加插件确认提示
图11 勾选插件
图12 小别致长得真东西
第三步,DEM转TIN。地理空间数据云网站可以查询和下载GDEMv2数据(免费的!),推荐有条件(可能需要梯子)的同学去USGS和NASA转转,这俩地方的公开数据更齐全。篇幅所限,这里就不展开数据下载、栅格裁剪等步骤了。使用【3D Analyst 工具】-【转换】-【由栅格转出】-【栅格转TIN】工具将DEM转为TIN,其中Z容差用于控制生成的TIN和原始DEM的偏差大小,数值越小则TIN越接近原始DEM,损失的细节也越少,这里设置为0.1(图13)(默认值是原始DEM最大值与最小值之差的十分之一)。
图13 栅格转TIN工具的参数设置
第四步,给矢量面要素添加基准高度信息。这一步是为了告诉插件从多高的位置开始拉伸模型,以便让建筑物和地形能够更好地贴合。使用【3D Analyst 工具】-【功能性表面】-【添加表面信息】工具,矢量面要素作为输入要素类,上一步生成的TIN作为输入表面,勾选Z_MIN和Z_MAX(图14),确定后会在矢量面要素的属性表中增加这两个字段,并不会额外生成新的shp文件。其中Z_MIN作为建筑物拉伸的最小基准高度(就是建筑物的底面所在高度),原来的GRIDCODE字段作为建筑物拉伸高度(就是建筑物有多高)。
图14 添加表面信息工具的参数设置
第五步(非必要步骤),计算基于最大基准高度的拉伸高度。一般来说,建筑物拉伸是基于最小基准高度的(图15),然而根据实际情况,也可能需要采用基于最大基准高度的拉伸方式(图16),要知道插件可没有ArcScene那么聪明,所以我们得自己另外准备一个拉伸高度的字段。在矢量面要素的属性表中添加字段(图17),名字随便起一个,类型为双精度(图18),使用字段计算器,公式如图19所示,其实就是用原来的拉伸高度加上最大基准高度和最小基准高度的差值,说白了还是基于最小基准高度,但多拉伸了一点儿。
图15 基于最小高度拉伸示意图
来源:ArcScene图层属性中的拉伸选项卡
图16 基于最大高度拉伸示意图
来源:ArcScene图层属性中的拉伸选项卡
图17 添加字段
图18 字段类型为双精度
图19 计算新的拉伸高度
第六步,输出带地形的SU模型。(重要!)框选要输出的矢量面要素(不选中要素的话,插件里面是不会显示图层的),点击图12中那个别致的小东西,勾选Elevate by field(基准高度),选择Z_MIN,勾选Extrude by field(拉伸高度),选择GRIDCODE(图20),切换到TIN选项卡,取消勾选Exclude from export(图21)。另外,如果想要基于最大基准高度拉伸,那么Extrude by field就选择第五步添加的那个字段,本例中为HeightMAX(图22),基准高度还是Z_MIN,不然建筑物就飞起来了
图20 要素导出的参数设定(最小基准)
图21 TIN导出的参数设定
图22 要素导出的参数设定(最大基准)
图23 不同基准高度拉伸结果对比
【后记】
虽然数据获取不易
【全文3129字,撰文耗时10h55m】